Построение отказоустойчивого решения (кластеры с обеих сторон) на базе протокола VRRP с настройкой через CLI

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

 

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО «С-Терра СиЭсПи» и Продуктов третьих производителей.

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

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

 

Дополнительные файлы:

keepalived_1.2.24~sterra-5_amd64.zip

keepalived_1.2.24~sterra-5_i386.zip

 

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

Сценарий иллюстрирует построение защищенного соединения между двумя подсетями SN1 и SN2. SN1 – 192.168.168.1.0/24, защищается парой шлюзов безопасности «С-Терра Шлюз», объединенными в кластер № 1; SN2 – 192.168.2.0/24, защищается парой шлюзов безопасности GW3 и GW4, так же объединенными в кластер № 2. Устройства Host1 и Host2 смогут общаться между собой по защищенному каналу (VPN). Отказоустойчивость кластеров реализована с помощью протокола VRRP.

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

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

Параметры протокола 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. При использовании протокола VRRP шлюзы каждого кластера имеют разделяемый виртуальный адрес (Virtual IP на схеме) в защищаемом сегменте сети (SN1, SN2) и публичном (PUB1, PUB2). Один из шлюзов является главным (MASTER), а второй – второстепенным (BACKUP). В один момент времени виртуальный адрес может быть только на шлюзе, который находится в состоянии MASTER. Трафик, идущий на виртуальный адрес, обрабатывает MASTER. Если по причинам, описанным ниже, главный шлюз становится недоступным, его состояние меняется с MASTER на FAULT, состояние второстепенного шлюза меняется с BACKUP на MASTER, и второстепенный шлюз продолжает заниматься обработкой трафика. При возвращении в строй главного шлюза, трафик снова будет обрабатываться на нем. Обнаружение недоступности шлюза, находящегося в состоянии MASTER, происходит благодаря обмену служебными пакетами протокола VRRP (VRRP Advertisement messages).

Также в документе рассматривается случай, когда протокол VRRP работает только на одном интерфейсе. В этой ситуации конфигурирование VRRP происходит вручную без использования Cisco-like консоли (см. пункт Особенности работы 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 описана в документации.

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

Обновление пакета на «С-Терра Шлюз», где класс СКЗИ соответствует КС3 (см. значение параметра CLASS в файле /etc/image_version) невозможно, - соответственно, нужно использовать пакет keepalived, входящий в состав ОС.

Если у Вас «С-Терра Шлюз» на базе SPDS (см. значение параметра PLATFORM в файле /etc/image_version), то обновление выполняется иначе, будьте внимательны.

Если у Вас «С-Терра Шлюз» с АПМДЗ, то не забудьте после обновления пакета пересчитать хеш суммы. Описание процедуры смотрите в документации производителя АПМДЗ.

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 ->Типовые сценарии применения -> Версия 4.2).

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

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

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

4.1.     Если у Вас «С-Терра Шлюз» на базе SPDS (см. значение параметра PLATFORM в файле /etc/image_version), то обновление выполняется следующим образом, например для 64-разрядной ОС:

В данном случае обновляются только файлы пакета, без обновления версии пакета в базе пакетов (то есть после обновления в базе пакетов будет старая версия, а по факту файлы от нового пакета).

root@sterragate:~# dpkg-deb -x keepalived_1.2.24~sterra-5_amd64.deb /

root@sterragate:~# chmod u+x /etc/keepalived/scripts/*

4.2.     Если у Вас «С-Терра Шлюз» без SPDS, то обновление выполняется следующим образом, например для 64-разрядной ОС:

root@sterragate:~# 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

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

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

GW1(config)#interface GigabitEthernet 0/0

GW1(config-if)#ip address 192.168.1.1 255.255.255.0

GW1(config-if)#no shutdown

GW1(config-if)#exit

GW1(config)#interface GigabitEthernet 0/1

GW1(config-if)#ip address 10.1.1.2 255.255.255.0

GW1(config-if)#no shutdown

GW1(config-if)#exit

4.    Задайте адрес шлюза по умолчанию:

GW1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

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.    Перенесите доверенный сертификат УЦ на шлюз.

Способы передачи данных на шлюз описаны в документации.

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.    Передайте полученный запрос сертификата на УЦ. Процедура выдачи сертификата на УЦ по запросу описана в документации.

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 ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

GW1(config-ext-nacl)#exit

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.2.10

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.  Настройте VRRP:

Ниже продемонстрирован пример настроек для случая, когда VRRP должен работать и на внешнем, и на внутреннем интерфейсах. Если требуется настроить VRRP на одном интерфейсе, то настройки данного пункта следует пропустить и руководствоваться написанным в пункте «Особенности работы VRRP на одном интерфейсе».

GW1(config)#interface GigabitEthernet 0/0

GW1(config-if)#vrrp 51 ip 192.168.1.10 255.255.255.0

GW1(config-if)#vrrp 51 priority 100

GW1(config-if)#vrrp 51 timers advertise 3

GW1(config-if)#vrrp 51 timers garp 5

GW1(config-if)#exit

GW1(config)#interface GigabitEthernet 0/1

GW1(config-if)#vrrp 52 ip 10.1.1.10 255.255.255.0

GW1(config-if)#vrrp 52 priority 100

GW1(config-if)#vrrp 52 timers advertise 3

GW1(config-if)#vrrp 52 timers garp 5

GW1(config-if)#exit

GW1(config)#vrrp ip route 10.1.2.0 255.255.255.0 10.1.1.1 src 10.1.1.10

GW1(config)#vrrp notify master

GW1(config)#vrrp notify backup

GW1(config)#vrrp notify fault

Поддержку протокола VRRP обеспечивает пакет keepalived.

Команды в режиме конфигурирования интерфейса:

·         vrrp <id> <команда>id определяет VRRP VRID (идентификатор виртуального маршрутизатора); данное поле присутствует в advertisement-пакетах; значения VRID в одном широковещательном домене у разных кластеров должны различаться;

·         vrrp <id> ip <IP-адрес> – задает виртуальный IP-адрес на интерфейсе;

·         vrrp <id> priority <приоритет> – задает приоритет шлюза; шлюз с более высоким приоритетом переходит в состояние MASTER;

·         vrrp <id> timers advertise <N секунд> – задает интервал отправки advertisement-пакетов. значение по умолчанию – 1 секунда; рекомендуется использовать значение 3 с.;

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

·         vrrp <id> preempt delay minimum <N секунд> – задает задержку перед повторной отправкой gratuitous ARP после перехода в состояние MASTER; значение по умолчанию – 5 секунд;

·         vrrp <id> timers garp <N секунд> – задает интервал регулярной отсылки gratuitous ARP в состоянии MASTER. По умолчанию выключено; рекомендуется использовать значение 5 с;

Команды в режиме глобального конфигурирования:

·         vrrp notify <master|backup|fault> – включает выполнение скриптов при смене состояния (по умолчанию папка со скриптами – /etc/keepalived/scripts).

·         vrrp ip route <IP-адрес> <маска> <IP-адрес next-hop> src <виртуальный IP-адрес> – задает маршрут для подмены физического IP-адреса на виртуальный/кластерный в локальных пакетах шлюза (при открытии сокета), например, чтобы в IKE/ESP пакетах в качестве IP-адреса источника был кластерный IP-адрес (для подмены IP-адреса источника в транзитных пакетах на кластерный нужно использовать source NAT); данный маршрут добавляется в систему при переходе шлюза в состояние MASTER; при переходе в состояние BACKUP или FAULT данный маршрут удаляется.

Важно! При пересечении маршрутов, задаваемых командами ip route и vrrp ip route, маршруты, задаваемые командой vrrp ip route, должны быть более узкими, чем маршруты, задаваемые с помощью команды ip route. Совместное задание одинаковых маршрутов (например, ip route 0.0.0.0 0.0.0.0 10.1.1.1 совместно с vrrp ip route 0.0.0.0 0.0.0.0 10.1.1.1 src 10.1.1.10) может привести к неработоспособности схемы.

При выходе из конфигурационного режима настройки VRRP преобразуются в файл конфигурации keepalived (по умолчанию в файл /etc/keepalived/keepalived.conf).

При загрузке конфигурации в keepalived.conf автоматически добавляются следующие структуры:

vrrp_script chk_dead {

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

       interval 1

}

и:

track_script {

       chk_dead

 }

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

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

GW1(config)#end

GW1#exit

15.  Необходимо настроить notify-скрипты (выполнение данных скриптов задается выше). В данном сценарии при переходе в состояние BACKUP или FAULT будет добавляться маршрут в подсеть SN2 (192.168.2.0/24) через кластерный адрес в защищаемой сети SN1 (192.168.1.10), а при переходе в MASTER данный маршрут будет удаляться (это нужно для того, чтобы нода в состоянии BACKUP или FAULT имела доступ к подсети 192.168.2.0/24 через ноду, находящуюся в состоянии MASTER).

15.1.   Измените файл /etc/keepalived/scripts/notify_master (при переходе в MASTER удалять маршрут в подсеть SN2):

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

#!/bin/bash

# Script to run during MASTER transit

ip route del 192.168.2.0/24 via 192.168.1.10

exit 0

15.2.   Измените файл /etc/keepalived/scripts/notify_backup (при переходе в BACKUP добавлять маршрут в подсеть SN2):

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

#!/bin/bash

# Script to run during BACKUP transit

ip route add 192.168.2.0/24 via 192.168.1.10

exit 0

15.3.   Измените файл /etc/keepalived/scripts/notify_fault (при переходе в FAULT добавлять маршрут в подсеть SN2):

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

#!/bin/bash

# Script to run during FAULT transit

ip route add 192.168.2.0/24 via 192.168.1.10

exit 0

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

 ip address 192.168.1.10 255.255.255.255 secondary

 ip address 10.1.1.10 255.255.255.255 secondary

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

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

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

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

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

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

Особенности работы VRRP на одном интерфейсе

В случае если требуется настроить VRRP для работы только на одном интерфейсе то, настройку VRRP следует проводить непосредственно через конфигурационный файл /etc/keepalived/keepalived.conf. Любые настройки VRRP из Cisco-like следует убрать.

В противном случае данный пункт следует пропустить.

Краткое описание параметров

Применительно к данному сценарию, если требуется, чтобы VRRP работал только на внешнем интерфейсе, конфигурация /etc/keepalived/keepalived.conf будет выглядеть следующим образом:

vrrp_script chk_dead {

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

  interval 1

}

vrrp_instance eth1_1 {

  interface eth1

  virtual_routes {

    src 10.1.1.10 10.1.2.0/24 via 10.1.1.1

  }

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    10.1.1.10.24

  }

  notify_master /etc/keepalived/scripts/notify_master

  notify_backup /etc/keepalived/scripts/notify_backup

  notify_fault /etc/keepalived/scripts/notify_fault

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Ниже приведено описание блоков в отдельности.

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

vrrp_script chk_dead {

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

  interval 1

}

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

2.   Параметры VRRP процесса (vrrp_instance):

vrrp_instance eth1_1 {

  interface eth1

  virtual_routes {

    src 10.1.1.10 10.1.2.0/24 via 10.1.1.1

  }

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    10.1.1.10.24

  }

  notify_master /etc/keepalived/scripts/notify_master

  notify_backup /etc/keepalived/scripts/notify_backup

  notify_fault /etc/keepalived/scripts/notify_fault

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

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

·         virtual_routes – блок, в котором можно указать какие маршруты нужно добавить при переходе в состояние MASTER и убрать при переходе в состояние BACKUP.

·         track_script – блок, указывающий какие блоки vrrp_script будут выполняться в рамках данного VRRP процесса (см. пункт 1).

·         virtual_ipaddress – задает виртуальный IP-адрес на интерфейсе (также является блоком).

·         notify_master|backup|fault – настройки, отвечающие за выполнение скриптов при переходе в каждое из состояний. Требуется указать полный путь до каждого скрипта.

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

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

·         garp_master_refresh n – раз в n секунд посылать gratuitous ARP. Действует на шлюз в состоянии MASTER.

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

Также при необходимости в процесс можно добавить следующие параметры:

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

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

Применение настроек

1.     Внесите требуемые изменения в конфигурационный файл:

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

2.     После внесения изменений в конфигурационный файл следует перезапустить демон keepalived и добавить его в автозагрузку:

root@GW1:~# service keepalived restart

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

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

Настройка шлюза GW2 аналогична настройке шлюза GW1.

При конфигурировании VRRP параметр priority должен быть изменен с 100 до 50 (либо параметр с тем же названием в файле конфигураций keepalived).

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

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

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

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

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

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

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

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

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

В настройках VRRP укажите VRID (либо параметр virtual_router_id в файле конфигураций keepalived) отличным от параметров GW1 и GW2.

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

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

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

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

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

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

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

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

В настройках VRRP укажите VRID (либо параметр virtual_router_id в файле конфигураций keepalived) отличным от параметров GW1 и GW2.

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

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

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

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

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

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

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

На устройстве Router1 необходимо настроить соответствующие IP-адреса.

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

На устройстве Host1 задайте IP-адрес, а в качестве шлюза по умолчанию укажите виртуальный адрес кластера в защищаемом сегменте – 192.168.1.10.

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

На устройстве Host2 задайте IP-адрес, а в качестве шлюза по умолчанию укажите виртуальный адрес кластера в защищаемом сегменте – 192.168.2.10.


 

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

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

На устройстве Host2 выполните команду ping:

root@Host2:~#  ping -c 5 192.168.1.100

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

64 bytes from 192.168.1.100: icmp_req=1 ttl=62 time=388 ms

64 bytes from 192.168.1.100: icmp_req=2 ttl=62 time=0.708 ms

64 bytes from 192.168.1.100: icmp_req=3 ttl=62 time=0.658 ms

64 bytes from 192.168.1.100: icmp_req=4 ttl=62 time=0.552 ms

64 bytes from 192.168.1.100: icmp_req=5 ttl=62 time=0.624 ms

 

--- 192.168.1.100 ping statistics ---

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

rtt min/avg/max/mdev = 0.552/78.223/388.573/155.175 ms

В результате выполнения этой команды между устройствами GW1 и GW3 будет установлен VPN туннель.

Убедиться в этом можно, выполнив на устройстве GW1 команду:

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 1 (10.1.1.10,500)-(10.1.2.10,500) active 1732 1824

 

IPsec connections:

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

1 1 (192.168.1.0-192.168.1.255,*)-(192.168.2.0-192.168.2.255,*) * ESP tunn 440 440

Запустите бесконечный ping с обеих сторон и сделайте обрыв связи:

64 bytes from 192.168.2.100: icmp_req=49 ttl=62 time=0.503 ms

64 bytes from 192.168.2.100: icmp_req=50 ttl=62 time=0.477 ms

64 bytes from 192.168.2.100: icmp_req=51 ttl=62 time=0.477 ms

64 bytes from 192.168.2.100: icmp_req=52 ttl=62 time=0.490 ms

...

64 bytes from 192.168.2.100: icmp_req=64 ttl=62 time=0.547 ms

64 bytes from 192.168.2.100: icmp_req=65 ttl=62 time=0.481 ms

64 bytes from 192.168.2.100: icmp_req=66 ttl=62 time=0.509 ms

64 bytes from 192.168.2.100: icmp_req=67 ttl=62 time=0.511 ms

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


 

Выявление ошибок

Чтобы разобраться на каком этапе возникла ошибка можно воспользоваться руководством, которое представлено на портале документации: http://doc.s-terra.ru/rh_output/4.2/Scenarios/output/mergedProjects/1main/ver_4_2_troubleshooting_guide.pdf.


 

Приложение

Текст 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

!

!

!

!

!

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 ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.2.10

!

interface GigabitEthernet0/0

 ip address 192.168.1.1 255.255.255.0

 ip address 192.168.1.10 255.255.255.0 secondary

 vrrp 51 ip 192.168.1.10 255.255.255.0

 vrrp 51 timers advertise 3

 vrrp 51 timers garp 5

!

interface GigabitEthernet0/1

 ip address 10.1.1.2 255.255.255.0

 ip address 10.1.1.10 255.255.255.0 secondary

 crypto map CMAP

 vrrp 52 ip 10.1.1.10 255.255.255.0

 vrrp 52 timers advertise 3

 vrrp 52 timers garp 5

!

interface GigabitEthernet0/2

 no ip address

 shutdown

!

interface GigabitEthernet0/3

 no ip address

 shutdown

!

!

ip route 0.0.0.0 0.0.0.0 10.1.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group GROUP http://10.0.221.179/certsrv/certcrl.crl

crypto pki certificate chain s-terra_technological_trustpoint

certificate 65EF45E1A9E6EAB54D5C69591D470E06

3082023B308201A7A003020102021065EF45E1A9E6EAB54D5C69591D470E0630

0A06082A850307010103033030310B30090603550406130252553110300E0603

55040A1307532D5465727261310F300D06035504031306526F6F744341301E17

0D3137313031303037323833355A170D3232313031303037333833315A303031

0B30090603550406130252553110300E060355040A1307532D5465727261310F

300D06035504031306526F6F7443413081AA302106082A850307010101023015

06092A850307010201020106082A850307010102030381840004818001C2286D

3943038F86C66502A8B0A8DBD15636D33E865085D901EE3ACA500CFEFCBD578E

12AEFA90F6F30624C6D1442DFFFEC31C613E6D8D3483828C430FA52168BB1979

DD2DE02338EA2D61C9B1F9F58BA3CC2CE6C1CDE78D2D4C9E966E62BFD94B17B8

DF2F53F38CB75D63514306A0D7A0BCBC6E6775D69AC3C99B0C054F2BA351304F

300B0603551D0F040403020186300F0603551D130101FF040530030101FF301D

0603551D0E0416041461175C3B503AB1E2DC5A49FE10EDB3218F7D7392301006

092B06010401823715010403020100300A06082A850307010103030381810011

110C24B65B47838EE49DC612CE81AB8E6F7BBB6B994033FCD54807BEF7467236

DE9D6F813229AD20BD9D520217A014719646A64296250F8BD93C5F4AB502844F

6FD8CBE1035A32A95E0F184569EF6DA2BD2A340985CB6DFEB544036D38490CCA

E1528C540B2DFB9E7CE9AF2FD95D8D3738371359281FA8CD5C70D00919356A

 

quit

!

vrrp ip route 10.1.2.0 255.255.255.0 10.1.1.1 src 10.1.1.10

vrrp notify master

vrrp notify backup

vrrp notify fault

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 GW2

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 ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.2.10

!

interface GigabitEthernet0/0

 ip address 192.168.1.2 255.255.255.0

 vrrp 51 ip 192.168.1.10 255.255.255.0

 vrrp 51 priority 50

 vrrp 51 timers advertise 3

 vrrp 51 timers garp 5

 

!

interface GigabitEthernet0/1

 ip address 10.1.1.3 255.255.255.0

 crypto map CMAP

 vrrp 52 ip 10.1.1.10 255.255.255.0

 vrrp 52 priority 50

 vrrp 52 timers advertise 3

 vrrp 52 timers garp 5

!

interface GigabitEthernet0/2

 no ip address

 shutdown

!

interface GigabitEthernet0/3

 no ip address

 shutdown

!

!

ip route 0.0.0.0 0.0.0.0 10.1.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group GROUP http://10.0.221.179/certsrv/certcrl.crl

crypto pki certificate chain s-terra_technological_trustpoint

certificate 65EF45E1A9E6EAB54D5C69591D470E06

3082023B308201A7A003020102021065EF45E1A9E6EAB54D5C69591D470E0630

0A06082A850307010103033030310B30090603550406130252553110300E0603

55040A1307532D5465727261310F300D06035504031306526F6F744341301E17

0D3137313031303037323833355A170D3232313031303037333833315A303031

0B30090603550406130252553110300E060355040A1307532D5465727261310F

300D06035504031306526F6F7443413081AA302106082A850307010101023015

06092A850307010201020106082A850307010102030381840004818001C2286D

3943038F86C66502A8B0A8DBD15636D33E865085D901EE3ACA500CFEFCBD578E

12AEFA90F6F30624C6D1442DFFFEC31C613E6D8D3483828C430FA52168BB1979

DD2DE02338EA2D61C9B1F9F58BA3CC2CE6C1CDE78D2D4C9E966E62BFD94B17B8

DF2F53F38CB75D63514306A0D7A0BCBC6E6775D69AC3C99B0C054F2BA351304F

300B0603551D0F040403020186300F0603551D130101FF040530030101FF301D

0603551D0E0416041461175C3B503AB1E2DC5A49FE10EDB3218F7D7392301006

092B06010401823715010403020100300A06082A850307010103030381810011

110C24B65B47838EE49DC612CE81AB8E6F7BBB6B994033FCD54807BEF7467236

DE9D6F813229AD20BD9D520217A014719646A64296250F8BD93C5F4AB502844F

6FD8CBE1035A32A95E0F184569EF6DA2BD2A340985CB6DFEB544036D38490CCA

E1528C540B2DFB9E7CE9AF2FD95D8D3738371359281FA8CD5C70D00919356A

 

quit

!

vrrp ip route 10.1.2.0 255.255.255.0 10.1.1.1 src 10.1.1.10

vrrp notify master

vrrp notify backup

vrrp notify fault

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 GW3

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 ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.1.10

!

interface GigabitEthernet0/0

 ip address 192.168.2.1 255.255.255.0

 ip address 192.168.2.10 255.255.255.0 secondary

 vrrp 53 ip 192.168.2.10 255.255.255.0

 vrrp 53 timers advertise 3

 vrrp 53 timers garp 5

 

!

interface GigabitEthernet0/1

 ip address 10.1.2.2 255.255.255.0

 ip address 10.1.2.10 255.255.255.0 secondary

 crypto map CMAP

 vrrp 54 ip 10.1.2.10 255.255.255.0

 vrrp 54 timers advertise 3

 vrrp 54 timers garp 5

 

!

interface GigabitEthernet0/2

 no ip address

 shutdown

!

interface GigabitEthernet0/3

 no ip address

 shutdown

!

!

ip route 0.0.0.0 0.0.0.0 10.1.2.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group GROUP http://10.0.221.179/certsrv/certcrl.crl

crypto pki certificate chain s-terra_technological_trustpoint

certificate 65EF45E1A9E6EAB54D5C69591D470E06

3082023B308201A7A003020102021065EF45E1A9E6EAB54D5C69591D470E0630

0A06082A850307010103033030310B30090603550406130252553110300E0603

55040A1307532D5465727261310F300D06035504031306526F6F744341301E17

0D3137313031303037323833355A170D3232313031303037333833315A303031

0B30090603550406130252553110300E060355040A1307532D5465727261310F

300D06035504031306526F6F7443413081AA302106082A850307010101023015

06092A850307010201020106082A850307010102030381840004818001C2286D

3943038F86C66502A8B0A8DBD15636D33E865085D901EE3ACA500CFEFCBD578E

12AEFA90F6F30624C6D1442DFFFEC31C613E6D8D3483828C430FA52168BB1979

DD2DE02338EA2D61C9B1F9F58BA3CC2CE6C1CDE78D2D4C9E966E62BFD94B17B8

DF2F53F38CB75D63514306A0D7A0BCBC6E6775D69AC3C99B0C054F2BA351304F

300B0603551D0F040403020186300F0603551D130101FF040530030101FF301D

0603551D0E0416041461175C3B503AB1E2DC5A49FE10EDB3218F7D7392301006

092B06010401823715010403020100300A06082A850307010103030381810011

110C24B65B47838EE49DC612CE81AB8E6F7BBB6B994033FCD54807BEF7467236

DE9D6F813229AD20BD9D520217A014719646A64296250F8BD93C5F4AB502844F

6FD8CBE1035A32A95E0F184569EF6DA2BD2A340985CB6DFEB544036D38490CCA

E1528C540B2DFB9E7CE9AF2FD95D8D3738371359281FA8CD5C70D00919356A

 

quit

!

vrrp ip route 10.1.1.0 255.255.255.0 10.1.2.1 src 10.1.2.10

vrrp notify master

vrrp notify backup

vrrp notify fault

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 GW4

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 ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

!

!

crypto map CMAP 1 ipsec-isakmp

 match address LIST

 set transform-set TSET

 set peer 10.1.1.10

!

interface GigabitEthernet0/0

 ip address 192.168.2.2 255.255.255.0

 vrrp 53 ip 192.168.2.10 255.255.255.0

 vrrp 53 priority 50

 vrrp 53 timers advertise 3

 vrrp 53 timers garp 5

!

interface GigabitEthernet0/1

 ip address 10.1.2.3 255.255.255.0

 crypto map CMAP

 vrrp 54 ip 10.1.2.10 255.255.255.0

 vrrp 54 priority 50

 vrrp 54 timers advertise 3

 vrrp 54 timers garp 5

 

!

interface GigabitEthernet0/2

 no ip address

 shutdown

!

interface GigabitEthernet0/3

 no ip address

 shutdown

!

!

ip route 0.0.0.0 0.0.0.0 10.1.2.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check crl

 crl download group GROUP http://10.0.221.179/certsrv/certcrl.crl

crypto pki certificate chain s-terra_technological_trustpoint

certificate 65EF45E1A9E6EAB54D5C69591D470E06

3082023B308201A7A003020102021065EF45E1A9E6EAB54D5C69591D470E0630

0A06082A850307010103033030310B30090603550406130252553110300E0603

55040A1307532D5465727261310F300D06035504031306526F6F744341301E17

0D3137313031303037323833355A170D3232313031303037333833315A303031

0B30090603550406130252553110300E060355040A1307532D5465727261310F

300D06035504031306526F6F7443413081AA302106082A850307010101023015

06092A850307010201020106082A850307010102030381840004818001C2286D

3943038F86C66502A8B0A8DBD15636D33E865085D901EE3ACA500CFEFCBD578E

12AEFA90F6F30624C6D1442DFFFEC31C613E6D8D3483828C430FA52168BB1979

DD2DE02338EA2D61C9B1F9F58BA3CC2CE6C1CDE78D2D4C9E966E62BFD94B17B8

DF2F53F38CB75D63514306A0D7A0BCBC6E6775D69AC3C99B0C054F2BA351304F

300B0603551D0F040403020186300F0603551D130101FF040530030101FF301D

0603551D0E0416041461175C3B503AB1E2DC5A49FE10EDB3218F7D7392301006

092B06010401823715010403020100300A06082A850307010103030381810011

110C24B65B47838EE49DC612CE81AB8E6F7BBB6B994033FCD54807BEF7467236

DE9D6F813229AD20BD9D520217A014719646A64296250F8BD93C5F4AB502844F

6FD8CBE1035A32A95E0F184569EF6DA2BD2A340985CB6DFEB544036D38490CCA

E1528C540B2DFB9E7CE9AF2FD95D8D3738371359281FA8CD5C70D00919356A

 

quit

!

vrrp ip route 10.1.1.0 255.255.255.0 10.1.2.1 src 10.1.2.10

vrrp notify master

vrrp notify backup

vrrp notify fault

end

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

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar 20 10:19:17 2018

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar 20 10:19:17 2018"

    Version                     = LSP_4_2

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.1.1

        )

)

 

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.2.10

    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.1.2.10

        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 = 192.168.1.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

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

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

 

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

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar 20 10:20:13 2018

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar 20 10:20:13 2018"

    Version                     = LSP_4_2

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.1.1

        )

)

 

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.2.10

    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.1.2.10

        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 = 192.168.1.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

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

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

 

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

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar 20 10:21:10 2018

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar 20 10:21:10 2018"

    Version                     = LSP_4_2

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.2.1

        )

)

 

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.1.10

    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.1.1.10

        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 = 192.168.2.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

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

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

 

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

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Tue Mar 20 10:22:06 2018

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Tue Mar 20 10:22:06 2018"

    Version                     = LSP_4_2

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

IKEParameters(

    FragmentSize = 0

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 10.1.2.1

        )

)

 

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.1.10

    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.1.1.10

        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 = 192.168.2.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

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

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/1"

    IPsecPolicy = IPsecPolicy:CMAP

)

 

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

vrrp_script chk_dead {

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

  interval 1

}

vrrp_sync_group 0 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

  group {

    eth0_51

    eth1_52

  }

}

vrrp_instance eth0_51 {

  interface eth0

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    192.168.1.10/24

  }

  priority 100

  advert_int 3

  virtual_router_id 51

  garp_master_refresh 5

}

vrrp_instance eth1_52 {

  interface eth1

  virtual_routes {

    src 10.1.1.10 10.1.2.0/24 via 10.1.1.1

  }

  virtual_ipaddress {

    10.1.1.10/24

  }

  priority 100

  advert_int 3

  virtual_router_id 52

  garp_master_refresh 5

}

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

vrrp_script chk_dead {

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

  interval 1

}

vrrp_sync_group 0 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

  group {

    eth0_51

    eth1_52

  }

}

vrrp_instance eth0_51 {

  interface eth0

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    192.168.1.10/24

  }

  priority 50

  advert_int 3

  virtual_router_id 51

  garp_master_refresh 5

}

vrrp_instance eth1_52 {

  interface eth1

  virtual_routes {

    src 10.1.1.10 10.1.2.0/24 via 10.1.1.1

  }

  virtual_ipaddress {

    10.1.1.10/24

  }

  priority 50

  advert_int 3

  virtual_router_id 52

  garp_master_refresh 5

}

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

vrrp_script chk_dead {

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

  interval 1

}

vrrp_sync_group 0 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

  group {

    eth0_53

    eth1_54

  }

}

vrrp_instance eth0_53 {

  interface eth0

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    192.168.2.10/24

  }

  priority 100

  advert_int 3

  virtual_router_id 53

  garp_master_refresh 5

}

vrrp_instance eth1_54 {

  interface eth1

  virtual_routes {

    src 10.1.2.10 10.1.1.0/24 via 10.1.2.1

  }

  virtual_ipaddress {

    10.1.2.10/24

  }

  priority 100

  advert_int 3

  virtual_router_id 54

  garp_master_refresh 5

}

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

vrrp_script chk_dead {

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

  interval 1

}

vrrp_sync_group 0 {

  notify_master "/etc/keepalived/scripts/notify_master"

  notify_backup "/etc/keepalived/scripts/notify_backup"

  notify_fault "/etc/keepalived/scripts/notify_fault"

  group {

    eth0_53

    eth1_54

  }

}

vrrp_instance eth0_53 {

  interface eth0

  track_script {

    chk_dead

  }

  virtual_ipaddress {

    192.168.2.10/24

  }

  priority 50

  advert_int 3

  virtual_router_id 53

  garp_master_refresh 5

}

vrrp_instance eth1_54 {

  interface eth1

  virtual_routes {

    src 10.1.2.10 10.1.1.0/24 via 10.1.2.1

  }

  virtual_ipaddress {

    10.1.2.10/24

  }

  priority 50

  advert_int 3

  virtual_router_id 54

  garp_master_refresh 5

}

Текст скрипта /etc/keepalived/scripts/notify_master для шлюза GW1

#!/bin/bash

# Script to run during MASTER transit

ip route del 192.168.2.0/24 via 192.168.1.10

exit 0

Текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюза GW1

#!/bin/bash

# Script to run during BACKUP transit

ip route add 192.168.2.0/24 via 192.168.1.10

exit 0

Текст скрипта /etc/keepalived/scripts/notify_master для шлюза GW2

#!/bin/bash

# Script to run during MASTER transit

ip route del 192.168.2.0/24 via 192.168.1.10

exit 0

Текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюза GW2

#!/bin/bash

# Script to run during BACKUP transit

ip route add 192.168.2.0/24 via 192.168.1.10

exit 0

Текст скрипта /etc/keepalived/scripts/notify_master для шлюза GW3

#!/bin/bash

# Script to run during MASTER transit

ip route del 192.168.1.0/24 via 192.168.2.10

exit 0

Текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюза GW3

#!/bin/bash

# Script to run during BACKUP transit

ip route add 192.168.1.0/24 via 192.168.2.10

exit 0

Текст скрипта /etc/keepalived/scripts/notify_master для шлюза GW4

#!/bin/bash

# Script to run during MASTER transit

ip route del 192.168.1.0/24 via 192.168.2.10

exit 0

Текст скриптов /etc/keepalived/scripts/notify_backup и /etc/keepalived/scripts/notify_fault для шлюза GW4

#!/bin/bash

# Script to run during BACKUP transit

ip route add 192.168.1.0/24 via 192.168.2.10

exit 0