Совместное использование «С-Терра L2» и VRRP в топологии «звезда»

Скачать в формате PDF

 

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО

«С-Терра СиЭсПи» и Продуктов третьих производителей.

ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.

Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.

Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах

только после тестовой и/или опытной эксплуатации.

 

Описание стенда

Сценарий иллюстрирует построение защищенного соединения между тремя сегментами одной сети SN1 – 192.168.1.0/24, разрыв между которыми защищается шлюзами безопасности, объединенными в 3 кластера. Устройства IPHost1, IPHost2 и IPHost3 могут общаться между собой по защищенному каналу (VPN). Отказоустойчивость кластеров реализована с помощью протокола VRRP.

В рамках данного сценария для аутентификации партнеры будут использовать сертификаты. В качестве криптопровайдера будет использована криптографическая библиотека, разработанная компанией «С-Терра СиЭсПи». Шлюзы безопасности – «С-Терра Шлюз 4.2» с программным модулем «С-Терра L2».

Параметры защищенного соединения:

Параметры протокола IKE:

·         Аутентификация при помощи цифровых сертификатов, алгоритм подписи – ГОСТ Р 34.10-2012;

·         Алгоритм шифрования – ГОСТ 28147-89 (ключ 256 бит);

·         Алгоритм вычисления хеш-функции – ГОСТ Р 34.11-2012 ТК26 (ключ 256 бит);

·         Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) – VKO_GOSTR3410_2012_256 (ключ 256 бит).

Параметры протокола ESP:

·         Комбинированный алгоритм шифрования и имитозащиты (контроль целостности) – ESP_GOST-4M-IMIT (ключ 256 бит).

Схема стенда (Рисунок 1):

Рисунок 1

Логика работы отказоустойчивого решения

Шлюзы GW1 и GW2 будут объединены в кластер № 1, GW3 и GW4 – в кластер № 2, GW5 и GW6 – в кластер №3. При использовании протокола VRRP шлюзы каждого кластера имеют разделяемый виртуальный адрес (Virtual IP, см. Рисунок 1) в публичном сегменте сети (PUB1, PUB2 и PUB3).

Один из шлюзов является главным (MASTER), а второй — второстепенным (BACKUP). В один момент времени виртуальный адрес может быть только на шлюзе, который находится в состоянии MASTER.

Рассмотрим работу схемы на примере кластера, к которому подключено устройство IPHost1.

При переходе в состояние MASTER, на шлюзе запускается процесс l2svc, который захватывает фреймы канального уровня, приходящие на интерфейс Gi0/0 (интерфейс находится в promisc mode), и инкапсулирует их в пакеты сетевого уровня. Далее пакеты попадают под правила шифрования и передаются по IPsec туннелю между кластерами. На соседних кластерах происходит обратный процесс.

Трафик, идущий на виртуальный адрес, обрабатывает MASTER. Если по причинам, описанным ниже, главный шлюз становится недоступным, его состояние меняется с MASTER на FAULT (при этом процесс l2svc останавливается), состояние второстепенного шлюза меняется с BACKUP на MASTER, и второстепенный шлюз продолжает заниматься обработкой трафика. При возвращении в строй главного шлюза, трафик снова будет обрабатываться на нем. Обнаружение недоступности шлюза, находящегося в состоянии MASTER, происходит благодаря обмену служебными пакетами протокола VRRP.

Интерфейс Gi0/2 служит для удаленного управления.

Состояние интерфейса Gi0/0 также проверяется (хотя VRRP пакеты по нему не передаются) и при смене состояния интерфейса на DOWN, состояние шлюза изменится на FAULT.

Нужно отметить, что между кластерами могут находиться устройства 3 уровня (маршрутизаторы, межсетевые экраны и др.), то есть они не обязаны быть связаны на канальном уровне.

Стенд отрабатывает следующие типы отказов:

·         отключение питания;

·         выход из строя аппаратной платформы;

·         отказ сетевого интерфейса;

·         отказ порта на коммутационном оборудовании;

·         отказ демона отвечающего за шифрование трафика.


 

Настройка стенда

Важно! На портах коммутатора (не изображены на схеме), к которым подключаются сетевые интерфейсы нод кластера, на которых включен VRRP, должен быть включен режим portfast. В противном случае могут происходить потери gARP пакетов от ноды в состоянии MASTER.

Настройка шлюза безопасности GW1

Начальная настройка шлюза в S-Terra administrative console при первом включении состоит из следующих действий:

·         Пройдите процедуру аутентификации (пользователь по умолчанию – administrator, пароль по умолчанию – s-terra).

·         Пройдите процедуру инициализации (команда initialize).

·         Активируйте политику драйвера по умолчанию (команда run csconf_mgr activate).

·         Команда run csconf_mgr activate применяет текущую политику драйвера. При первичной настройке шлюза применится политика драйвера по умолчанию, при которой прохождение трафика не блокируется.

·         Для доступа через SSH установите пароль на пользователя root (команда run passwd).

Более подробно консоль разграничения доступа S-Terra administrative console описана в документации (http://doc.s-terra.ru/g42_init_cons).

Обновление пакета keepalived

Обновление пакета возможно только на шлюзах, имеющих класс СКЗИ не выше КС2 (см. /etc/image_version). На шлюзах, где класс СКЗИ соответствует КС3, нужно использовать пакет keepalived, входящий в состав ОС (обновление пакета завершится с ошибкой).

1.    Перейдите в linux bash (команда system в консоли разграничения доступа S-Terra administrative console):

administrator@sterragate] system

Entering system shell...

2.    Проверьте текущую версию пакета keepalived:

root@sterragate:~# dpkg -l | grep keepalived

ii  keepalived                      1.2.24~sterra~rc006         amd64        Open source implementation of VRRP protocol

Если версия 1.2.24~sterra~rc006 или  1.2.24~sterra-4, то рекомендуется обновить пакет keepalived, реализующий протокол VRRP, до версии keepalived_1.2.24~sterra-5 (получить пакет можно на портале документации: http://doc.s-terra.ru/rh_output/4.2/Scenarios/output/mergedProjects/1main/keepalived_1.2.24~sterra-5_amd64.zip).

3.    Загрузите пакет keepalived_1.2.24~sterra-5 соответствующий разрядности ОС шлюза в директорию /root (для просмотра разрядности воспользуйтесь командой uname -a).

Если сеть еще не настроена, то доставить пакет на шлюз можно при помощи USB Flash накопителя. При подключении USB Flash накопителя он будет автоматически смонтирован в директорию /media/<ID>.

4.    Установите пакет, например для 64-разрядной ОС:

root@GW1:~# dpkg -i keepalived_1.2.24~sterra-5_amd64.deb

(Reading database ... 18014 files and directories currently installed.)

Preparing to replace keepalived 1.2.24~sterra~rc006 (using keepalived_1.2.24~sterra-5_amd64.deb) ...

Unpacking replacement keepalived ...

Setting up keepalived (1.2.24~sterra-5) ...

Installing new version of config file /etc/init.d/keepalived ...

Installing new version of config file /etc/default/keepalived ...

Installing new version of config file /etc/keepalived/scripts/for_cs_console ...

5.    Перейдите обратно в консоль разграничения доступа S-Terra administrative console:

root@sterragate:~# exit

logout

Leaving system shell...

administrator@sterragate]

Настройка интерфейсов

1.    Перейдите из консоли разграничения доступа (S-Terra Administrative console) в консоль настройки шлюза (cisco-like интерфейс). По умолчанию имя пользователя – cscons, пароль – csp:

administrator@sterragate] configure

sterragate login: cscons

Password:

...

sterragate#

2.    Перейдите в режим настройки:

sterragate#conf t

3.    В настройках интерфейсов задайте IP-адреса:

sterragate(config)#interface GigabitEthernet 0/1

sterragate(config-if)#ip address 10.0.0.101 255.255.255.0

sterragate(config-if)#no shutdown

sterragate(config-if)#exit

sterragate(config)#interface GigabitEthernet 0/2

sterragate(config-if)#ip address 192.168.1.1 255.255.255.0

sterragate(config-if)#no shutdown

sterragate(config-if)#exit

4.    Задайте адрес шлюза по умолчанию (интерфейс G0/0 устройства Router1):

sterragate(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.2

5.    Выйдите из cisco-like интерфейса:

sterragate(config)#end

sterragate#exit

Дальнейшую настройку можно проводить через SSH подключение.

Важно! Среда передачи в этом случае должна быть доверенной. Описание создания доверенной среды описано в соответствующей инструкции.

Регистрация сертификата УЦ

В данном сценарии для аутентификации используются сертификаты. Для корректной работы необходимо зарегистрировать доверенный сертификат УЦ и локальный сертификат, выданный данным УЦ.

1.    Подключитесь по SSH к шлюзу.

2.    Установите правильное системное время.

Например:

root@sterragate:~# date -s "01/31/2017 15:00"

Tue Jan 31 15:00:00 MSK 2017

Данная запись соответствует 31 января 2017 года 15:00.

В данном случае формат даты указывается в виде месяц/день/год (ММ/ДД/ГГГГ).

Для автоматической настройки правильного времени рекомендуется настроить NTP-клиент по соответствующей инструкции.

3.    Создайте папку /certs:

root@sterragate:~# mkdir /certs

4.    Перенесите доверенный сертификат УЦ на шлюз.

Способы передачи данных на шлюз описаны в документации (http://doc.s-terra.ru/g42_files)

5.    С помощью утилиты cert_mgr зарегистрируйте сертификат в базе продукта:

root@sterragate:~# cert_mgr import -f /certs/ca.cer -t

1 OK C=RU,O=S-Terra,CN=RootCA

Ключ -t в данной команде указывает на то, что импортируемый сертификат – доверенный сертификат УЦ.

Регистрация локального сертификата

Для регистрации локального сертификата в базе продукта выполните следующие действия:

1.    Сформируйте запрос на сертификат при помощи утилиты cert_mgr:

root@sterragate:~# cert_mgr create -subj "C=RU,O=S-Terra CSP,OU=Research,CN=GW1" -GOST_R341012_256 -fb64 /home/gw_req

·         Ключ -subj <DN> задает поля сертификата.

·         Ключ -GOST_R341012_256 предполагает использование ГОСТ Р 34.10-2012. На УЦ для его поддержки должно быть установлено СКЗИ «КриптоПро CSP» версии 4.0 или новее. При необходимости, есть возможность использовать старый алгоритм (ГОСТ Р 34.10-94), который задается ключом -GOST_R3410EL.

·         Ключ -fb64 <путь до файла> позволяет сохранить запрос в файл по указанному пути.

2.    Передайте полученный запрос сертификата на УЦ. Процедура выдачи сертификата на УЦ по запросу описана в документации (http://doc.s-terra.ru/g42_get_cert).

3.    Зарегистрируйте локальный сертификат в базе продукта, применив утилиту cert_mgr:

root@sterragate:~# cert_mgr import -f /certs/GW1.cer

1    OK C=RU,O=S-Terra CSP,OU=Research,CN=GW1

4.    Убедитесь, что сертификаты импортированы успешно:

root@sterragate:~# cert_mgr show

Found 2 certificates. No CRLs found.

1 Status: trusted C=RU,O=S-Terra,CN=RootCA

2 Status: local   C=RU,O=S-Terra CSP,OU=Research,CN=GW1

Создание политики безопасности

После регистрации сертификатов необходимо создать политику безопасности для шлюза GW1

1.    Для входа в консоль запустите cs_console:

root@sterragate:~# cs_console

sterragate>enable

Password:

Пароль по умолчанию – csp.

Важно! Пароль по умолчанию необходимо сменить.

2.    Перейдите в режим настройки:

sterragate#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

3.    Смените пароль по умолчанию:

sterragate(config)#username cscons password <пароль>

4.    Смените название шлюза:

sterragate(config)#hostname GW1

5.    Задайте тип идентификации:

GW1(config)#crypto isakmp identity dn

В данном сценарии для идентификации будет использоваться поле DN сертификата.

6.    Задайте параметры DPD (dead peer detection)

GW1(config)#crypto isakmp keepalive 10 2

GW1(config)#crypto isakmp keepalive retry-count 5

Если в течение 10 секунд отсутствует входящий трафик в IPsec туннеле, то с интервалом в 2 секунды посылается 5 keepalive-пакетов в IKE туннеле, чтобы удостовериться в работоспособности туннеля. Если партнер не отвечает на keepalive-пакеты, то существующий IKE туннель переходит в состояние disabled, а связанные с ним IPsec туннели удаляются. В случае наличия исходящего трафика происходит попытка создать новый IKE туннель.

7.    Задайте параметры для IKE:

GW1(config)#crypto isakmp policy 1

GW1(config-isakmp)#authentication gost-sig

GW1(config-isakmp)#encr gost

GW1(config-isakmp)#hash gost341112-256-tc26

GW1(config-isakmp)#group vko2

GW1(config-isakmp)#exit

8.    Задайте параметры для IPsec:

GW1(config)#crypto ipsec transform-set TSET esp-gost28147-4m-imit

GW1(cfg-crypto-trans)#exit

9.    Опишите трафик, который планируется защищать. Для этого создайте расширенный список доступа:

GW1(config)#ip access-list extended LIST

GW1(config-ext-nacl)#permit udp host 10.0.0.1 host 10.1.0.1

GW1(config-ext-nacl)#exit

GW1(config)#ip access-list extended LIST2

GW1(config-ext-nacl)#permit udp host 10.0.0.1 host 10.2.0.1

GW1(config-ext-nacl)#exit

Так как С-Терра L2 инкапсулирует захватываемые фреймы в UDP, то и в списке доступа указан протокол UDP.

10.  Создайте крипто-карту:

GW1(config)#crypto map CMAP 1 ipsec-isakmp

GW1(config-crypto-map)#match address LIST

GW1(config-crypto-map)#set transform-set TSET

GW1(config-crypto-map)#set peer 10.1.0.1

GW1(config-crypto-map)#exit

GW1(config)#crypto map CMAP 2 ipsec-isakmp

GW1(config-crypto-map)#match address LIST2

GW1(config-crypto-map)#set transform-set TSET

GW1(config-crypto-map)#set peer 10.2.0.1

GW1(config-crypto-map)#exit

11.  Привяжите крипто-карту к интерфейсу, на котором будет туннель:

GW1(config)#interface GigabitEthernet 0/1

GW1(config-if)#crypto map CMAP

GW1(config-if)#exit

12.  Настройте получение списка отозванных сертификатов (CRL) по HTTP:

GW1(config)#crypto pki trustpoint s-terra_technological_trustpoint

GW1(ca-trustpoint)#crl download group GROUP http://10.0.221.179/certsrv/certcrl.crl

GW1(ca-trustpoint)#exit

Предполагается, что CRL выкладывается на общедоступное место (доступ к которому обеспечен без использования IPsec) для всех шлюзов. При указании имени домена, вместо IP-адреса, необходимо настроить адрес DNS-сервера в системном файле /etc/resolv.conf.

Также необходимо учитывать, что у CRL есть срок действия и нужно обеспечивать своевременное их обновление в данном общедоступном месте.

По умолчанию CRL будет запрашиваться раз в сутки (раз в 1440 минут), для изменения интервала запросов можно воспользоваться командой crl download time <интервал в минутах>.

При необходимости отключения CRL (не рекомендуется отключать CRL) воспользуйтесь командой revocation-check none.

13.  Настройка устройства GW1 в cisco-like консоли завершена. При выходе из конфигурационного режима происходит загрузка конфигурации:

GW1(config)#end

GW1#exit

Виртуальные адреса на соответствующих интерфейсах шлюза добавятся автоматически, когда шлюз будет находиться в режиме MASTER:

ip address 10.0.0.1 255.255.255.255 secondary

В Приложении представлен текст cisco-like конфигурации и текст LSP конфигурации для шлюза GW1.

Настройка «С-Терра L2»

1.    Для работы продукта необходимо поместить файл лицензии l2.lic в директорию /opt/l2svc/etc/.

Синтаксис файла l2.lic:

[license]

CustomerCode=TEST

ProductCode=L2VPN

LicenseNumber=1

LicenseCode=1234567890ABCDEF

Для задания лицензии можно воспользоваться скриптом:

root@sterragate:~# /opt/l2svc/bin/license.sh

2.    Создайте два файла конфигурации «С-Терра L2» в каталоге /opt/l2svc/etc/:

root@GW1:~# vi /opt/l2svc/etc/config.conf

vif tap0

bridge br0

capture eth0

remote 10.1.0.1

port 10001

mssfix 1400

passtos

root@GW1:~# vi /opt/l2svc/etc/config2.conf

vif tap1

bridge br0

capture eth0

remote 10.2.0.1

port 10002

mssfix 1400

passtos

Важно: Для обеспечения правильной работы топологии «звезда» интерфейс bridge для обеих конфигураций одинаков. Интерфейсы tap и номер порта (port) различаются для каждого соединения.

Где:

·         vif <name> – название виртуального интерфейса (TAP). Обязательный параметр. Рекомендуется tapN, где N – цифра.

·         bridge <name> – название виртуального интерфейса моста. Обязательный параметр. Рекомендуется brN, где N – цифра.

·         capture <name> – имя сетевого интерфейса, с которого будет осуществляться захват Ethernet-фреймов. Обязательный параметр.

·         remote <host> [port] – IP-адрес или имя и порт удаленного хоста. Обязательный параметр (адрес, номер порта опционально).

·         fragment <n> – Все пакеты большие n байт, будут фрагментироваться самим продуктом на примерно равные части. Опциональный параметр

·         mssfix <n> – при включении данной опции поле MSS всех проходящих через туннель TCP-пакетов будет выставлено в n. При этом TCP/IP стек отправителя и получателя сам уменьшит максимальный размер пакета, не прибегая к использованию ICMP. Это позволит избежать фрагментации. Если параметр n отсутствует, будет взято значение параметра fragment, если оно задано. Работает только для TCP-трафика. Опциональный параметр. Значение по умолчанию – 1450.

·         passtos – параметр, позволяющий сохранять поле TOS у передаваемых пакетов. Опциональный параметр. По умолчанию отключен.

·         tun_mtu <n> - MTU туннельного интерфейса. При загрузке конфигурации с параметром tun_mtu <n>, значения MTU интерфейсов, указанных в опциях capture <name>, vif <name>, bridge <name>, устанавливаются в n. Значение по умолчанию – 1500. При использовании VLAN-интерфейсов, смотрите соответствующий сценарий (http://doc.s-terra.ru/rh_output/4.2/Scenarios/output/mergedProjects/1main/ver_4_2_scn_1_16.pdf).

3.    Запустите «С-Терра L2»:

root@GW1:~# /etc/init.d/l2svc start

Starting l2svc:

Configuration successfully loaded from config.conf

4.    Чтобы при перезагрузке демон стартовал автоматически, выполните команду:

root@GW1:~# update-rc.d l2svc enable

В Приложении приведены тексты config.conf и config2.conf для шлюза GW1.

Настройка VRRP

1.    Поддержку протокола VRRP обеспечивает пакет keepalived. Настройка осуществляется через конфигурационный файл VRRP-демона /etc/keepalived/keepalived.conf:

root@GW1:~# vim.tiny /etc/keepalived/keepalived.conf

Данный файл разбит на блоки, каждый блок отвечает за свою часть настроек. Ниже описаны параметры каждого блока в отдельности.

2.    Скрипт, который каждую секунду проверяет работоспособность демона vpnsvc:

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

Если демон vpnsvc по каким-то причинам выгрузится, состояние шлюза изменится с BACKUP/MASTER на FAULT. После восстановления работы демона vpnsvc, состояние шлюза изменится с FAULT на BACKUP/MASTER.

3.    В разделе vrrp_sync_group происходит cинхронизация VRRP-процессов (VRRP-instances) на шлюзе и выполнение соответствующих скриптов при переходе в какое-либо состояние:

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

В случае отказа одного из VRRP-процессов, для всей группы будет происходить смена состояния.

При переходе VRRP-процесса в какое-либо состояние (MASTER, BACKUP или FAULT) может выполняться соответствующий скрипт.

В данном сценарии в группу входит единственный интерфейс. Выполнение скриптов не требуется

4.    Ниже указаны параметры VRRP-процесса. Укажите, какой виртуальный адрес использовать, на каком интерфейсе, а также, какой маршрут должен добавляться, когда шлюз находится в состоянии MASTER:

vrrp_instance eth1_1 {

 

  interface eth1

  virtual_routes {

    src 10.0.0.1 10.1.0.0/24 via 10.0.0.2

    src 10.0.0.1 10.2.0.0/24 via 10.0.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth0

  }

  virtual_ipaddress {

    10.0.0.1/24

  }

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Для виртуального адреса необходимо задать маску подсети, как у основного IP-адреса. Маска по умолчанию – /32.

Важно: Для совместной работоспособности IPsec и VRRP обязателен маршрут с виртуальным source-адресом. Данный маршрут прописывается в конфигурационном файле keepalived.conf.

Пример маршрута по умолчанию - src 10.0.0.1 default via 10.0.0.2.

Пример статического маршрута - src 10.0.0.1 10.1.0.1 via 10.0.0.2.

Пример статического маршрута до подсети – src 10.0.0.1 10.1.0.0/24 via 10.0.0.2.

 

Важно: Для правильной работоспособности маршрутизации маршруты keepalived должны быть уже указанных в cisco-like конфигурации.

·         Основные параметры:

·         state MASTER/BACKUP – состояние по умолчанию при старте keepalived.

·         interface ethN – интерфейс к которому происходит привязка VRRP-процесса.

·         garp_master_delay n – задержка в n секунд перед повторной отправкой gratuitous ARP после перехода в состояние MASTER. Значение по умолчанию – 5.

·         virtual_router_id n – VRRP VRID (идентификатор виртуального маршрутизатора), данное поле присутствует в advertisement-пакетах. Значения virtual_router_id в одном бродкаст домене у разных кластеров должны различаться.

·         priority n – приоритет маршрутизатора, шлюз с более высоким приоритетом переходит в состояние MASTER.

·         advert_int n – интервал отправки advertisement-пакета n секунд. Значение по умолчанию – 1.

·         auth_pass <пароль> – пароль для аутентификации advertisement-пакетов. Пароль должен быть не более 8 символов. Не используйте в пароле знак пробела ( ), кавычек (“”), или знак восклицательного знака (!) первым символом. Смените значение по умолчанию.

·         Дополнительные параметры:

·         preempt_delay n – после перезагрузки шлюза или демона keepalived будет пауза n секунд (от 0 до 1000) перед переходом в состояние MASTER. Прописывать параметр необходимо у каждого VRRP-процесса. Значение по умолчанию – 0.

·         garp_master_refresh n – раз в n секунд посылать gratuitous ARP. Действует на шлюз в состоянии MASTER. По умолчанию - отключен. Прописывать параметр необходимо у каждого VRRP-процесса.

·         track_interface – слежение за указанными интерфейсами. Если интерфейс перейдет в состояние DOWN, VRRP-процесс перейдет в состояние FAULT.

5.    Параметры запуска keepalived можно изменить в файле /etc/default/keepalived:

root@GW1:~# vi /etc/default/keepalived

Options to pass to keepalived

 

# DAEMON_ARGS are appended to the keepalived command-line

DAEMON_ARGS="-P -d -D -S 7"

Где:

·         -P задает старт только подсистемы VRRP;

·         -D задает детализированные логи;

·         -S 7 задает local.7 уровень syslog (по умолчанию логи будут записываться в файл /var/log/cspvpngate.log);

·         -d добавляет в лог-файл дамп конфигурационных данных при старте keepalived.

6.    Настройка скриптов, выполняющихся при смене состояний.

В данном сценарии при переходе в состояние BACKUP или FAULT будет останавливаться работа интерфейсов TAP, а при переходе в MASTER они будут запускаться. Делается это для того, чтобы на время, когда шлюз находится в одном из нерабочих состояний, прекращались попытки сетевого взаимодействия «С-Терра L2» с соседними устройствами.

6.1.     Создайте файл /etc/keepalived/master со следующим содержимым:

root@GW1:~# vi /etc/keepalived/scripts/notify_master

#!/bin/bash

ifconfig tap0 up

ifconfig tap1 up

exit 0

6.2.     Создайте файл /etc/keepalived/backup со следующим содержимым:

root@GW1:~# vi /etc/keepalived/scripts/notify_backup

#!/bin/bash

ifconfig tap0 down

ifconfig tap1 down

exit 0

6.3.     Создайте файл /etc/keepalived/fault со следующим содержимым:

root@GW1:~# vi /etc/keepalived/scripts/notify_fault

#!/bin/bash

ifconfig tap0 down

ifconfig tap1 down

exit 0

Важно: Неправильно прописанные команды в скриптах могут привести к полной неработоспособности схемы.

7.    Запустите сервис keepalived:

root@GW1:~# /etc/init.d/keepalived start

Starting keepalived: keepalived.

8.    Чтобы при перезагрузке демон стартовал автоматически, выполните:

root@GW1:~# update-rc.d keepalived enable

update-rc.d: using dependency based boot sequencing

В Приложении приведены:

·         тексты конфигураций keepalived.conf для шлюзов GW1, GW2, GW3, GW4, GW5  и GW6;

·         тексты скриптов /etc/keepalived/scripts/notify_master для шлюзов GW1 и GW2, для шлюзов GW3, GW4, GW5 и GW6;

·         тексты скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюзов GW1 и GW2, для шлюзов GW3, GW4, GW5 и GW6;

Настройка шлюза GW2

На шлюзе GW2 конфигурация будет аналогична за исключением нескольких параметров.

Изменится название шлюза:

sterragate(config)#hostname GW2

Изменятся адреса интерфейсов:

GW2(config)#interface GigabitEthernet 0/1

GW2(config-if)#ip address 10.0.0.102 255.255.255.0

GW2(config-if)#no shutdown

GW2(config-if)#exit

GW2(config)#interface GigabitEthernet 0/2

GW2(config-if)#ip address 192.168.1.2 255.255.255.0

GW2(config-if)#no shutdown

GW2(config-if)#exit

В конфигурации VRRP-демона (/etc/keepalived/keepalived.conf) вместо параметр priority должен быть изменен с 100 на 50:

priority 50

Параметр priority сравнивается при выборе MASTER-а. При отказе шлюза GW1 MASTER-ом становится GW2. Когда отказ устранен, MASTER-ом становится снова GW1, так как у него параметр priority выше. При одинаковых значениях priority обратного переключения не произойдет и GW2 останется MASTER.

В Приложении представлены тексты конфигураций для шлюза GW2:

·         текст cisco-like конфигурации;

·         текст LSP конфигурации;

·         текст конфигурации keepalived.conf;

·         текст скрипта /etc/keepalived/scripts/notify_master;

·         текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault;

·         текст config.conf С-Терра L2.

Настройка шлюзов GW3, GW4, GW5, GW6

Настройка кластеров № 2 и № 3, состоящих из шлюзов GW3, GW4, GW5 и GW6 производится аналогичного настройкам нод кластера № 1.

В настройках keepalived.conf параметры virtual_router_id и auth_pass укажите отличными от параметров GW1 и GW2.

IP-адреса и названия шлюзов настраиваются в соответствии с рисунком 1.

В Приложении приведены:

·         тексты cisco-like конфигураций для GW3, GW4; GW5 и GW6;

·         тексты LSP конфигурации для GW3, GW4; GW5 и GW6;

·         тексты keepalived.conf для GW3, GW4; GW5 и GW6;

·         текст скриптов /etc/keepalived/scripts/notify_master для GW3, GW4, GW5 и GW6;

·         текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для GW3, GW4, GW5 и GW6;

·         текст config.conf С-Терра L2 для GW3, GW4; GW5 и GW6.

Настройка устройства Router1

На устройстве Router1 настраиваются только IP-адреса интерфейсов в соответствии с рисунком 1.

Настройка устройства IPHost1

На устройстве IPHost1 необходимо задать IP-адрес – 192.168.1.101.

Настройка устройства IPHost2

На устройстве IPHost2 необходимо задать IP-адрес – 192.168.1.102.

Настройка устройства IPHost3

На устройстве IPHost2 необходимо задать IP-адрес – 192.168.1.103.


 

Проверка работоспособности стенда

После того, как настройка всех устройств завершена, инициируем создание защищенного соединения.

1.    С устройства IPHost2 отправьте ICMP пакет на IPHost3. Таким образом пакеты будут проходить через первый кластер. Для этого выполните команду:

ping 192.168.1.103

PING 192.168.1.103 (192.168.1.103) 56(84) bytes of data.

64 bytes from 192.168.1.103: icmp_seq=1 ttl=64 time=2.01 ms

64 bytes from 192.168.1.103: icmp_seq=2 ttl=64 time=1.35 ms

64 bytes from 192.168.1.103: icmp_seq=3 ttl=64 time=1.42 ms

64 bytes from 192.168.1.103: icmp_seq=4 ttl=64 time=1.52 ms

64 bytes from 192.168.1.103: icmp_seq=5 ttl=64 time=1.41 ms

 

--- 192.168.1.103 ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 4006ms

rtt min/avg/max/mdev = 1.357/1.547/2.012/0.239

2.    Убедитесь, что установлено защищенное соединение:

root@GW1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd

1 22 (10.0.0.1,500)-(10.1.0.1,500) active 39136 39432

2 23 (10.0.0.1,500)-(10.2.0.1,500) active 39232 38936

 

IPsec connections:

Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd

1 11 (10.0.0.1,*)-(10.1.0.1,*) 17 ESP tunn 2416 1616

2 12 (10.0.0.1,*)-(10.2.0.1,*) 17 ESP tunn 2496 1536

3.    Пустите бесконечный пинг и сделайте обрыв связи:

64 bytes from 192.168.1.103: icmp_req=87 ttl=64 time=4.51 ms

64 bytes from 192.168.1.103: icmp_req=88 ttl=64 time=5.03 ms

64 bytes from 192.168.1.103: icmp_req=113 ttl=64 time=6.01 ms

64 bytes from 192.168.1.103: icmp_req=114 ttl=64 time=4.58 ms

64 bytes from 192.168.1.103: icmp_req=115 ttl=64 time=6.69 ms

В зависимости от типа отказа, направления трафика, количества туннелей переключение может длиться от нескольких секунд до десятков секунд. За это время туннель установится уже с другим шлюзом.

4.    Виртуальные адреса и маршруты можно просмотреть, выполнив команды:

root@GW3:~# ip address show | grep eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

    inet 10.1.0.101/24 brd 10.1.0.255 scope global eth0

    inet 10.1.0.1/24 scope global secondary eth0

root@GW3:~# ip route show

default via 10.1.0.2 dev eth0

192.168.2.0/24 dev eth2  proto kernel  scope link  src 192.268.2.1

10.0.0.0/24 via 10.1.0.2 dev eth0  src 10.1.0.1

10.1.0.0/24 dev eth0  proto kernel  scope link  src 10.1.0.101

10.2.0.0/24 via 10.1.0.2 dev eth0  src 10.1.0.1


 

Приложение

Текст cisco-like конфигурации для шлюза GW1

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW1

enable password csp

!

!

!

logging trap debugging

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.0.0.1 host 10.1.0.1

!

ip access-list extended LIST2

 permit udp host 10.0.0.1 host 10.2.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.0.1

crypto map CMAP 2 ipsec-isakmp

 match address LIST2

 set transform-set TSET

 set peer 10.2.0.1

!

interface GigabitEthernet0/0

 no ip address

!

interface GigabitEthernet0/1

 ip address 10.0.0.101 255.255.255.0

 ip address 10.0.0.1 255.255.255.0 secondary

 crypto map CMAP

!

interface GigabitEthernet0/2

 ip address 192.168.1.1 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 10.0.0.2

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2A

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст cisco-like конфигурации для шлюза GW2

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW1v1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.0.0.1 host 10.1.0.1

!

ip access-list extended LIST2

 permit udp host 10.0.0.1 host 10.2.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.0.1

crypto map CMAP 2 ipsec-isakmp

 match address LIST2

 set transform-set TSET

 set peer 10.2.0.1

!

interface GigabitEthernet0/0

 no ip address

!

interface GigabitEthernet0/1

 ip address 10.0.0.102 255.255.255.0

 crypto map CMAP

!

interface GigabitEthernet0/2

 ip address 192.168.1.2 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 10.0.0.2

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2A

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст cisco-like конфигурации для шлюза GW3

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW2

enable password csp

!

!

!

logging trap debugging

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.1.0.1 host 10.0.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.0.0.1

!

interface GigabitEthernet0/0

 ip address 10.1.0.101 255.255.255.0

 ip address 10.1.0.1 255.255.255.0 secondary

 crypto map CMAP

!

interface GigabitEthernet0/1

 no ip address

!

interface GigabitEthernet0/2

 ip address 192.168.1.11 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 10.1.0.2

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2AD482

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст cisco-like конфигурации для шлюза GW4

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW2v1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.1.0.1 host 10.0.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.0.0.1

!

interface GigabitEthernet0/0

 ip address 10.1.0.102 255.255.255.0

 crypto map CMAP

!

interface GigabitEthernet0/1

 no ip address

!

interface GigabitEthernet0/2

 ip address 192.168.1.12 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 10.1.0.2

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2AD482

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст cisco-like конфигурации для шлюза GW5

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW3

enable password csp

!

!

!

logging trap debugging

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.2.0.1 host 10.0.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.0.0.1

!

interface GigabitEthernet0/0

 ip address 10.2.0.101 255.255.255.0

 ip address 10.2.0.1 255.255.255.0 secondary

 crypto map CMAP

!

interface GigabitEthernet0/1

 no ip address

!

interface GigabitEthernet0/2

 ip address 192.168.1.21 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 10.2.0.2

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст cisco-like конфигурации для шлюза GW6

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp keepalive 10

crypto isakmp keepalive retry-count 5

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname GW3v1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

crypto ipsec transform-set TSET esp-gost28147-4m-imit

!

ip access-list extended LIST

 permit udp host 10.2.0.1 host 10.0.0.1

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.0.0.1

!

interface GigabitEthernet0/0

 ip address 10.2.0.102 255.255.255.0

 crypto map CMAP

!

interface GigabitEthernet0/1

 no ip address

!

interface GigabitEthernet0/2

 ip address 192.168.1.22 255.255.255.0

!

!

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 2B6E3351FD6EB2AD48200203CB5BA141

3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130

E34EE9640D905032C1F1E3B4491257D5

 

quit

!

end

Текст LSP конфигурации для шлюза GW1

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Mon Mar  4 21:25:44 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Mon Mar  4 21:25:44 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.0.0.2

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.1.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IKERule IKERule:CMAP:2

(

    IKEPeerIPFilter = 10.2.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 20

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.1.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

IPsecAction IPsecAction:CMAP:2

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.2.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:2

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.0.0.1

        DestinationIP = 10.1.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    ),

    Filter (

        Label = "CMAP:2:LIST2"

        SourceIP = 10.0.0.1

        DestinationIP = 10.2.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:2 >

        LogEventID = "IPsec:Protect:CMAP:2:LIST2"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст LSP конфигурации для шлюза GW2

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Mon Mar  4 22:02:32 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Mon Mar  4 22:02:32 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.0.0.2

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.1.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IKERule IKERule:CMAP:2

(

    IKEPeerIPFilter = 10.2.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 20

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.1.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

IPsecAction IPsecAction:CMAP:2

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.2.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:2

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.0.0.1

        DestinationIP = 10.1.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    ),

    Filter (

        Label = "CMAP:2:LIST2"

        SourceIP = 10.0.0.1

        DestinationIP = 10.2.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:2 >

        LogEventID = "IPsec:Protect:CMAP:2:LIST2"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст LSP конфигурации для шлюза GW3

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar  5 17:09:26 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar  5 17:09:26 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.0.2

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.0.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.0.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.1.0.1

        DestinationIP = 10.0.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст LSP конфигурации для шлюза GW4

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar  5 17:12:19 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar  5 17:12:19 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.0.2

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.0.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.0.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.1.0.1

        DestinationIP = 10.0.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст LSP конфигурации для шлюза GW5

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar  5 16:59:45 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar  5 16:59:45 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.2.0.2

        )

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.0.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.0.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.2.0.1

        DestinationIP = 10.0.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст LSP конфигурации для шлюза GW6

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar  5 17:06:46 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar  5 17:06:46 2019"

    Version                     = LSP_4_2

    CRLHandlingMode             = OPTIONAL

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

FirewallParameters(

    TCPSynSentTimeout = 30

    TCPFinTimeout = 5

    TCPClosedTimeout = 30

    TCPSynRcvdTimeout = 30

    TCPEstablishedTimeout = 3600

    TCPHalfOpenLow = 400

    TCPHalfOpenMax = 500

    TCPSessionRateLow = 400

    TCPSessionRateMax = 500

)

 

IKETransform crypto:isakmp:policy:1

(

    CipherAlg   = "G2814789CPRO1-K256-CBC-65534"

    HashAlg     = "GR341112_256TC26-65128"

    GroupID     = VKO2_1B

    RestrictAuthenticationTo = GOST_SIGN

    LifetimeSeconds = 86400

)

 

ESPProposal TSET:ESP

(

    Transform* = ESPTransform

    (

        CipherAlg*          = "G2814789CPRO2-K288-CNTMAC-253"

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AuthMethodGOSTSign GOST:Sign

(

    LocalID        =  IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )

    SendRequestMode    =  ALWAYS

    SendCertMode       =  ALWAYS

)

 

IKERule IKERule:CMAP:1

(

    IKEPeerIPFilter = 10.0.0.1

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    DPDIdleDuration     = 10

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 10

)

 

IPsecAction IPsecAction:CMAP:1

(

    TunnelingParameters = TunnelEntry(

        PeerAddress = 10.0.0.1

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( TSET:ESP )

    IKERule = IKERule:CMAP:1

)

 

FilterChain IPsecPolicy:CMAP (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 10.2.0.1

        DestinationIP = 10.0.0.1

        ProtocolID = 17

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:CMAP:1 >

        LogEventID = "IPsec:Protect:CMAP:1:LIST"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:CMAP

)

Текст keepalived.conf для шлюза GW1

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth1

  virtual_routes {

    src 10.0.0.1 10.1.0.0/24 via 10.0.0.2

    src 10.0.0.1 10.2.0.0/24 via 10.0.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth0

  }

  virtual_ipaddress {

    10.0.0.1/24

  }

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст keepalived.conf для шлюза GW2

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth1

  virtual_routes {

    src 10.0.0.1 10.1.0.0/24 via 10.0.0.2

    src 10.0.0.1 10.2.0.0/24 via 10.0.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth0

  }

  virtual_ipaddress {

    10.0.0.1/24

  }

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст keepalived.conf для шлюза GW3

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth0_1

  }

}

vrrp_instance eth0_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth0

  virtual_routes {

    src 10.1.0.1 10.0.0.0/24 via 10.1.0.2

    src 10.1.0.1 10.2.0.0/24 via 10.1.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth1

  }

  virtual_ipaddress {

    10.1.0.1/24

  }

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст keepalived.conf для шлюза GW4

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth0_1

  }

}

vrrp_instance eth0_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth0

  virtual_routes {

    src 10.1.0.1 10.0.0.0/24 via 10.1.0.2

    src 10.1.0.1 10.2.0.0/24 via 10.1.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth1

  }

  virtual_ipaddress {

    10.1.0.1/24

  }

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст keepalived.conf для шлюза GW5

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth0_1

  }

}

vrrp_instance eth0_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth0

  virtual_routes {

    src 10.2.0.1 10.0.0.0/24 via 10.2.0.2

    src 10.2.0.1 10.1.0.0/24 via 10.2.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth1

  }

  virtual_ipaddress {

    10.2.0.1/24

  }

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст keepalived.conf для шлюза GW6

vrrp_script chk_dead {

  script "/usr/bin/pgrep -x vpnsvc"

  interval 1

}

vrrp_sync_group 0 {

  group {

    eth0_1

  }

}

vrrp_instance eth0_1 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

 

  interface eth0

  virtual_routes {

    src 10.2.0.1 10.0.0.0/24 via 10.2.0.2

    src 10.2.0.1 10.1.0.0/24 via 10.2.0.2

  }

  track_script {

    chk_dead

  }

  track_interface {

    eth1

  }

  virtual_ipaddress {

    10.2.0.1/24

  }

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Текст /etc/keepalived/scripts/notify_master для шлюзов GW1, GW2

#!/bin/bash

ifconfig tap0 up

ifconfig tap1 up

exit 0

Текст /etc/keepalived/scripts/notify_master для шлюзов GW3, GW4, GW5 и GW6

#!/bin/bash

ifconfig tap0 up

exit 0

Тексты /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюзов GW1, GW2

#!/bin/bash

ifconfig tap0 down

ifconfig tap1 down

exit 0

Тексты /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюзов GW3, GW4, GW5 и GW6

#!/bin/bash

ifconfig tap0 down

exit 0

Текст config.conf С-Терра L2 для шлюзов GW1 и GW2

vif tap0

bridge br0

capture eth0

remote 10.1.0.1

port 10001

mssfix 1400

passtos

Текст config2.conf С-Терра L2 для шлюзов GW1 и GW2

vif tap1

bridge br0

capture eth0

remote 10.2.0.1

port 10002

mssfix 1400

passtos

Текст config.conf С-Терра L2 для шлюзов GW3 и GW4

vif tap0

bridge br0

capture eth1

remote 10.0.0.1

port 10001

mssfix 1400

passtos

Текст config.conf С-Терра L2 для шлюзов GW5 и GW6

vif tap0

bridge br0

capture eth1

remote 10.0.0.1

port 10002

mssfix 1400

passtos