Построение L2 VPN туннеля в топологии Full Mesh при помощи программного модуля «С-Терра L2»
Настоящий документ содержит описание способа совместного использования Продуктов компании ООО «С-Терра СиЭсПи» и Продуктов третьих производителей.
ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов. Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.
Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах только после тестовой и/или опытной эксплуатации.
Архив с установочным файлом "С-Терра L2":
sterra_l2_4.3.23255.amd64.rarДанный сценарий описывает настройку безопасного взаимодействия на уровне 2 модели OSI (L2 VPN) в полносвязной топологии (full mesh). Широковещательный домен будет распределен между центральным офисом, филиалом №1 и филиалом №2.
Обеспечение безопасного взаимодействия достигается путем шифрования и туннелирования трафика с применением отечественных отраслевых стандартов ГОСТ и протокола IPsec.
Все остальные соединения разрешены, но защищаться при помощи IPsec не будут.
В рамках данного сценария для аутентификации партнеры будут использовать сертификаты. В качестве криптопровайдера будет использована криптографическая библиотека, разработанная компанией «С-Терра СиЭсПи». Шлюзы безопасности (или криптошлюзы) - «С-Терра Шлюз» версии 4.3.
Для переноса запросов и сертификатов между криптошлюзами и центром выпуска сертификатов требуется USB Flash накопитель.
Требования к квалификации администратора
Администратор должен обладать обширными знаниями в области сетевой информационной безопасности, иметь опыт работы с аналогичным оборудованием/программным обеспечением, знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall, routing, switching.
Также администратор должен иметь опыт развертывания базового сценария L2 VPN, который описан в документе «Построение L2 VPN туннеля при помощи программного модуля С-Терра L2».
1. Требования к устройствам (см. рисунок 1).
1.1. С-Терра Шлюз.
1.1.1 Устройства С-Терра Шлюз должны быть инициализированы (подробнее на http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз 4.3 -> «Подключение ПАК и инициализация С-Терра Шлюз на вычислительных системах архитектуры Intel x86-64»).
1.2. Центр выпуска сертификатов.
1.2.1 Должен быть настроен центр выпуска сертификатов (удостоверяющий центр, далее УЦ) для IPsec. Устройство с именем Certification_authority на схеме.
1.2.2 Для выпуска цифровых сертификатов допускается использование встроенного в OC Windows Server 2008R2 (или новее) удостоверяющего центра совместно с сертифицированным СКЗИ «КриптоПро» CSP 4.0 (или новее).
1.2.3 Для тестовых целей можно использовать тестовый УЦ от «КриптоПро» (веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp).
Категорически запрещено использование тестового УЦ от «КриптоПро» в производственной (боевой) эксплуатации, так как в данном случае отсутствует возможность контролировать процесс выпуска сертификатов и, соответственно, процедуру аутентификации.
1.3. HTTP сервер для распространения списка отозванных сертификатов.
1.3.1 Функционирующий HTTP сервер для распространения списка отозванных сертификатов (СОС). Устройство с именем CRL_distribution_point на схеме. Если по объективным причинам использование СОС не представляется возможным или не требуется, то проверку СОС можно отключить в CLI.
Доставка нового списка отозванных сертификатов с удостоверяющего центра на HTTP сервер должна происходить заблаговременно, до истечения срока действия предыдущего списка.
2. Требования к сетевому взаимодействию.
2.1. Между криптошлюзами должна быть обеспечена IP связность.
Рисунок 1. Схема взаимодействия
1. Размещение устройств.
1.1. В центральном офисе размещаются: центр выпуска сертификатов (Certification_authority), криптошлюз С-Терра Шлюз (Hub1), управляемый коммутатор (Int_switch1_Hub1) и персональный компьютер (host0-behind-hub1).
1.2. В филиале №1 размещаются: криптошлюз С-Терра Шлюз (Spoke1), управляемый коммутатор (Int_switch1_Spoke1) и персональный компьютер (host0-behind-spoke1).
1.3. В филиале №2 размещаются: криптошлюз С-Терра Шлюз (Spoke2), управляемый коммутатор (Int_switch1_Spoke2) и персональный компьютер (host0-behind-spoke2).
1.4. В неконтролируемом сегменте (синее облако на схеме) размещаются: HTTP сервер для распространения списка отозванных сертификатов (CRL_distribution_point), маршрутизатор (Router1).
2. Подключение к сети Интернет.
2.В данном сценарии для эмуляции сети Интернет используются маршрутизатор Router1.
Подключение к сети Интернет на устройствах С-Терра Шлюз будет считаться успешным, если по протоколу ICMP (или «ping») будет доступен HTTP сервер для распространения списка отозванных сертификатов (устройство CRL_distribution_point на схеме).
2.1. Криптошлюз Hub1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).
2.2. Криптошлюз Spoke1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).
2.3. Криптошлюз Spoke2 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).
3. L2 VPN.
Подробное описание модуля «С-Терра L2» представлено в базовом сценарии «Построение L2 VPN туннеля при помощи программного модуля С-Терра L2».
В данной части будет представлено только описание, касающееся логики работы полносвязной (full mesh) топологии.
Полносвязная топология обеспечивается путем ручной настройки статических туннелей (как L2, так и IPsec) по принципу «каждый с каждым» без выделенного центра.
Защита от петель обеспечивается путем автоматической фильтрации трафика (параметр loop_protection в значении splithorizon) по следующему принципу - трафик с виртуальных tapN интерфейсов может быть передан только в capture интерфейс, то есть трафик не передается между виртуальными tapN интерфейсами.
BUM (broadcast, unknown unicast, multicast) трафик распространяется между всеми частями широковещательного домена, то есть криптошлюзами.
Для управления криптошлюзами из защищаемой подсети будет использоваться capture интерфейс, реализуется путем задания IP адреса на виртуальном bridge интерфейсе (на схеме не отражено). Также для целей управления можно использовать выделенный сетевой mgmt интерфейс.
4. Параметры безопасного взаимодействия.
Весь трафик (на уровне 2 модели OSI) подсети 192.168.100.0/24, который передается между криптошлюзами, защищается с использованием алгоритмов ГОСТ и протокола IPsec в туннельном режиме.
Инициировать защищенное соединение может трафик из-под любого криптошлюза.
4.1. Параметры протокола IKE:
· Аутентификация при помощи цифровых сертификатов, алгоритм подписи - ГОСТ Р 34.10-2012 (ключ 256 бит);
· Алгоритм шифрования - ГОСТ 28147-89 (ключ 256 бит);
· Алгоритм вычисления хеш-функции - ГОСТ Р 34.11-2012 ТК26 (ключ 256 бит);
· Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) - VKO_GOSTR3410_2012_256 (ключ 256 бит).
4.2. Параметры протокола ESP:
· Комбинированный алгоритм шифрования и имитозащиты (контроль целостности) - ESP_GOST-4M-IMIT (ключ 256 бит).
1. Настройте IP адрес - 172.16.100.1 и маску - 255.255.255.0 на сетевом интерфейсе ens192.
2. Настройте IP адрес - 172.16.2.1 и маску - 255.255.255.0 на сетевом интерфейсе ens224.
3. Настройте IP адрес - 172.16.1.1 и маску - 255.255.255.0 на сетевом интерфейсе ens256.
4. Разрешите прохождение IP трафика.
1. Интерфейс gi0/0 должен быть в trunk режиме. Должно быть разрешено прохождения фреймов с нужными VLAN ID.
2. Интерфейс gi0/1 должен быть в access режиме.
1. Интерфейс gi0/0 должен быть в trunk режиме. Должно быть разрешено прохождения фреймов с нужными VLAN ID.
2. Интерфейс gi0/1 должен быть в access режиме.
1. Интерфейс gi0/0 должен быть в trunk режиме. Должно быть разрешено прохождения фреймов с нужными VLAN ID.
2. Интерфейс gi0/1 должен быть в access режиме.
1. Настройте IP адрес - 192.168.100.100 и маску - 255.255.255.0 на сетевом интерфейсе.
2. Разрешите прием и отправку ICMP пакетов.
1. Настройте IP адрес - 192.168.100.101 и маску - 255.255.255.0 на сетевом интерфейсе.
2. Разрешите прием и отправку ICMP пакетов.
1. Настройте IP адрес - 192.168.100.102 и маску - 255.255.255.0 на сетевом интерфейсе.
2. Разрешите прием и отправку ICMP пакетов.
Настройка будет происходить локально при помощи консольного подключения.
Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсеть 192.168.100.0/24). Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec (например, после настройки шифрования разрешается выполнять настройку критошлюза Spoke1 из центрального офиса).
Дата и время на всех криптошлюзах и УЦ должны быть одинаковы, так как для аутентификации используются цифровые сертификаты, в которых зафиксированы дата и время начала их действия и окончания. Также одинаковые дата и время на всей инфраструктуре облегчают поиск неисправностей по лог-файлам.
1. Войдите в CLI разграничения доступа. Для этого, после появления сообщения:
S-Terra administrative console
введите логин и пароль для CLI разграничения доступа:
Пользователь и пароль по умолчанию: administrator, s-terra. Обязательно смените пароль для пользователя administrator при помощи команды change user password.
login as: administrator
administrator's password:
administrator@sterragate]
2. Установите правильный тип терминала (для putty тип терминала xterm) и требуемую ширину (для удобства работы), например:
administrator@sterragate] terminal terminal-type xterm
administrator@sterragate] terminal width 150
3. Установите нужную временную зону и правильные дату и время на криптошлюзе, используя консоль linux bash. Для этого выполните следующие команды.
3.1. Войдите в linux bash.
administrator@sterragate] system
Entering system shell...
3.2. Установите нужную временную зону:
root@sterragate:~# dpkg-reconfigure tzdata
3.3. Установите правильное время и дату (формат - месяц/день/год часы:минуты):
root@sterragate:~# date -s "07/04/2019 12:32"
Thu Jul 4 12:32:00 MSK 2019
4. Установите надежный пароль для пользователя root (под данным пользователем осуществляется доступ по SSH в linux bash):
root@sterragate:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
5. Выйдите из linux bash обратно в CLI разграничения доступа:
root@sterragate:~# exit
logout
Leaving system shell...
administrator@sterragate]
Начальные настройки завершены.
Продукт не поддерживает разностные (delta) списки отзыва сертификатов, только базовые. Учитывайте это при выборе или развертывании УЦ.
Для аутентификации партнеров по IPsec можно использовать только цифровые сертификаты, выпущенные при помощи сертифицированного СКЗИ.
Аутентификация по предопределенным ключам запрещена и возможна только в тестовых целях.
Закрытый ключ для сертификата криптошлюза будет сгенерирован при помощи утилиты cert_mgr с использованием биологического датчика случайных чисел (БИО ДСЧ). Если на криптошлюзе установлен аппаратный датчик случайных чисел, то для выработки случайных чисел по умолчанию будет использоваться аппаратный датчик. Закрытый ключ может храниться либо на файловой системе устройства, либо на защищенном ключевом носителе (токен). В данном сценарии закрытый ключ будет располагаться в специальном контейнере на файловой системе устройства. Если требуется, чтобы контейнер располагался на токене, то смотрите описание параметра create утилиты cert_mgr на портале документации http://doc.s-terra.ru.
В момент генерации ключевой пары будет также сгенерирован запрос на локальный сертификат криптошлюза. Данный запрос для его последующей доставки на УЦ будет сохранен на USB Flash накопитель.
Настройка осуществляется в CLI разграничения доступа.
При выполнении сторонних команд в CLI разграничения доступа/консоли cisco-like перед командой нужно указывать ключевое слово run. Автодополнение для команд, указываемых после run не поддерживается.
1. Генерация закрытого ключа и запроса на сертификат криптошлюза.
1.1. Вставьте USB Flash накопитель в свободный USB порт криптошлюза (накопитель будет автоматически примонтирован).
1.2. Определите имя (идентификатор) USB Flash накопителя на криптошлюзе:
administrator@sterragate] dir media:
1 dr-x 4096 Thu Jul 4 10:40:32 2019 1482-7CB1
Имя (идентификатор) USB Flash накопителя - 1482-7CB1.
1.3. Запустите процесс генерации закрытого ключа и запроса на сертификат криптошлюза с сохранением файла запроса на USB Flash накопителе (закрытый ключ остается на криптошлюзе):
administrator@sterragate] run cert_mgr create -subj "C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1" -GOST_R341012_256 -fb64 media:1482-7CB1/hub1.request
· ключ -subj задает отличительное имя сертификата (Distinguished Name, DN);
Отличительное имя сертификата должно быть уникальным для каждого устройства.
· ключ -GOST_R341012_256 задает использование алгоритма подписи - ГОСТ Р 34.10-2012 (ключ 256 бит).
На УЦ для поддержки алгоритма ГОСТ Р 34.10-2012 (ключ 256 бит) должно быть установлено СКЗИ «КриптоПро CSP» версии 4.0 или новее.
· ключ -fb64 задает месторасположение и формат представления запроса на сертификат; будет использован формат представления BASE64 с сохранением файла запроса в корень USB Flash накопителя под именем hub1.request.
Нажимайте предлагаемые клавиши на клавиатуре для инициализации БИО ДСЧ:
Progress: [********* ]
Press key: U
После завершения работы БИО ДСЧ файл запроса будет сохранен в корне USB Flash накопителя:
administrator@sterragate] dir media:1482-7CB1/
1 -rwx 473 Thu Jul 4 10:40:32 2019 hub1.request
Настоятельно рекомендуется сохранить контейнер закрытого ключа при помощи утилиты cont_mgr. Контейнер может понадобиться в случае восстановления криптошлюза при отказе HDD/SSD диска. Носитель с файлом контейнера нужно хранить в защищенном и недоступном для третьих лиц месте.
1.4. Отмонтируйте и извлеките USB Flash накопитель (посмотреть точки монтирования можно при помощи команды run mount):
administrator@sterragate] run umount /media/1482-7CB1
2. Выпуск сертификата криптошлюза на УЦ и импортирование сертификатов УЦ и криптошлюза в базу Продукта.
2.1. Доставьте файл запроса на УЦ и выпустите по нему сертификат криптошлюза.
2.2. Скопируйте выпущенный сертификат для криптошлюза под именем hub1.cer и сертификат УЦ под именем ca.cer в корень USB Flash накопителя.
2.3. Вновь вставьте USB Flash накопитель, содержащий файлы сертификатов, в свободный порт USB на криптошлюзе.
2.4. Убедитесь в наличии сертификатов на USB Flash накопителе:
administrator@sterragate] dir media:1482-7CB1/
1 -rwx 592 Thu Jul 4 10:40:32 2019 ca.cer
2 -rwx 804 Thu Jul 4 10:40:32 2019 hub1.cer
3 -rwx 473 Thu Jul 4 10:40:32 2019 hub1.request
Сохраняйте сертификаты. Они могу понадобиться в случае восстановления криптошлюза при отказе HDD/SSD диска.
2.5. Импортируйте сертификат УЦ в базу Продукта:
administrator@sterragate] run cert_mgr import -f media:1482-7CB1/ca.cer -t
· ключ -f задает месторасположение файла сертификата;
· ключ -t используется для импортирования доверенного (trusted) сертификата УЦ.
2.6. Импортируйте сертификат криптошлюза в базу Продукта:
administrator@sterragate] run cert_mgr import -f media:1482-7CB1/hub1.cer
2.7. Убедитесь, что сертификаты успешно импортированы в базу Продукта:
administrator@sterragate] run cert_mgr show
Found 2 certificates. No CRLs found.
1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 Status: local C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
Видно, что сертификат УЦ импортирован как trusted, а сертификат криптошлюза как local (local означает, что для данного сертификата есть соответствующий ключевой контейнер).
2.8. Выполните проверку статуса сертификатов в базе Продукта:
administrator@sterragate] run cert_mgr check
1 State: Inactive C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Certificate can not be verified.
2 State: Inactive C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
Certificate can not be verified.
Видно, что все сертификаты имеют статус Inactive (неактивный) с пометкой: «Certificate can not be verified» (сертификат не может быть проверен). Причиной этому является включенный по умолчанию в консоли cisco-like механизм проверки списка отозванных сертификатов (далее СОС или CRL). Так как в базе Продукта СОС отсутствует, поэтому проверка не может быть осуществлена. Далее будет описан процесс настройки автоматической загрузки СОС и импортирование его в базу Продукта. Загрузка СОС осуществляется по протоколу HTTP с заданной периодичностью.
1. Войдите в cisco-like консоль из CLI разграничения доступа:
Пользователь и пароль по умолчанию cscons, csp. Обязательно смените пароль для пользователя cscons, так как под этим пользователем осуществляется доступ по SSH в cisco-like консоль. Также не забудьте сменить enable пароль.
administrator@sterragate] configure
sterragate login: cscons
Password:
S-Terra Gate 4.3.XXXXX (amd64)
sterragate#
2. Смените пароль для пользователя cscons и на enable:
sterragate#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
sterragate(config)#username cscons secret 0 ПАРОЛЬ
sterragate(config)#enable secret 0 ПАРОЛЬ
Изменение состояния интерфейсов и назначение IP адресов в cisco-like консоли применяются сразу после ввода соответствующих команд. Политика безопасности применяются после выхода из режима конфигурирования.
1. Задайте имя устройства:
sterragate(config)#hostname Hub1
2. Включите внешний GigabitEthernet0/0 и внутренний GigabitEthernet0/1 интерфейсы:
Hub1(config)#interface range GigabitEthernet 0/0 - 1
Hub1(config-if-range)#no shutdown
Hub1(config-if-range)#exit
3. Убедитесь, что интерфейсы административно включены и line protocol (способность интерфейса передавать пакеты в данный момент) находится в состоянии up:
Hub1(config)#do show interfaces
GigabitEthernet0/0 is up, line protocol is up
Hardware address is 0050.569e.b06d
MTU 1500 bytes
GigabitEthernet0/1 is up, line protocol is up
Hardware address is 0050.569e.d3c3
MTU 1500 bytes
...
Если line protocol находится в состоянии down, то проверьте подключение сетевого интерфейса криптошлюза к коммутационному или прочему оборудованию.
4. Задайте IP адрес в соответствии со схемой стенда на внешнем GigabitEthernet0/0 интерфейсе:
Hub1(config)#interface GigabitEthernet 0/0
Hub1(config-if)#ip address 172.16.100.2 255.255.255.0
Hub1(config-if)#exit
5. Задайте маршрут по умолчанию через устройство Router1:
Hub1(config)#ip route 0.0.0.0 0.0.0.0 172.16.100.1
6. Проверьте доступность устройства Router1 и выйдите из cisco-like консоли:
Hub1(config)#do ping 172.16.100.1
PING 172.16.100.1 (172.16.100.1) 100(128) bytes of data.
108 bytes from 172.16.100.1: icmp_seq=1 ttl=64 time=1.13 ms
108 bytes from 172.16.100.1: icmp_seq=2 ttl=64 time=0.237 ms
108 bytes from 172.16.100.1: icmp_seq=3 ttl=64 time=0.192 ms
108 bytes from 172.16.100.1: icmp_seq=4 ttl=64 time=0.200 ms
108 bytes from 172.16.100.1: icmp_seq=5 ttl=64 time=0.299 ms
--- 172.16.100.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4078ms
rtt min/avg/max/mdev = 0.192/0.411/1.131/0.362 ms
Hub1(config)#end
Hub1#exit
administrator@Hub1]
Документация на «С-Терра L2» доступна по ссылке http://doc.s-terra.com/rh_output/4.3/L2/output/.
1. Перейдите в linux bash:
administrator@Hub1] system
Entering system shell...
root@Hub1:~#
2. Скопируйте Вашу лицензию на «С-Терра L2» в файл /opt/l2svc/etc/l2.lic:
root@Hub1:~# vim.tiny /opt/l2svc/etc/l2.lic
[license]
CustomerCode=XXXXX
ProductCode=L2VPN
LicenseNumber=XXXXX
LicenseCode=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
3. Создание конфигурационных файлов «С-Терра L2» для перехвата и инкапсуляции фреймов между криптошлюзами.
3.1. Создайте конфигурационный файл /opt/l2svc/etc/to_spoke1.conf для инкапсуляции трафика между Hub1 и Spoke1:
Если в качестве capture интерфейса указать физический интерфейс (например eth0), то все фреймы, пришедшие на данный интерфейс, будут перехвачены вне зависимости от их VLAN ID. Контролируйте поступающие фреймы в capture интерфейс на trunk порту коммутатора настройками VLAN фильтрации.
root@Hub1:~# vim.tiny /opt/l2svc/etc/to_spoke1.conf
vif tap0
bridge br0
bridge_ip 192.168.100.1/24
loop_protection splithorizon
capture eth1
local 172.16.100.2
remote 172.16.1.2
port 50000
mssfix 1400
passtos
3.2. Создайте конфигурационный файл /opt/l2svc/etc/to_spoke2.conf для инкапсуляции трафика между Hub1 и Spoke2:
root@Hub1:~# vim.tiny /opt/l2svc/etc/to_spoke2.conf
vif tap1
bridge br0
bridge_ip 192.168.100.1/24
loop_protection splithorizon
capture eth1
local 172.16.100.2
remote 172.16.2.2
port 50001
mssfix 1400
passtos
Обратите внимание, что в конфигурационных файлах различаются только значения параметров vif, remote и port.
4. Запустите сервис l2svc и добавьте его в автозапуск:
root@Hub1:~# systemctl start l2svc.service
root@Hub1:~# systemctl enable l2svc.service
Created symlink /etc/systemd/system/default.target.wants/l2svc.service → /lib/systemd/system/l2svc.service.
root@Hub1:~# systemctl status l2svc.service
● l2svc.service - S-Terra L2 Tunneling Service
Loaded: loaded (/lib/systemd/system/l2svc.service; enabled; vendor preset: en
Active: active (exited) since Wed 2020-03-04 04:43:23 MSK; 18s ago
Main PID: 1688 (code=exited, status=0/SUCCESS)
Mar 04 04:43:23 Hub1 systemd[1]: Starting S-Terra L2 Tunneling Service...
Mar 04 04:43:23 Hub1 systemd[1]: Started S-Terra L2 Tunneling Service.
5. Убедитесь, что необходимые виртуальные сетевые интерфейсы (tap0/tap1/br0) созданы; capture и vif интерфейсы (tap0/tap1/eth1) переведены в promisc режим; выставлен IP адрес на интерфейсе br0:
root@Hub1:~# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:9e:b2:61 brd ff:ff:ff:ff:ff:ff
inet 172.16.100.2/24 brd 172.16.100.255 scope global eth0
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:50:56:9e:99:5d brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:50:56:9e:e2:13 brd ff:ff:ff:ff:ff:ff
5: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether ee:22:1a:ef:b5:98 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:56:9e:99:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.100.1/24 scope global br0
valid_lft forever preferred_lft forever
7: tap1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether f6:f6:a1:56:5a:6e brd ff:ff:ff:ff:ff:ff
Если по какой-то причине интерфейсы на создались или произошли другие ошибки, то можно посмотреть информацию о проблеме при помощи команды:
root@Hub1:~# journalctl -xe -u l2svc_s@<L2_CONIG_NAME>.service
где <L2_CONIG_NAME> - имя конфигурационного файла L2 без «.conf», например to_spoke1:
root@Hub1:~# journalctl -xe -u l2svc_s@to_spoke1.service
May 20 23:43:44 Hub1 l2svc[3172]: Wed May 20 23:43:44 2020 l2svc: S-Terra L2 for Linux 4.3.20827
May 20 23:43:44 Hub1 l2svc[3172]: Wed May 20 23:43:44 2020 l2svc: TAP device tap0 opened
May 20 23:43:44 Hub1 l2svc[3172]: Wed May 20 23:43:44 2020 l2svc: tunnel local (bound): 172.16.100.2:50000
May 20 23:43:44 Hub1 l2svc[3172]: Wed May 20 23:43:44 2020 l2svc: tunnel remote: 172.16.1.2:50000
May 20 23:43:44 Hub1 systemd[1]: Started S-Terra L2 Tunneling Service for to_spoke1.
6. Перейдите в CLI разграничения доступа из linux bash и далее в режим конфигурирования cisco-like консоли:
root@Hub1:~# exit
logout
Leaving system shell...
administrator@Hub1] configure
Hub1 login: cscons
Password:
Last login: Mon Mar 2 15:00:48 MSK 2020 on pts/0
S-Terra Gate 4.3.XXXXX (amd64)
Hub1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
1. Параметры IKE.
1.1. Укажите в качестве типа идентификатора, используемого в рамках протокола IKE, отличительное имя (Distinguished Name, DN):
Hub1(config)#crypto isakmp identity dn
По умолчанию отличительное имя будет взято из сертификата устройства, например, для Hub1 это «C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1».
1.2. Настройте параметры DPD (deep peer detection):
Hub1(config)#crypto isakmp keepalive 3 2
Hub1(config)#crypto isakmp keepalive retry-count 5
Пояснение:
Если в течение 3 секунд отсутствует входящий трафик в IPsec туннеле, то с интервалом в 2 секунды посылается 5 keepalive пакетов в рамках IKE туннеля, чтобы удостовериться в работоспособности туннеля. Если партнер не отвечает на keepalive пакеты, то соответствующий IKE туннель и связанные с ним IPsec туннели уничтожаются. В случае наличия исходящего защищаемого трафика происходит попытка создания новых IKE/IPsec туннелей.
1.3. Включите фрагментацию IKE пакетов:
Hub1(config)#crypto isakmp fragmentation
1.4. Включите случайный разброс времени жизни IKE и IPsec SA, чтобы снизить нагрузку на шлюз (позволяет избежать единовременное массовое пересоздания SA):
Hub1(config)#crypto isakmp security-association lifetime delta 50
1.5. Увеличьте допустимое количество одновременно инициируемых IKE сессий (не путать с общим количеством IKE сессий) для всех партнёров (значение по умолчанию 30):
Hub1(config)#crypto isakmp initiator-sessions-max 100
1.6. Увеличьте допустимое количество одновременных IKE обменов, проводимых шлюзом со всеми партнерами в качестве ответчика (не путать с общим количеством IKE сессий; значение по умолчанию 20):
Hub1(config)#crypto isakmp responder-sessions-max 100
1.7. Создайте политику, описывающую параметры IKE туннеля:
Hub1(config)#crypto isakmp policy 1
Hub1(config-isakmp)# encryption gost
Hub1(config-isakmp)# hash gost341112-256-tc26
Hub1(config-isakmp)# authentication gost-sig
Hub1(config-isakmp)# group vko2
Hub1(config-isakmp)# exit
Рекомендуется использовать одну политику для IKE туннелей. Несколько политик может потребоваться в том случае, если необходимо обеспечить совместимость со старыми версиями Продуктов, в которых нет поддержки новых алгоритмов.
2. Параметры IPsec.
2.1. Задайте комбинированный алгоритм шифрования и имитозащиты (набор преобразований) для трафика:
Hub1(config)# crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit
Hub1(cfg-crypto-trans)#exit
2.2. Создайте список доступа (ACL) для трафика, который нужно защищать между центральным офисом и филиалом №1:
Hub1(config)#ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1
Hub1(config-ext-nacl)# permit udp host 172.16.100.2 eq 50000 host 172.16.1.2 eq 50000
Hub1(config-ext-nacl)#exit
Hub1(config)#
2.3. Создайте список доступа (ACL) для трафика, который нужно защищать между центральным офисом и филиалом №2:
Hub1(config)#ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE2
Hub1(config-ext-nacl)# permit udp host 172.16.100.2 eq 50001 host 172.16.2.2 eq 50001
Hub1(config-ext-nacl)#exit
Hub1(config)#
2.4. Создайте крипто-карту (имя VPN, раздел 1) для защиты трафика между Hub1 и Spoke1:
Hub1(config)#crypto map VPN 1 ipsec-isakmp
2.4.1 Укажите список доступа для защищаемого трафика:
Hub1(config-crypto-map)# match address IPSEC_ACl_HUB1_AND_SPOKE1
2.4.2 Укажите при помощи какого набора алгоритмов нужно защищать трафик:
Hub1(config-crypto-map)# set transform-set GOST_ENCRYPT_AND_INTEGRITY
2.4.3 Укажите IP адрес партнера по IPsec, в данном сценарии это внешний IP адрес устройства Spoke1:
Hub1(config-crypto-map)# set peer 172.16.1.2
2.4.4 Увеличьте лимит по трафику до максимального значения для IPsec SA:
Hub1(config-crypto-map)#set security-association lifetime kilobytes 4294967295
2.4.5 Обязательно отключите историю удаленных туннелей (если не отключить, то могут быть проблемы с построением IPsec туннелей с устройствами, которые находятся за NAT):
Hub1(config-crypto-map)# set dead-connection history off
Hub1(config-crypto-map)#exit
2.5. Создайте крипто-карту (имя VPN, раздел 2) для защиты трафика между Hub1 и Spoke2:
Hub1(config)#crypto map VPN 2 ipsec-isakmp
Hub1(config-crypto-map)# match address IPSEC_ACl_HUB1_AND_SPOKE2
Hub1(config-crypto-map)# set transform-set GOST_ENCRYPT_AND_INTEGRITY
Hub1(config-crypto-map)# set peer 172.16.2.2
Hub1(config-crypto-map)# set security-association lifetime kilobytes 4294967295
Hub1(config-crypto-map)# set dead-connection history off
Hub1(config-crypto-map)#exit
2.6. Прикрепите созданную крипто-карту VPN к внешнему интерфейсу GigabitEthernet0/0:
Hub1(config)#interface GigabitEthernet0/0
Hub1(config-if)# crypto map VPN
2.7. Примените настройки:
Hub1(config-if)#end
В целях безопасности настоятельно рекомендуется включать проверку списков отзыва сертификатов. Разностные списки отозванных сертификатов (delta CRL) не поддерживаются.
1. Включите проверку СОС:
Hub1#configure terminal
Hub1(config)# crypto pki trustpoint s-terra_technological_trustpoint
Hub1(ca-trustpoint)# revocation-check crl
Если по обоснованным причинам использование СОС невозможно, то выключите проверку СОС и не включайте автоматическую загрузку СОС:
Hub1(ca-trustpoint)# revocation-check none
2. Включите автоматическую загрузку и импортирование в базу Продукта списка отозванных сертификатов с HTTP сервера CRL_distribution_point:
Hub1(ca-trustpoint)# crl download group ROOTCA http://172.16.101.15/certcrl.crl
3. Настройте периодичность загрузки СОС в 60 минут (по умолчанию 24 часа):
Hub1(ca-trustpoint)# crl download time 60
4. Примените настройки:
Hub1(ca-trustpoint)#end
5. Проверьте загружен ли СОС в базу Продукта:
Hub1#run cert_mgr show
Found 2 certificates. Found 1 CRL.
1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 Status: local C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
3 CRL: C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Если СОС не загрузился, то проверьте файл журнала, например:
Hub1#run grep getcrls_daemon /var/log/cspvpngate.log
Примечание: чтобы не ждать следующего периода загрузки СОС можно перезапустить сервис getcrls вручную:
Hub1#run systemctl restart getcrls.service
6. Выполните проверку статуса сертификатов в базе Продукта:
Hub1#run cert_mgr check
1 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
Настройка криптошлюза Hub1 завершена.
В Приложении представлены тексты конфигураций для криптошлюза Hub1:
· текст консоли cisco-like;
· текст LSP;
· конфигурация «С-Терра L2».
Настройка криптошлюза Spoke1 происходит аналогично настройке Hub1.
В Приложении представлены тексты конфигураций для криптошлюза Spoke1:
· текст консоли cisco-like;
· текст LSP;
· конфигурация «С-Терра L2».
Настройка криптошлюза Spoke1 происходит аналогично настройке Hub1.
В Приложении представлены тексты конфигураций для криптошлюза Spoke2:
· текст консоли cisco-like;
· текст LSP;
· конфигурация «С-Терра L2».
Проверку работоспособности нужно выполнять после завершения настройки всех устройств стенда.
1. Проверьте, что с криптошлюзов Hub1, Spoke1, Spoke2 по ICMP доступен шлюз по умолчанию (Router1). Для этого выполните команду ping из cisco-like консоли криптошлюзов.
Hub1#ping 172.16.100.1
PING 172.16.100.1 (172.16.100.1) 100(128) bytes of data.
108 bytes from 172.16.100.1: icmp_seq=1 ttl=64 time=0.585 ms
108 bytes from 172.16.100.1: icmp_seq=2 ttl=64 time=0.407 ms
108 bytes from 172.16.100.1: icmp_seq=3 ttl=64 time=0.521 ms
108 bytes from 172.16.100.1: icmp_seq=4 ttl=64 time=0.535 ms
108 bytes from 172.16.100.1: icmp_seq=5 ttl=64 time=0.470 ms
--- 172.16.100.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4076ms
rtt min/avg/max/mdev = 0.407/0.503/0.585/0.065 ms
Spoke1#ping 172.16.1.1
PING 172.16.1.1 (172.16.1.1) 100(128) bytes of data.
108 bytes from 172.16.1.1: icmp_seq=1 ttl=64 time=1.80 ms
108 bytes from 172.16.1.1: icmp_seq=2 ttl=64 time=0.630 ms
108 bytes from 172.16.1.1: icmp_seq=3 ttl=64 time=0.382 ms
108 bytes from 172.16.1.1: icmp_seq=4 ttl=64 time=0.459 ms
108 bytes from 172.16.1.1: icmp_seq=5 ttl=64 time=0.388 ms
--- 172.16.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4077ms
rtt min/avg/max/mdev = 0.382/0.733/1.808/0.545 ms
Spoke2#ping 172.16.2.1
PING 172.16.2.1 (172.16.2.1) 100(128) bytes of data.
108 bytes from 172.16.2.1: icmp_seq=1 ttl=64 time=2.11 ms
108 bytes from 172.16.2.1: icmp_seq=2 ttl=64 time=0.438 ms
108 bytes from 172.16.2.1: icmp_seq=3 ttl=64 time=0.468 ms
108 bytes from 172.16.2.1: icmp_seq=4 ttl=64 time=0.460 ms
108 bytes from 172.16.2.1: icmp_seq=5 ttl=64 time=0.386 ms
--- 172.16.2.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4064ms
rtt min/avg/max/mdev = 0.386/0.772/2.112/0.671 ms
Видно, что устройство Router1 доступно по ICMP со всех криптошлюзов.
2. Проверьте, что с криптошлюза Hub1 доступены по ICMP криптошлюзы Spoke1 и Spoke2 (по внешним интерфейсам). Для этого выполните команду ping из cisco-like консоли криптошлюзов.
Hub1#ping 172.16.1.2
PING 172.16.1.2 (172.16.1.2) 100(128) bytes of data.
108 bytes from 172.16.1.2: icmp_seq=1 ttl=63 time=1.10 ms
108 bytes from 172.16.1.2: icmp_seq=2 ttl=63 time=1.06 ms
108 bytes from 172.16.1.2: icmp_seq=3 ttl=63 time=0.844 ms
108 bytes from 172.16.1.2: icmp_seq=4 ttl=63 time=0.981 ms
108 bytes from 172.16.1.2: icmp_seq=5 ttl=63 time=1.17 ms
--- 172.16.1.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.844/1.035/1.179/0.114 ms
Hub1#ping 172.16.2.2
PING 172.16.2.2 (172.16.2.2) 100(128) bytes of data.
108 bytes from 172.16.2.2: icmp_seq=1 ttl=63 time=0.966 ms
108 bytes from 172.16.2.2: icmp_seq=2 ttl=63 time=0.813 ms
108 bytes from 172.16.2.2: icmp_seq=3 ttl=63 time=1.10 ms
108 bytes from 172.16.2.2: icmp_seq=4 ttl=63 time=0.723 ms
108 bytes from 172.16.2.2: icmp_seq=5 ttl=63 time=0.919 ms
--- 172.16.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.723/0.904/1.103/0.135 ms
Видно, что с криптошлюза Hub1 доступны по ICMP криптошлюзы Spoke1 и Spoke2.
3. Проверьте, что с криптошлюза Spoke1 доступен по ICMP криптошлюз Spoke2 (по внешним интерфейсам). Для этого выполните команду ping из cisco-like консоли криптошлюза.
Spoke1#ping 172.16.2.2
PING 172.16.2.2 (172.16.2.2) 100(128) bytes of data.
108 bytes from 172.16.2.2: icmp_seq=1 ttl=63 time=1.87 ms
108 bytes from 172.16.2.2: icmp_seq=2 ttl=63 time=1.05 ms
108 bytes from 172.16.2.2: icmp_seq=3 ttl=63 time=0.940 ms
108 bytes from 172.16.2.2: icmp_seq=4 ttl=63 time=0.795 ms
108 bytes from 172.16.2.2: icmp_seq=5 ttl=63 time=0.950 ms
--- 172.16.2.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.795/1.123/1.878/0.388 ms
Видно, что с криптошлюза Spoke1 доступен по ICMP криптошлюз Spoke2.
4. Проверьте, что с защищаемых устройств host0-behind-hub1, host0-behind-spoke1, host0-behind-spoke2 доступны по ICMP IP адреса, заданные на виртуальных интерфейсах (br0) соответствующих криптошлюзов. Для этого выполните команду ping из linux bash консоли защищаемых устройств.
root@host0-behind-hub1:~# ping 192.168.100.1 -c 5
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=1.61 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.631 ms
64 bytes from 192.168.100.1: icmp_seq=3 ttl=64 time=0.623 ms
64 bytes from 192.168.100.1: icmp_seq=4 ttl=64 time=0.784 ms
64 bytes from 192.168.100.1: icmp_seq=5 ttl=64 time=0.742 ms
--- 192.168.100.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 0.623/0.877/1.609/0.372 ms
root@host0-behind-spoke1:~# ping 192.168.100.2 -c 5
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_seq=1 ttl=64 time=0.607 ms
64 bytes from 192.168.100.2: icmp_seq=2 ttl=64 time=0.513 ms
64 bytes from 192.168.100.2: icmp_seq=3 ttl=64 time=0.565 ms
64 bytes from 192.168.100.2: icmp_seq=4 ttl=64 time=0.528 ms
64 bytes from 192.168.100.2: icmp_seq=5 ttl=64 time=0.583 ms
--- 192.168.100.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 11ms
rtt min/avg/max/mdev = 0.513/0.559/0.607/0.037 ms
root@host0-behind-spoke2:~# ping 192.168.100.2 -c 5
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_seq=1 ttl=64 time=2.81 ms
64 bytes from 192.168.100.2: icmp_seq=2 ttl=64 time=2.36 ms
64 bytes from 192.168.100.2: icmp_seq=3 ttl=64 time=2.25 ms
64 bytes from 192.168.100.2: icmp_seq=4 ttl=64 time=2.23 ms
64 bytes from 192.168.100.2: icmp_seq=5 ttl=64 time=2.05 ms
--- 192.168.100.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 11ms
rtt min/avg/max/mdev = 2.051/2.339/2.813/0.264 ms
Видно, что с защищаемых устройств доступны по ICMP IP адреса, заданные на виртуальных интерфейсах (br0) соответствующих криптошлюзов.
1. Проверьте, что на криптошлюзах Hub1, Spoke1, Spoke2 СОС импортирован в базу Продукта. Для этого выполните команду run cert_mgr show из cisco-like консоли криптошлюзов.
Hub1#run cert_mgr show
Found 2 certificates. Found 1 CRL.
1 Status: local C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
2 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
3 CRL: C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Spoke1#run cert_mgr show
Found 2 certificates. Found 1 CRL.
1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 Status: local C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Spoke1
3 CRL: C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Spoke2#run cert_mgr show
Found 2 certificates. Found 1 CRL.
1 Status: trusted C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 Status: local C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Spoke2
3 CRL: C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Видно, что на криптошлюзах Hub1, Spoke1, Spoke2 СОС импортирован в базу Продукта. Если этого не произошло, то проверьте файл журнала (команда run grep getcrls_daemon /var/log/cspvpngate.log) и, при необходимости, перезапустите сервис автоматической загрузки СОС (команда run systemctl restart getcrls.service).
2. Проверьте, что на криптошлюзах Hub1, Spoke1, Spoke2 статус всех сертификатов Active. Для этого выполните команду run cert_mgr check из cisco-like консоли криптошлюзов.
Hub1#run cert_mgr check
1 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Hub1
2 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
Spoke1#run cert_mgr check
1 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Spoke1
Spoke2#run cert_mgr check
1 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA
2 State: Active C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=Spoke2
Видно, что на криптошлюзах Hub1, Spoke1, Spoke статус всех сертификатов Active. Если статус Inactive, то проверьте загружен ли СОС в базу Продукта и правильность установки даты и времени.
IPsec туннели могут быть построены автоматически при наличии трафика, например широковещательного.
1. Проверьте защищенное соединение между криптошлюзами Hub1 и Spoke1 при помощи ICMP трафика, посылаемого с устройства host0-behind-hub1 на host0-behind-spoke1 (можно и наоборот).
root@host0-behind-hub1:~# ping 192.168.100.101 -c 5
PING 192.168.100.101 (192.168.100.101) 56(84) bytes of data.
64 bytes from 192.168.100.101: icmp_seq=1 ttl=64 time=5.100 ms
64 bytes from 192.168.100.101: icmp_seq=2 ttl=64 time=3.39 ms
64 bytes from 192.168.100.101: icmp_seq=3 ttl=64 time=2.35 ms
64 bytes from 192.168.100.101: icmp_seq=4 ttl=64 time=3.41 ms
64 bytes from 192.168.100.101: icmp_seq=5 ttl=64 time=3.17 ms
--- 192.168.100.101 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 2.348/3.661/5.997/1.231 ms
2. Проверьте защищенное соединение между криптошлюзами Hub1 и Spoke2 при помощи ICMP трафика, посылаемого с устройства host0-behind-hub1 на host0-behind-spoke2 (можно и наоборот).
root@host0-behind-hub1:~# ping 192.168.100.102 -c 5
PING 192.168.100.102 (192.168.100.102) 56(84) bytes of data.
64 bytes from 192.168.100.102: icmp_seq=1 ttl=64 time=4.39 ms
64 bytes from 192.168.100.102: icmp_seq=2 ttl=64 time=3.63 ms
64 bytes from 192.168.100.102: icmp_seq=3 ttl=64 time=3.19 ms
64 bytes from 192.168.100.102: icmp_seq=4 ttl=64 time=2.88 ms
64 bytes from 192.168.100.102: icmp_seq=5 ttl=64 time=3.02 ms
--- 192.168.100.102 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 2.878/3.422/4.392/0.546 ms
3. Проверьте защищенное соединение между криптошлюзами Spoke1 и Spoke2 при помощи ICMP трафика, посылаемого с устройства host0-behind-spoke1 на host0-behind-spoke2 (можно и наоборот).
root@host0-behind-spoke1:~# ping 192.168.100.102 -c 5
PING 192.168.100.102 (192.168.100.102) 56(84) bytes of data.
64 bytes from 192.168.100.102: icmp_seq=1 ttl=64 time=4.81 ms
64 bytes from 192.168.100.102: icmp_seq=2 ttl=64 time=2.82 ms
64 bytes from 192.168.100.102: icmp_seq=3 ttl=64 time=2.54 ms
64 bytes from 192.168.100.102: icmp_seq=4 ttl=64 time=2.84 ms
64 bytes from 192.168.100.102: icmp_seq=5 ttl=64 time=2.86 ms
--- 192.168.100.102 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 2.540/3.174/4.805/0.823 ms
4. Проверьте, что на криптошлюзах Hub1, Spoke1, Spoke2 установлены защищенные IPsec соединения. Для этого выполните команду run sa_mgr show из cisco-like консоли криптошлюзов.
Hub1#run sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 2 (172.16.100.2,500)-(172.16.2.2,500) active 2328 2264
2 3 (172.16.100.2,500)-(172.16.1.2,500) active 2020 2100
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 2 (172.16.100.2,50001)-(172.16.2.2,50001) 17 ESP tunn 168 192
2 3 (172.16.100.2,50001)-(172.16.2.2,50001) 17 ESP tunn 960 832
3 4 (172.16.100.2,50000)-(172.16.1.2,50000) 17 ESP tunn 1032 1008
Spoke1#run sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 3 (172.16.1.2,500)-(172.16.100.2,500) active 2100 2020
2 4 (172.16.1.2,500)-(172.16.2.2,500) active 1900 1828
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 3 (172.16.1.2,50000)-(172.16.100.2,50000) 17 ESP tunn 1008 1032
2 4 (172.16.1.2,50002)-(172.16.2.2,50002) 17 ESP tunn 880 904
Spoke2#run 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 (172.16.2.2,500)-(172.16.100.2,500) active 2264 2328
2 3 (172.16.2.2,500)-(172.16.1.2,500) active 1828 1900
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 1 (172.16.2.2,50001)-(172.16.100.2,50001) 17 ESP tunn 192 168
2 2 (172.16.2.2,50001)-(172.16.100.2,50001) 17 ESP tunn 832 960
3 4 (172.16.2.2,50002)-(172.16.1.2,50002) 17 ESP tunn 904 880
Видно, что между всеми криптошлюзами установлены защищенные IPsec соединения (некоторые IPsec туннели могут дублироваться - это нормально). Если этого не произошло, то проверьте файл журнала (команда run less /var/log/cspvpngate.log). При необходимости увеличьте уровень логирования (команда logging trap debugging в консоли cisco-like) и заново инициируйте защищенное соединение.
Чтобы убедиться, что защищаемый трафик между криптошлюзами «ходит» напрямую, - запустите утилиту tcpdump на соответствующих виртуальных tapN интерфейсах (например tcpdump -i tap0 -n -e -vvv).
1. Консоль cisco-like:
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp fragmentation
crypto isakmp security-association lifetime delta 50
crypto isakmp initiator-sessions-max 100
crypto isakmp responder-sessions-max 100
crypto isakmp keepalive 3
crypto isakmp keepalive retry-count 5
username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOW
Zlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0
aaa new-model
!
!
hostname Hub1
enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit
!
ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1
permit udp host 172.16.100.2 eq 50000 host 172.16.1.2 eq 50000
!
ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE2
permit udp host 172.16.100.2 eq 50001 host 172.16.2.2 eq 50001
!
!
crypto map VPN 1 ipsec-isakmp
match address IPSEC_ACl_HUB1_AND_SPOKE1
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.1.2
set dead-connection history off
crypto map VPN 2 ipsec-isakmp
match address IPSEC_ACl_HUB1_AND_SPOKE2
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.2.2
set dead-connection history off
!
interface GigabitEthernet0/0
ip address 172.16.100.2 255.255.255.0
crypto map VPN
!
interface GigabitEthernet0/1
no ip address
!
interface GigabitEthernet0/2
no ip address
shutdown
!
!
ip route 0.0.0.0 0.0.0.0 172.16.100.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check crl
crl download group ROOTCA http://172.16.101.15/certcrl.crl
crl download time 60
crypto pki certificate chain s-terra_technological_trustpoint
certificate 58E026BFD6D625BE4582C16C6189C183
30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330
...
AD4F8901771632E0A0AF83
quit
!
end
2. Конфигурация LSP:
# This is automatically generated LSP
#
# Conversion Date/Time: Thu May 21 00:03:56 2020
GlobalParameters(
Title = "This LSP was automatically generated by CSP Converter at Thu May 21 00:03:56 2020 (user: cscons)"
Version = LSP_4_3
CRLHandlingMode = ENABLE
PreserveIPsecSA = FALSE
)
RoutingTable(
Routes =
Route(
Destination = 0.0.0.0/0
Gateway = 172.16.100.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 GOST_ENCRYPT_AND_INTEGRITY:ESP
(
Transform* = ESPTransform
(
CipherAlg* = "G2814789CPRO2-K288-CNTMAC-253"
LifetimeSeconds = 3600
LifetimeKilobytes = 4294967295
)
)
IKEParameters(
FragmentSize = 576
SALifetimeDelta = 50
InitiatorSessionsMax = 100
ResponderSessionsMax = 100
)
AuthMethodGOSTSign GOST:Sign
(
LocalID = IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )
SendRequestMode = ALWAYS
SendCertMode = ALWAYS
)
IKERule IKERule:VPN:1
(
IKEPeerIPFilter = 172.16.1.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 10
)
IKERule IKERule:VPN:2
(
IKEPeerIPFilter = 172.16.2.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 20
)
IPsecAction IPsecAction:VPN:1
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.1.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:1
)
IPsecAction IPsecAction:VPN:2
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.2.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:2
)
FilterChain IPsecPolicy:VPN (
Filters = Filter (
ProtocolID = 17
SourcePort = 500, 4500
Action = PASS
PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED
),
Filter (
SourceIP = 172.16.100.2
DestinationIP = 172.16.1.2
ProtocolID = 17
SourcePort = 50000
DestinationPort = 50000
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >
LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"
),
Filter (
Label = "VPN:2:IPSEC_ACl_HUB1_AND_SPOKE2"
SourceIP = 172.16.100.2
DestinationIP = 172.16.2.2
ProtocolID = 17
SourcePort = 50001
DestinationPort = 50001
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:2 >
LogEventID = "IPsec:Protect:VPN:2:IPSEC_ACl_HUB1_AND_SPOKE2"
)
)
NetworkInterface (
LogicalName = "GigabitEthernet0/0"
IPsecPolicy = IPsecPolicy:VPN
)
3. Конфигурация «С-Терра L2».
3.1. Файл /opt/l2svc/etc/to_spoke1.conf:
vif tap0
bridge br0
bridge_ip 192.168.100.1/24
loop_protection splithorizon
capture eth1
local 172.16.100.2
remote 172.16.1.2
port 50000
mssfix 1400
passtos
3.2. Файл /opt/l2svc/etc/to_spoke2.conf:
vif tap1
bridge br0
bridge_ip 192.168.100.1/24
loop_protection splithorizon
capture eth1
local 172.16.100.2
remote 172.16.2.2
port 50001
mssfix 1400
passtos
1. Консоль cisco-like:
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp fragmentation
crypto isakmp security-association lifetime delta 50
crypto isakmp initiator-sessions-max 100
crypto isakmp responder-sessions-max 100
crypto isakmp keepalive 3
crypto isakmp keepalive retry-count 5
username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOW
Zlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0
aaa new-model
!
!
hostname Spoke1
enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit
!
ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1
permit udp host 172.16.1.2 eq 50000 host 172.16.100.2 eq 50000
!
ip access-list extended IPSEC_ACl_SPOKE1_AND_SPOKE2
permit udp host 172.16.1.2 eq 50002 host 172.16.2.2 eq 50002
!
!
crypto map VPN 1 ipsec-isakmp
match address IPSEC_ACl_HUB1_AND_SPOKE1
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.100.2
set dead-connection history off
crypto map VPN 2 ipsec-isakmp
match address IPSEC_ACl_SPOKE1_AND_SPOKE2
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.2.2
set dead-connection history off
!
interface GigabitEthernet0/0
ip address 172.16.1.2 255.255.255.0
crypto map VPN
!
interface GigabitEthernet0/1
no ip address
!
interface GigabitEthernet0/2
no ip address
shutdown
!
!
ip route 0.0.0.0 0.0.0.0 172.16.1.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check crl
crl download group ROOTCA http://172.16.101.15/certcrl.crl
crl download time 60
crypto pki certificate chain s-terra_technological_trustpoint
certificate 58E026BFD6D625BE4582C16C6189C183
30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330
...
AD4F8901771632E0A0AF83
quit
!
end
2. Конфигурация LSP:
# This is automatically generated LSP
#
# Conversion Date/Time: Thu May 21 00:18:40 2020
GlobalParameters(
Title = "This LSP was automatically generated by CSP Converter at Thu May 21 00:18:40 2020 (user: cscons)"
Version = LSP_4_3
CRLHandlingMode = ENABLE
PreserveIPsecSA = FALSE
)
RoutingTable(
Routes =
Route(
Destination = 0.0.0.0/0
Gateway = 172.16.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 GOST_ENCRYPT_AND_INTEGRITY:ESP
(
Transform* = ESPTransform
(
CipherAlg* = "G2814789CPRO2-K288-CNTMAC-253"
LifetimeSeconds = 3600
LifetimeKilobytes = 4294967295
)
)
IKEParameters(
FragmentSize = 576
SALifetimeDelta = 50
InitiatorSessionsMax = 100
ResponderSessionsMax = 100
)
AuthMethodGOSTSign GOST:Sign
(
LocalID = IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )
SendRequestMode = ALWAYS
SendCertMode = ALWAYS
)
IKERule IKERule:VPN:1
(
IKEPeerIPFilter = 172.16.100.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 10
)
IKERule IKERule:VPN:2
(
IKEPeerIPFilter = 172.16.2.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 20
)
IPsecAction IPsecAction:VPN:1
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.100.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:1
)
IPsecAction IPsecAction:VPN:2
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.2.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:2
)
FilterChain IPsecPolicy:VPN (
Filters = Filter (
ProtocolID = 17
SourcePort = 500, 4500
Action = PASS
PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED
),
Filter (
SourceIP = 172.16.1.2
DestinationIP = 172.16.100.2
ProtocolID = 17
SourcePort = 50000
DestinationPort = 50000
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >
LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"
),
Filter (
Label = "VPN:2:IPSEC_ACl_SPOKE1_AND_SPOKE2"
SourceIP = 172.16.1.2
DestinationIP = 172.16.2.2
ProtocolID = 17
SourcePort = 50002
DestinationPort = 50002
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:2 >
LogEventID = "IPsec:Protect:VPN:2:IPSEC_ACl_SPOKE1_AND_SPOKE2"
)
)
NetworkInterface (
LogicalName = "GigabitEthernet0/0"
IPsecPolicy = IPsecPolicy:VPN
)
3. Конфигурация «С-Терра L2».
3.1. Файл /opt/l2svc/etc/to_hub1.conf:
vif tap0
bridge br0
bridge_ip 192.168.100.2/24
loop_protection splithorizon
capture eth1
local 172.16.1.2
remote 172.16.100.2
port 50000
mssfix 1400
passtos
3.2. Файл /opt/l2svc/etc/to_spoke2.conf:
vif tap1
bridge br0
bridge_ip 192.168.100.2/24
loop_protection splithorizon
capture eth1
local 172.16.1.2
remote 172.16.2.2
port 50002
mssfix 1400
passtos
1. Консоль cisco-like:
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp fragmentation
crypto isakmp security-association lifetime delta 50
crypto isakmp initiator-sessions-max 100
crypto isakmp responder-sessions-max 100
crypto isakmp keepalive 3
crypto isakmp keepalive retry-count 5
username cscons privilege 15 secret 5 $6$tHtq8SR6$t3CWE6udI6L/ARr9jQowUYR7wEbOW
Zlx61OvLi7goonOFUYhNSGV49BA.RDGEZ7oKXBA1aTRi20ElR4wtMXTl0
aaa new-model
!
!
hostname Spoke2
enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set GOST_ENCRYPT_AND_INTEGRITY esp-gost28147-4m-imit
!
ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE2
permit udp host 172.16.2.2 eq 50001 host 172.16.100.2 eq 50001
!
ip access-list extended IPSEC_ACl_SPOKE1_AND_SPOKE2
permit udp host 172.16.2.2 eq 50002 host 172.16.1.2 eq 50002
!
!
crypto map VPN 1 ipsec-isakmp
match address IPSEC_ACl_HUB1_AND_SPOKE2
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.100.2
set dead-connection history off
crypto map VPN 2 ipsec-isakmp
match address IPSEC_ACl_SPOKE1_AND_SPOKE2
set transform-set GOST_ENCRYPT_AND_INTEGRITY
set security-association lifetime kilobytes 4294967295
set peer 172.16.1.2
set dead-connection history off
!
interface GigabitEthernet0/0
ip address 172.16.2.2 255.255.255.0
crypto map VPN
!
interface GigabitEthernet0/1
no ip address
!
interface GigabitEthernet0/2
no ip address
shutdown
!
!
ip route 0.0.0.0 0.0.0.0 172.16.2.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check crl
crl download group ROOTCA http://172.16.101.15/certcrl.crl
crl download time 60
crypto pki certificate chain s-terra_technological_trustpoint
certificate 58E026BFD6D625BE4582C16C6189C183
30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330
...
AD4F8901771632E0A0AF83
quit
!
end
2. Конфигурация LSP:
# This is automatically generated LSP
#
# Conversion Date/Time: Thu May 21 00:28:24 2020
GlobalParameters(
Title = "This LSP was automatically generated by CSP Converter at Thu May 21 00:28:24 2020 (user: cscons)"
Version = LSP_4_3
CRLHandlingMode = ENABLE
PreserveIPsecSA = FALSE
)
RoutingTable(
Routes =
Route(
Destination = 0.0.0.0/0
Gateway = 172.16.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 GOST_ENCRYPT_AND_INTEGRITY:ESP
(
Transform* = ESPTransform
(
CipherAlg* = "G2814789CPRO2-K288-CNTMAC-253"
LifetimeSeconds = 3600
LifetimeKilobytes = 4294967295
)
)
IKEParameters(
FragmentSize = 576
SALifetimeDelta = 50
InitiatorSessionsMax = 100
ResponderSessionsMax = 100
)
AuthMethodGOSTSign GOST:Sign
(
LocalID = IdentityEntry( DistinguishedName* = USER_SPECIFIC_DATA )
SendRequestMode = ALWAYS
SendCertMode = ALWAYS
)
IKERule IKERule:VPN:1
(
IKEPeerIPFilter = 172.16.100.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 10
)
IKERule IKERule:VPN:2
(
IKEPeerIPFilter = 172.16.1.2
Transform = crypto:isakmp:policy:1
AggrModeAuthMethod = GOST:Sign
MainModeAuthMethod = GOST:Sign
DPDIdleDuration = 3
DPDResponseDuration = 2
DPDRetries = 5
Priority = 20
)
IPsecAction IPsecAction:VPN:1
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.100.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:1
)
IPsecAction IPsecAction:VPN:2
(
TunnelingParameters = TunnelEntry(
PeerAddress = 172.16.1.2
DFHandling=COPY
Assemble=TRUE
)
ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )
NoDeadConnectionHistory = TRUE
IKERule = IKERule:VPN:2
)
FilterChain IPsecPolicy:VPN (
Filters = Filter (
ProtocolID = 17
SourcePort = 500, 4500
Action = PASS
PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED
),
Filter (
SourceIP = 172.16.2.2
DestinationIP = 172.16.100.2
ProtocolID = 17
SourcePort = 50001
DestinationPort = 50001
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:1 >
LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE2"
),
Filter (
Label = "VPN:2:IPSEC_ACl_SPOKE1_AND_SPOKE2"
SourceIP = 172.16.2.2
DestinationIP = 172.16.1.2
ProtocolID = 17
SourcePort = 50002
DestinationPort = 50002
Action = PASS
ExtendedAction = ipsec< sa = IPsecAction:VPN:2 >
LogEventID = "IPsec:Protect:VPN:2:IPSEC_ACl_SPOKE1_AND_SPOKE2"
)
)
NetworkInterface (
LogicalName = "GigabitEthernet0/0"
IPsecPolicy = IPsecPolicy:VPN
)
3. Конфигурация «С-Терра L2».
3.1. Файл /opt/l2svc/etc/to_hub1.conf:
vif tap0
bridge br0
bridge_ip 192.168.100.3/24
loop_protection splithorizon
capture eth1
local 172.16.2.2
remote 172.16.100.2
port 50001
mssfix 1400
passtos
3.2. Файл /opt/l2svc/etc/to_spoke1.conf:
vif tap1
bridge br0
bridge_ip 192.168.100.3/24
loop_protection splithorizon
capture eth1
local 172.16.2.2
remote 172.16.1.2
port 50002
mssfix 1400
passtos