Совместное использование «С-Терра L2» и VRRP в топологии «звезда»
Настоящий документ содержит описание способа совместного использования Продуктов компании ООО
«С-Терра СиЭсПи» и Продуктов третьих производителей.
ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.
Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.
Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах
только после тестовой и/или опытной эксплуатации.
Сценарий иллюстрирует построение защищенного соединения между тремя сегментами одной сети 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.
Начальная настройка шлюза в 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).
Обновление пакета возможно только на шлюзах, имеющих класс СКЗИ не выше КС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.
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.
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 конфигурация будет аналогична за исключением нескольких параметров.
Изменится название шлюза:
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.
Настройка кластеров № 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 настраиваются только IP-адреса интерфейсов в соответствии с рисунком 1.
На устройстве IPHost1 необходимо задать IP-адрес – 192.168.1.101.
На устройстве IPHost2 необходимо задать IP-адрес – 192.168.1.102.
На устройстве 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
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
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
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
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
!
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
!
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
# 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
)
# 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
)
# 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
)
# 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
)
# 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
)
# 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
)
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
}
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
}
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
}
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
}
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
}
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
}
#!/bin/bash
ifconfig tap0 up
ifconfig tap1 up
exit 0
#!/bin/bash
ifconfig tap0 up
exit 0
#!/bin/bash
ifconfig tap0 down
ifconfig tap1 down
exit 0
#!/bin/bash
ifconfig tap0 down
exit 0
vif tap0
bridge br0
capture eth0
remote 10.1.0.1
port 10001
mssfix 1400
passtos
vif tap1
bridge br0
capture eth0
remote 10.2.0.1
port 10002
mssfix 1400
passtos
vif tap0
bridge br0
capture eth1
remote 10.0.0.1
port 10001
mssfix 1400
passtos
vif tap0
bridge br0
capture eth1
remote 10.0.0.1
port 10002
mssfix 1400
passtos