Инспекция трафика в центре c филиалов и мобильных клиентов

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

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

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

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

Введение

Данная инструкция описывает настройку Policy-based routing.Предполагается, что перед началом настройки стенд собран и настроен в соответствии со сценарием «Звезда с перешифрованием в центре».

Предварительные требования

Требования к материально-техническому обеспечению

Для переноса запросов и сертификатов между криптошлюзами и центром выпуска сертификатов требуется USB Flash накопитель.

Требования к квалификации администратора

Администратор должен обладать обширными знаниями в области сетевой информационной безопасности, иметь опыт работы с аналогичным оборудованием/программным обеспечением, знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall, routing, switching.

Требования к инфраструктуре

1.    Требования к устройствам.

1.1.      С-Терра Шлюз.

1.1.1      Устройства С-Терра Шлюз должны быть инициализированы (подробнее на http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз 4.3 -> «Подключение ПАК и инициализация С-Терра Шлюз на вычислительных системах архитектуры Intel x86/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), устройство, осуществляющее инспекцию трафика, (Traffic_Inspection) и персональный компьютер (host_behind_hub1).

1.2.      В филиале размещаются: криптошлюз С-Терра Шлюз (Spoke1) и персональные компьютеры (host1_behind_spoke1 и host2_behind_spoke1).

1.3.      В неконтролируемом сегменте (синее облако на схеме) размещаются: HTTP сервер для распространения списка отозванных сертификатов (CRL_distribution_point), маршрутизатор (Router1), устройство мобильного клиента «С-Терра Клиент» (Client1).

2.    Подключение к сети Интернет.

2.В данном сценарии для эмуляции сети Интернет используются маршрутизатор Router1.

Подключение к сети Интернет на устройствах С-Терра Шлюз будет считаться успешным, если по протоколу ICMP (или «ping») будет доступен HTTP сервер для распространения списка отозванных сертификатов (устройство CRL_distribution_point на схеме).

2.1.      Криптошлюз Hub1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).

2.2.      Криптошлюз Spoke1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).

2.3.      Клиент Client1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).

3.    Параметры безопасного взаимодействия.

В ходе построения защищенного соединения мобильный клиент получает адрес из заранее определенного на шлюзе пула (192.168.254.0/24).

Весь IP трафик между подсетями центрального офиса (192.168.100.0/24), филиала (192.168.1.0/24 и 192.168.2.0/24) и клиента (192.168.254.1/32) защищается с использованием алгоритмов ГОСТ и протокола IPsec в туннельном режиме.

Инициировать защищенное соединение между криптошлюзами Hub1 и Spoke1 может трафик из подсети филиала (192.168.1.0/24 или 192.168.2.0/24) в подсеть центра (192.168.100.0/24) и наоборот из центра в филиал, трафик между подсетями филиала (между 192.168.1.0/24 и 192.168.2.0/24), так и трафик от клиента (192.168.254.1/32) до подсети филиала.

Инициировать защищенное соединение между клиентом Client1 и криптошлюзом Hub1 может трафик от клиента до подсети центра или до подсети филиала.

 

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

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

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

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

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

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

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

4.    Настройка маршрутизации на основе политик.

4.1.      Трафик, приходящий на устройство Hub1 через интерфейс g0/0 (eth0), попадает под правило PBR и направляется в соответствующую таблицу маршрутизации. В данной таблице присутствует только маршрут по умолчанию через устройство Traffic_Inspection (192.168.255.2).

4.2.      Трафик, приходящий на устройство Spoke1 через интерфейс g0/1.10 (eth1.10) или через интерфейс g0/1.11 (eth1.11), попадает под правило PBR и направляется в соответствующую таблицу маршрутизации. В данной таблице присутствует только маршрут по умолчанию через устройство Router1 (172.16.1.1).

Важно! Для устройства, осуществляющую инспекцию трафика, в данном сценарии настраивается только IP адресация.

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

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

1.    Настройте IP адрес - 172.16.100.1 и маску - 255.255.255.0 на сетевом интерфейсе ens32.

2.    Настройте IP адрес - 172.16.1.1 и маску - 255.255.255.0 на сетевом интерфейсе ens34.

3.    Настройте IP адрес - 172.16.2.1 и маску - 255.255.255.0 на сетевом интерфейсе ens35.

4.    Разрешите прохождение IPsec трафика.

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

1.    Настройте IP адрес - 192.168.255.2 и маску - 255.255.255.0 на сетевом интерфейсе ens32.

2.    Настройте IP адрес - 192.168.100.1 и маску - 255.255.255.0 на сетевом интерфейсе ens34.

3.    Задайте маршрут по умолчанию через 192.168.255.1.

4.    Разрешите прием и отправку ICMP пакетов.

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

1.    Настройте IP адрес - 192.168.100.100 и маску - 255.255.255.0 на сетевом интерфейсе.

2.    Задайте маршрут по умолчанию через 192.168.100.1.

3.    Разрешите прием и отправку ICMP пакетов.

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

1.    Настройте IP адрес - 192.168.1.100, маску - 255.255.255.0 и VLAN 10 на сетевом интерфейсе.

2.    Задайте маршрут по умолчанию через 192.168.1.1.

3.    Разрешите прием и отправку ICMP пакетов.

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

1.    Настройте IP адрес - 192.168.2.100, маску - 255.255.255.0 и VLAN 11 на сетевом интерфейсе.

2.    Задайте маршрут по умолчанию через 192.168.2.1.

3.    Разрешите прием и отправку ICMP пакетов.

Настройка криптошлюза Hub1

Настройка будет происходить локально при помощи консольного подключения. Основная настройка устройства была произведена в соответствии со сценарием «Звезда с перешифрованием в центре».

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсеть 192.168.100.0/24 или 192.168.255.0/24 для центрального офиса).

Настройка сетевых параметров

1.    Войдите в CLI разграничения доступа. Для этого, после появления сообщения:

S-Terra administrative console

введите логин и пароль для CLI разграничения доступа:

Пользователь и пароль по умолчанию: administrator, s-terra. Пароль мог быть изменен в сценарии «Звезда с перешифрованием в центре».

login as: administrator

administrator's password:

administrator@Hub1]

2.    Войдите в cisco-like консоль из CLI разграничения доступа:

Пользователь и пароль по умолчанию cscons, csp. Пароль мог быть изменен в сценарии «Звезда с перешифрованием в центре».

administrator@Hub1] configure

Hub1 login: cscons

Password:

Last login: Thu Nov28 11:45:25 MSK 2019 on pts/0

S-Terra Gate 4.3.XXXXX (amd64)

Hub1#

3.    Задайте IP адрес в соответствии со схемой стенда на внутреннем GigabitEthernet0/1 интерфейсе:

Hub1#configure terminal

Hub1(config)#interface GigabitEthernet 0/1

Hub1(config-if)#ip address 192.168.255.1 255.255.255.0

Hub1(config-if)#exit

4.    Задайте маршрут до 192.168.100.0/24 через устройство Traffic_Inspection:

Hub1(config)#ip route 192.168.100.0 255.255.255.0 192.168.255.2

5.    Проверьте доступность устройства Traffic_Inspection:

Hub1(config)#do ping 192.168.255.2

PING 192.168.255.2 (192.168.255.2) 100(128) bytes of data.

108 bytes from 192.168.255.2: icmp_seq=1 ttl=64 time=0.461 ms

108 bytes from 192.168.255.2: icmp_seq=2 ttl=64 time=0.513 ms

108 bytes from 192.168.255.2: icmp_seq=3 ttl=64 time=0.449 ms

108 bytes from 192.168.255.2: icmp_seq=4 ttl=64 time=0.464 ms

108 bytes from 192.168.255.2: icmp_seq=5 ttl=64 time=0.391 ms

 

--- 192.168.255.2 ping statistics ---

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

rtt min/avg/max/mdev = 0.391/0.455/0.513/0.045 ms

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

1.    Задайте пул из которого будет выбран адрес клиенту:

Hub1(config)#ip local pool POOL 192.168.254.1 192.168.254.254

2.    Удалите старые списки доступа (ACL):

Hub1(config)#no ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1

Hub1(config)#no ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE2

3.    Создайте новый список доступа для трафика, который нужно защищать между центральным офисом и филиалом:

Hub1(config)#ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1

Hub1(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 192.168.1.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.254.0 0.0.0.255 192.168.1.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 192.168.2.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.254.0 0.0.0.255 192.168.2.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

Hub1(config-ext-nacl)#exit

Hub1(config)#

4.    Создайте новый список доступа для трафика, который нужно защищать между центральным офисом и клиентом:

Hub1(config)#ip access-list extended IPSEC_ACl_HUB1_AND_CLIENT1

Hub1(config-ext-nacl)#permit ip 192.168.100.0 0.0.0.255 192.168.254.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.254.0 0.0.0.255

Hub1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.254.0 0.0.0.255

Hub1(config-ext-nacl)#exit

Hub1(config)#

5.    Создайте динамическую крипто-карту (имя DMAP, раздел 1):

Hub1(config)#crypto dynamic-map DMAP 1

5.1.      Укажите список доступа для защищаемого трафика:

Hub1(config-crypto-map)#match address IPSEC_ACl_HUB1_AND_CLIENT1

5.2.      Укажите при помощи какого набора алгоритмов нужно защищать трафик:

Hub1(config-crypto-map)#set transform-set GOST_ENCRYPT_AND_INTEGRITY

5.3.      Укажите имя пула криптографической карты:

Hub1(config-crypto-map)#set pool POOL

5.4.      Включите механизм Reverse Route Injection (RRI):

Hub1(config-crypto-map)#reverse-route

5.5.      Обязательно отключите историю удаленных туннелей (если не отключить, то могут быть проблемы с построением IPsec туннелей с устройствами, которые находятся за NAT):

Hub1(config-crypto-map)#set dead-connection history off

Hub1(config-crypto-map)#exit

6.    Удалите раздел криптократы с партнером 172.16.2.2.

Hub1(config)#no crypto map VPN 2

7.    Привяжите созданную динамическую крипто-карту DMAP к статической крипто-карте (имя VPN, раздел 2):

Hub1(config)#crypto map VPN 2 ipsec-isakmp dynamic DMAP

8.    Примените настройки:

Hub1(config-if)#end

Hub1#exit

Настройка PBR

PBR настраивается через консоль сервиса FRR.

1.    Перейдите в linux bash, для этого выполните следующую команду в CLI разграничения доступа:

administrator@hub1] system

Entering system shell...

root@Hub1:~#

2.    Добавьте сервис FRR в автозагрузку и запустите его:

root@Hub1:~# systemctl enable frr

Synchronizing state of frr.service with SysV service script with /lib/system/system-sysv-install.

Executing: /lib/system/system-sysv-install enable frr

root@Hub1:~# systemctl start frr

При старте могут возникать сообщения:

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] bgpd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] ripd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] ospfd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] pbrd state -> down : initial connection attempt failedstaticd

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 100663303] Forked background command [pid 832]: /usr/lib/frr/watchfrr.sh restart all

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop bgpd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop ripd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop zebra: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop ospfd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop pbrd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop staticd: pid file not found

 

Данные сообщения не являются ошибкой при старте сервиса.

3.    Войдите в консоль сервиса FRR, для этого нужно из linux bash набрать следующую команду:

root@Hub1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Hub1#

4.    Настройте PBR (см. описание http://docs.frrouting.org):

Hub1# configure terminal

4.1.      Создайте PBR-карту (имя PBR, раздел 1):

Hub1(config)# pbr-map PBR seq 1

4.2.      Укажите для каких пакетов нужно применять политику PBR:

Hub1(config-pbr-map)# match src-ip 192.168.1.0/24

Пакеты с адресом отправителя из подсети 192.168.1.0/24 будут попадать под политику PBR.

4.3.      Укажите куда надо перенаправлять пакеты:

Hub1(config-pbr-map)# set nexthop 192.168.255.2

Hub1(config-pbr-map)# exit

4.4.      Создайте раздел 2 и раздел 3 PBR-карты для подсетей 192.168.2.0/24 и 192.168.254.0/24:

Hub1(config)# pbr-map PBR seq 2

Hub1(config-pbr-map)# match src-ip 192.168.2.0/24

Hub1(config-pbr-map)# set nexthop 192.168.255.2

Hub1(config-pbr-map)# exit

Hub1(config)# pbr-map PBR seq 3

Hub1(config-pbr-map)# match src-ip 192.168.254.0/24

Hub1(config-pbr-map)# set nexthop 192.168.255.2

Hub1(config-pbr-map)# exit

4.5.      Прикрепите PBR-карту к интерфейсу:

Hub1(config)# interface eth0

Hub1(config-if)# pbr-policy PBR

Hub1(config-if)# exit

Hub1(config)# exit

4.6.      Сохраните настройки сервиса FRR:

Hub1# write

Note: this version of vtysh never writes vtysh.conf

Building Configuration...

Warning: /etc/frr/frr.conf.sav unlink failed

Integrated configuration saved to /etc/frr/frr.conf

[OK]

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

·         текст консоли cisco-like;

·         текст LSP;

·         текст консоли FRR.

Настройка криптошлюза Spoke1

Настройка будет происходить локально при помощи консольного подключения. Основная настройка устройства была произведена в соответствии со сценарием «Звезда с перешифрованием в центре».

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсеть 192.168.1.0/24 или подсеть 192.168.2.0/24 для филиала). Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec (например, между подсетями 192.168.1.0/24 и 192.168.100.0/24 или между подсетями 192.168.2.0/24 и 192.168.100.0/24 разрешается выполнять настройку критошлюза Spoke1 из подсети 192.168.100.0/24 центрального офиса).

Настройка сетевых параметров

1.    Войдите в CLI разграничения доступа. Для этого, после появления сообщения:

S-Terra administrative console

введите логин и пароль для CLI разграничения доступа:

Пользователь и пароль по умолчанию: administrator, s-terra. Пароль мог быть изменен в сценарии «Звезда с перешифрованием в центре».

login as: administrator

administrator's password:

administrator@sterragate]

2.    Настройки VLAN интерфейсов осуществляются из linux bash, чтобы попасть в linux bash выполните следующую команду в CLI разграничения доступа:

administrator@hub1] system

Entering system shell...

root@Spoke1:~#

3.    Войдите в cisco-like консоль из linux bash:

root@Spoke1:~# cs_console

Spoke1>

4.    Войдите в привилегированный режим:

Пароль по умолчанию csp. Пароль мог быть изменен в сценарии «Звезда с перешифрованием в центре».

Spoke1>enable

Password:

Spoke1#

5.    Удалите IP адрес на внутреннем GigabitEthernet0/1 интерфейсе:

Hub1#configure terminal

Hub1(config)#interface GigabitEthernet 0/1

Hub1(config-if)#no ip address

Hub1(config-if)#end

Hub1#exit

6.    Добавьте в содержимое /etc/network/interfaces интерфейсы eth1.10 и eth1.11 следующие перед ###netifcfg-begih###:

############################################################

# CAUTION: lines under special marker: ###netifcfg-*###

# contains autogenerated information. You can add/modify

# lines outside of those markers

############################################################

 

# loopback configuration

auto lo

iface lo inet loopback

 

auto eth1.10

iface eth1.10 inet static

mtu 1500

address 192.168.1.1

netmask 255.255.255.0

 

auto eth1.11

iface eth1.11 inet static

mtu 1500

address 192.168.2.1

netmask 255.255.255.0

 

###netifcfg-begin###

auto eth0

iface eth0 inet static

mtu 1500

address 172.16.1.2

netmask 255.255.255.0

broadcast 172.16.1.255

auto eth1

iface eth1 inet manual

mtu 1500

###netifcfg-end###

7.    Перезапустите сервис networking и перезагрузите LSP конфигурацию:

Если после настройки сетевых интерфейсов в «Звезда с перешифрованием в центре». криптошлюз не перезагружался, то перезагрузите его. В таком случае перезапускать сервис networking и перезагружать LSP конфигурацию не требуется.

Из-за того, что маршрут по умолчанию до Router1 описан в cisco-like конфигурации, то после перезапуска сервиса networking данный маршрут по умолчанию будет отсутствовать в таблице маршрутизации. Чтобы его добавить достаточно перезагрузить LSP конфигурацию.

root@Hub1:~# systemctl restart networking

При рестарте могут возникать сообщения:

Nov 15 15:31:54 Spoke1 ntpdate[1462]: name server cannot be used: Temporary failure in name resolution (-3)

Nov 15 15:31:54 Spoke1 ntpdate[1552]: name server cannot be used: Temporary failure in name resolution (-3)

Nov 15 15:31:54 Spoke1 ntpdate[1607]: name server cannot be used: Temporary failure in name resolution (-3)

Nov 15 15:31:54 Spoke1 ntpdate[1715]: name server cannot be used: Temporary failure in name resolution (-3)

root@Hub1:~# lsp_mgr reload

Данные сообщения не являются ошибкой при рестарте сервиса.

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

Параметры IPsec изменяются из cisco-like консоли.

1.    Удалите старый список доступа (ACL):

Spoke1#configure terminal

Spoke1(config)#no ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1

2.    Создайте новый список доступа для трафика, который нужно защищать между центральным офисом и филиалом:

Spoke1(config)#ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1

Spoke1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.100.0 0.0.0.255

Spoke1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.254.0 0.0.0.255

Spoke1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

Spoke1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.100.0 0.0.0.255

Spoke1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.254.0 0.0.0.255

Spoke1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

Spoke1(config-ext-nacl)#exit

Spoke1(config)#

3.    Примените настройки:

Hub1(config-if)#end

Hub1#exit

Настройка PBR

PBR настраивается через консоль сервиса FRR.

1.    Добавьте сервис FRR в автозагрузку и запустите его из linux bash:

root@Spoke1:~# systemctl enable frr

Synchronizing state of frr.service with SysV service script with /lib/system/system-sysv-install.

Executing: /lib/system/system-sysv-install enable frr

root@Spoke1:~# systemctl start frr

При старте могут возникать сообщения:

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] bgpd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] ripd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] ospfd state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] pbrd state -> down : initial connection attempt failedstaticd

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Nov 15 15:01:54 sterrragate watchfrr[831]: [EC 100663303] Forked background command [pid 832]: /usr/lib/frr/watchfrr.sh restart all

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop bgpd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop ripd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop zebra: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop ospfd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop pbrd: pid file not found

Nov 15 15:01:54 sterrragate watchfrr.sh: Cannot stop staticd: pid file not found

 

Данные сообщения не являются ошибкой при старте сервиса.

2.    Войдите в консоль сервиса FRR, для этого нужно из linux bash набрать следующую команду:

root@Spoke1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Hub1#

3.    Настройте PBR (см. описание http://docs.frrouting.org):

Spoke1# configure terminal

3.1.      Создайте PBR-карту для VLAN10 (имя PBR.10, раздел 1):

Spoke1(config)# pbr-map PBR.10 seq 1

3.2.      Укажите для каких пакетов нужно применять политику PBR:

Spoke1(config-pbr-map)# match src-ip 192.168.1.0/24

Пакеты с адресом отправителя из подсети 192.168.1.0/24 будут попадать под политику PBR

3.3.      Укажите куда надо перенаправлять пакеты:

Spoke1(config-pbr-map)# set nexthop 172.16.1.1

Spoke1(config-pbr-map)# exit

3.4.      Создайте аналогичную PBR-карту для VLAN11 (имя PBR.11, раздел 1):

Spoke1(config)# pbr-map PBR.11 seq 1

Spoke1(config-pbr-map)# match src-ip 192.168.2.0/24

Spoke1(config-pbr-map)# set nexthop 172.16.1.1

Spoke1(config-pbr-map)# exit

3.5.      Прикрепите PBR-карты к интерфейсам:

Spoke1(config)# interface eth1.10

Spoke1(config-if)# pbr-policy PBR.10

Spoke1(config-if)# exit

Spoke1(config)# interface eth1.11

Spoke1(config-if)# pbr-policy PBR.11

Spoke1(config-if)# exit

Spoke1(config)# exit

3.6.      Сохраните настройки сервиса FRR:

Spoke1# write

Note: this version of vtysh never writes vtysh.conf

Building Configuration...

Warning: /etc/frr/frr.conf.sav unlink failed

Integrated configuration saved to /etc/frr/frr.conf

[OK]

Spoke1# exit

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

·         текст консоли cisco-like;

·         содержимое /etc/network/interface;

·         текст LSP;

·         текст консоли FRR.

Настройка Client1

Настройка выполняется в соответствии со сценарием «Клиент с выдачей адреса из пула + NAT». Во вкладке IPsec Rules в разделе Remote IP Address укажите адреса подсетей 192.168.100.0/24, 192.168.1.0/24 и 192.168.2.0/24 и адрес партнера 172.16.100.2.

Настройте IP адрес - 172.16.2.100 и маску - 255.255.255.0 на сетевом интерфейсе.

В Приложении представлен тексты LSP конфигурации для Client1.


 

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

Проверку работоспособности нужно выполнять после завершения настройки всех устройств стенда.

Проверка IP связности

1.    Проверьте, что с криптошлюзов Hub1 и Spoke1 по 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.349 ms

108 bytes from 172.16.100.1: icmp_seq=2 ttl=64 time=0.239 ms

108 bytes from 172.16.100.1: icmp_seq=3 ttl=64 time=0.394 ms

108 bytes from 172.16.100.1: icmp_seq=4 ttl=64 time=0.412 ms

108 bytes from 172.16.100.1: icmp_seq=5 ttl=64 time=0.550 ms

 

--- 172.16.100.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.239/0.388/0.550/0.103 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=0.591 ms

108 bytes from 172.16.1.1: icmp_seq=2 ttl=64 time=0.400 ms

108 bytes from 172.16.1.1: icmp_seq=3 ttl=64 time=0.430 ms

108 bytes from 172.16.1.1: icmp_seq=4 ttl=64 time=0.395 ms

108 bytes from 172.16.1.1: icmp_seq=5 ttl=64 time=0.360 ms

 

--- 172.16.1.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.360/0.435/0.591/0.082 ms

Видно, что устройство Router1 доступно по ICMP как с Hub1, так и со Spoke1.

2.    Проверьте, что с клиента Client1 по ICMP доступен шлюз по умолчанию (Router1). Для этого выполните команду ping из командной строки:

C:\Users\Client1>ping 172.16.2.1

Обмен пакетами с 172.16.2.1 по с 32 байтами данных:

Ответ от 172.16.2.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.2.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.2.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.2.1: число байт=32 время<1мс TTL=64

 

Статистика Ping для 172.16.2.1:

    Пакетов: отправлено = 4, получено = 4, потеряно = 0

    (0% потерь)

Приблизительное время приема-передачи в мс:

    Минимальное = 0мск, максимальное = 0 мсек, Среднее = 0 мсек

3.    Проверьте, что с защищаемых устройств host1_behind_spoke1 и host2_behind_spoke1 доступен по ICMP криптошлюз Spoke1, который является шлюзом по умолчанию. Для этого выполните команду ping из linux bash консоли защищаемых устройств.

root@host1_behind_spoke1:~# ping 192.168.1.1 -c 5

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

64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.308 ms

64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.443 ms

64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.390 ms

64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.403 ms

64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.307 ms

 

--- 192.168.1.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.307/0.370/0.443/0.055 ms

root@host2_behind_spoke1:~# ping 192.168.2.1 -c 5

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

64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.395 ms

64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=0.411 ms

64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=0.370 ms

64 bytes from 192.168.2.1: icmp_seq=4 ttl=64 time=0.528 ms

64 bytes from 192.168.2.1: icmp_seq=5 ttl=64 time=0.473 ms

 

--- 192.168.2.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.370/0.435/0.528/0.060 ms

Видно, что с защищаемых устройств host1_behind_spoke1 и host2_behind_spoke1 криптошлюз Spoke1 доступен по ICMP.

4.    Проверьте, что с устройства Traffic_Inspection доступны по ICMP криптошлюз Hub1, который является шлюзом по умолчанию, и устройство host_behind_hub1. Для этого выполните команду ping из linux bash консоли защищаемых устройств.

root@Traffic_Inspection:~# ping 192.168.100.100 -c 5

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

64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=0.149 ms

64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.728 ms

64 bytes from 192.168.100.100: icmp_seq=3 ttl=64 time=0.384 ms

64 bytes from 192.168.100.100: icmp_seq=4 ttl=64 time=0.433 ms

64 bytes from 192.168.100.100: icmp_seq=5 ttl=64 time=0.439 ms

 

--- 192.168.100.100 ping statistics ---

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

rtt min/avg/max/mdev = 0.149/0.426/0.728/0.185 ms

root@Traffic_Inspection:~# ping 192.168.255.1 -c 5

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

64 bytes from 192.168.255.1: icmp_seq=1 ttl=64 time=0.213 ms

64 bytes from 192.168.255.1: icmp_seq=2 ttl=64 time=0.410 ms

64 bytes from 192.168.255.1: icmp_seq=3 ttl=64 time=0.377 ms

64 bytes from 192.168.255.1: icmp_seq=4 ttl=64 time=0.411 ms

64 bytes from 192.168.255.1: icmp_seq=5 ttl=64 time=0.377 ms

 

--- 192.168.255.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.213/0.357/0.411/0.076 ms

Видно, что с устройства Traffic_Inspection достпны криптошлюз Hub1 и устройство host_behind_hub1 по ICMP.

5.    Проверьте, что с криптошлюза Hub1 доступен по ICMP криптошлюз Spoke1 (по внешним интерфейсам). Для этого выполните команду 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=0.790 ms

108 bytes from 172.16.1.2: icmp_seq=2 ttl=63 time=0.723 ms

108 bytes from 172.16.1.2: icmp_seq=3 ttl=63 time=0.964 ms

108 bytes from 172.16.1.2: icmp_seq=4 ttl=63 time=0.804 ms

108 bytes from 172.16.1.2: icmp_seq=5 ttl=63 time=1.43 ms

 

--- 172.16.1.2 ping statistics ---

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

rtt min/avg/max/mdev = 0.723/0.943/1.434/0.257 ms

Видно, что с криптошлюза Hub1 доступен по ICMP криптошлюз Spoke1.

6.    Проверьте, что с криптошлюза Hub1 доступен по ICMP устройство host_behind_hub1. Для этого выполните команду ping из cisco-like консоли криптошлюзов.

Hub1#ping 192.168.100.100

PING 192.168.100.100 (192.168.100.100) 100(128) bytes of data.

108 bytes from 192.168.100.100: icmp_seq=1 ttl=63 time=0.480 ms

108 bytes from 192.168.100.100: icmp_seq=2 ttl=63 time=0.648 ms

108 bytes from 192.168.100.100: icmp_seq=3 ttl=63 time=0.891 ms

108 bytes from 192.168.100.100: icmp_seq=4 ttl=63 time=0.798 ms

108 bytes from 192.168.100.100: icmp_seq=5 ttl=63 time=0.955 ms

 

--- 192.168.100.100 ping statistics ---

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

rtt min/avg/max/mdev = 0.480/0.754/0.955/0.173 ms

Видно, что с криптошлюза Hub1 доступен по ICMP криптошлюз Spoke1.

7.    Проверьте, что с клиента Client1 доступны по ICMP криптошлюзы Hub1 и Spoke1. Для этого выполните команду ping из командной строки:

C:\Users\Client1>ping 172.16.100.1

Обмен пакетами с 172.16.100.1 по с 32 байтами данных:

Ответ от 172.16.100.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.100.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.100.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.100.1: число байт=32 время<1мс TTL=64

 

Статистика Ping для 172.16.100.1:

    Пакетов: отправлено = 4, получено = 4, потеряно = 0

    (0% потерь)

Приблизительное время приема-передачи в мс:

    Минимальное = 0мск, максимальное = 0 мсек, Среднее = 0 мсек

C:\Users\Client1>ping 172.16.1.1

Обмен пакетами с 172.16.1.1 по с 32 байтами данных:

Ответ от 172.16.1.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.1.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.1.1: число байт=32 время<1мс TTL=64

Ответ от 172.16.1.1: число байт=32 время<1мс TTL=64

 

Статистика Ping для 172.16.1.1:

    Пакетов: отправлено = 4, получено = 4, потеряно = 0

    (0% потерь)

Приблизительное время приема-передачи в мс:

    Минимальное = 0мск, максимальное = 0 мсек, Среднее = 0 мсек

 

Проверка PKI

1.    Проверьте, что на криптошлюзах Hub1 и Spoke1 СОС импортирован в базу Продукта. Для этого выполните команду 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 Status: remote  C=RU,O=S-Terra CSP,OU=Research,CN=Client1

4 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

Видно, что на криптошлюзах Hub1 и Spoke1 СОС импортирован в базу Продукта. Если этого не произошло, то проверьте файл журнала (команда run grep getcrls_daemon /var/log/cspvpngate.log) и, при необходимости, перезапустите сервис автоматической загрузки СОС (команда run systemctl restart getcrls.service).

2.    Проверьте, что на криптошлюзах Hub1 и Spoke1 статус всех сертификатов 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

3 State: Active   C=RU,O=S-Terra CSP,OU=Research,CN=Client1

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

Видно, что на криптошлюзах Hub1 и Spoke1 статус всех сертификатов Active. Если статус Inactive, то проверьте загружен ли СОС в базу Продукта и правильность установки даты и времени.

Проверка построения защищенного соединения между подсетями Hub1 и Spoke1

1.    Инициируйте построение защищенного соединения между криптошлюзами Hub1 и Spoke1 при помощи ICMP трафика, посылаемого с устройства host1_behind_spoke1 на host_behind_hub1 (можно и наоборот) или с устройства host2_behind_spoke1 на host_behind_hub1 (можно и наоборот). Для этого выполните команду ping из linux bash консоли защищаемого устройства.

root@host1_behind_spoke1:~# ping 192.168.100.100 -c 5

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

64 bytes from 192.168.100.100: icmp_seq=1 ttl=61 time=339 ms

64 bytes from 192.168.100.100: icmp_seq=2 ttl=61 time=1.79 ms

64 bytes from 192.168.100.100: icmp_seq=3 ttl=61 time=1.29 ms

64 bytes from 192.168.100.100: icmp_seq=4 ttl=61 time=2.03 ms

64 bytes from 192.168.100.100: icmp_seq=5 ttl=61 time=1.71 ms

 

--- 192.168.100.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.297/69.331/339.822/135.245 ms

2.    Проверьте, что на криптошлюзах Hub1 и Spoke1 установлено защищенное 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 1 (172.16.100.2,500)-(172.16.2.100,500) active 1792 2872

2 2 (172.16.100.2,500)-(172.16.1.2,500) active 1692 1764

 

IPsec connections:

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

1 1 (192.168.1.0-192.168.1.255,*)-(192.168.254.1,*) * ESP tunn 0 0

2 2 (192.168.100.0-192.168.100.255,*)-(192.168.1.0-192.168.1.255,*) * ESP tunn 440 440

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 1764 1692

 

IPsec connections:

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

1 5 (192.168.1.0-192.168.1.255,*)-(192.168.100.0-192.168.100.255,*) * ESP tunn 440 440

Видно, что на криптошлюзах Hub1 и Spoke1 установлено защищенное IPsec соединение. Если этого не произошло, то проверьте файл журнала (команда run less /var/log/cspvpngate.log). При необходимости увеличьте уровень логирования с помощью (команда logging trap debugging в консоли cisco-like) и заново инициируйте защищенное соединение.

Проверка построения защищенного соединения между подсетями Hub1 и Client1

1.    Инициируйте построение защищенного соединения между криптошлюзом Hub1 и Client1 при помощи ICMP трафика, посылаемого с устройства Client1 на host_behind_hub1. Для этого выполните команду ping из командной строки Client1.

C:\Users\Client1>ping 192.168.100.100

Обмен пакетами с 192.168.100.100 по с 32 байтами данных:

Ответ от 192.168.100.100: число байт=32 время=207мс TTL=61

Ответ от 192.168.100.100: число байт=32 время=1мс TTL=61

Ответ от 192.168.100.100: число байт=32 время=1мс TTL=61

Ответ от 192.168.100.100: число байт=32 время=1мс TTL=61

 

Статистика Ping для 192.168.100.100:

    Пакетов: отправлено = 4, получено = 4, потеряно = 0

    (0% потерь)

Приблизительное время приема-передачи в мс:

    Минимальное = 1мск, максимальное = 207 мсек, Среднее = 52 мсек

2.    Проверьте, что на криптошлюзе Hub1 установлено защищенное IPsec соединение. Для этого выполните команду run sa_mgr show из cisco-like консоли криптошлюза Hub1 или используйте VPN SA Monitor на Client1.

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 1 (172.16.100.2,500)-(172.16.2.100,500) active 2160 3296

2 2 (172.16.100.2,500)-(172.16.1.2,500) active 1692 1764

 

IPsec connections:

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

1 1 (192.168.1.0-192.168.1.255,*)-(192.168.254.1,*) * ESP tunn 0 0

2 2 (192.168.100.0-192.168.100.255,*)-(192.168.1.0-192.168.1.255,*) * ESP tunn 440 440

3 3 (192.168.100.0-192.168.100.255,*)-(192.168.254.1,*) * ESP tunn 256 256

Рисунок 2

Видно, что между криптошлюзом Hub1 и Client1 установлено защищенное IPsec соединение. Если этого не произошло, то проверьте файл журнала (команда run less /var/log/cspvpngate.log). При необходимости увеличьте уровень логирования с помощью (команда logging trap debugging в консоли cisco-like) и заново инициируйте защищенное соединение.

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

1.    Для проверки работоспособности PBR, на устройстве Traffic_Inspection из linux bash выполните команду tcpdump на интерфейсе ens32, и отправьте ICMP трафик с устройства host1_behind_spoke1 устройству host2_behind_spoke1.

root@Traffic_Inspection:~# tcpdump -i ens32 -n host 192.168.1.100 and host 192.168.2.100

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes

09:57:36.003398 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 1, length 64

09:57:36.003415 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 1, length 64

09:57:36.004305 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 1, length 64

09:57:36.004313 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 1, length 64

09:57:37.005058 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 2, length 64

09:57:37.005083 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 2, length 64

09:57:37.006258 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 2, length 64

09:57:37.006266 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 2, length 64

09:57:38.006534 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 3, length 64

09:57:38.006550 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 32727, seq 3, length 64

09:57:38.007263 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 3, length 64

09:57:38.007270 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 32727, seq 3, length 64

Видно, что трафик от host1_behind_spoke1 до host2_behind_spoke1 и обратно проходят через Traffic_Inspection. Из-за того пакет сначала передается от Hub1 устройству Traffic_Inspection, а потом Traffic_Inspection отправляет его обратно криптошлюзу Hub1, то каждый пакет наблюдается дважды.

2.    Проверьте, что на криптошлюзах Hub1 и Spoke1 установлено защищенное 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 1 (172.16.100.2,500)-(172.16.2.100,500) active 2160 3296

2 2 (172.16.100.2,500)-(172.16.1.2,500) active 2380 2452

 

IPsec connections:

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

1 1 (192.168.1.0-192.168.1.255,*)-(192.168.254.1,*) * ESP tunn 0 0

2 2 (192.168.100.0-192.168.100.255,*)-(192.168.1.0-192.168.1.255,*) * ESP tunn 440 440

3 3 (192.168.100.0-192.168.100.255,*)-(192.168.254.1,*) * ESP tunn 256 256

4 4 (192.168.2.0-192.168.2.255,*)-(192.168.1.0-192.168.1.255,*) * ESP tunn 528 528

5 5 (192.168.1.0-192.168.1.255,*)-(192.168.2.0-192.168.2.255,*) * ESP tunn 528 528

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 1 (172.16.1.2,500)-(172.16.100.2,500) active 2452 2380

 

IPsec connections:

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

1 1 (192.168.1.0-192.168.1.255,*)-(192.168.100.0-192.168.100.255,*) * ESP tunn 440 440

2 2 (192.168.1.0-192.168.1.255,*)-(192.168.2.0-192.168.2.255,*) * ESP tunn 528 528

3 3 (192.168.2.0-192.168.2.255,*)-(192.168.1.0-192.168.1.255,*) * ESP tunn 528 528

Видно, что на криптошлюзах Hub1 и Spoke1 установлено защищенное IPsec соединение. Если этого не произошло, то проверьте файл журнала (команда run less /var/log/cspvpngate.log). При необходимости увеличьте уровень логирования с помощью (команда logging trap debugging в консоли cisco-like) и заново инициируйте защищенное соединение.

3.    Можно проверить работоспособность PBR для Client1. Для этого на устройстве Traffic_Inspection из linux bash выполните команду tcpdump на интерфейсе ens32, и отправьте ICMP трафик с устройства Client1 устройству host1_behind_spoke2.

root@Traffic_Inspection:~# tcpdump -i ens32 -n host 192.168.1.100

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes

10:16:39.456564 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 107, length 40

10:16:39.456583 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 107, length 40

10:16:39.457516 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 107, length 40

10:16:39.457524 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 107, length 40

10:16:40.469209 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 108, length 40

10:16:40.469226 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 108, length 40

10:16:40.470228 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 108, length 40

10:16:40.470236 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 108, length 40

10:16:41.479642 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 109, length 40

10:16:41.479656 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 109, length 40

10:16:41.480582 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 109, length 40

10:16:41.480590 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 109, length 40

10:16:42.495418 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 110, length 40

10:16:42.495435 IP 192.168.254.1 > 192.168.1.100: ICMP echo request, id 1, seq 110, length 40

10:16:42.496394 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 110, length 40

10:16:42.496401 IP 192.168.1.100 > 192.168.254.1: ICMP echo reply, id 1, seq 110, length 40

Видно, что трафик от Client1 до host1_behind_spoke1 и обратно проходят через Traffic_Inspection. Из-за того пакет сначала передается от Hub1 устройству Traffic_Inspection, а потом Traffic_Inspection отправляет его обратно криптошлюзу Hub1, то каждый пакет наблюдается дважды.


 

Приложение

Конфигурации криптошлюза Hub1

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/ARr9jQowUYR7wEbOWZlx61OvL

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

!

ip local pool POOL 192.168.254.1 192.168.254.254

!

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

!

ip access-list extended IPSEC_ACl_HUB1_AND_SPOKE1

 permit ip 192.168.100.0 0.0.0.255 192.168.1.0 0.0.0.255

 permit ip 192.168.254.0 0.0.0.255 192.168.1.0 0.0.0.255

 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

 permit ip 192.168.100.0 0.0.0.255 192.168.2.0 0.0.0.255

 permit ip 192.168.254.0 0.0.0.255 192.168.2.0 0.0.0.255

 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

!

ip access-list extended IPSEC_ACl_HUB1_AND_CLIENT1

 permit ip 192.168.100.0 0.0.0.255 192.168.254.0 0.0.0.255

 permit ip 192.168.1.0 0.0.0.255 192.168.254.0 0.0.0.255

 permit ip 192.168.2.0 0.0.0.255 192.168.254.0 0.0.0.255

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_ACl_HUB1_AND_CLIENT1

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set pool POOL

 reverse-route

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_ACl_HUB1_AND_SPOKE1

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.1.2

 set dead-connection history off

crypto map VPN 2 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 172.16.100.2 255.255.255.0

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.255.1 255.255.255.0

!

!

ip route 0.0.0.0 0.0.0.0 172.16.100.1

ip route 192.168.100.0 255.255.255.0 192.168.255.2

!

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:   Fri Nov 29 13:45:56 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Fri Nov 29 13:45:56 2019 (user: root)"

    Version                     = LSP_4_3

    CRLHandlingMode             = ENABLE

    PreserveIPsecSA             = FALSE

)

 

RoutingTable(

    Routes =

        Route(

            Destination = 0.0.0.0/0

            Gateway = 172.16.100.1

        ),

        Route(

            Destination = 192.168.100.0/24

            Gateway = 192.168.255.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 GOST_ENCRYPT_AND_INTEGRITY:ESP

(

    Transform* = ESPTransform

    (

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

        LifetimeSeconds     = 3600

        LifetimeKilobytes   = 4608000

    )

)

 

AddressPool POOL

(

    IPAddresses = 192.168.254.1..192.168.254.254

)

 

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:DMAP:1

(

    Transform = crypto:isakmp:policy:1

    AggrModeAuthMethod  = GOST:Sign

    MainModeAuthMethod  = GOST:Sign

    IKECFGPool          = POOL

    DPDIdleDuration     = 3

    DPDResponseDuration = 2

    DPDRetries          = 5

    Priority            = 100

)

 

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:DMAP:1

(

    TunnelingParameters = TunnelEntry(

        DFHandling=COPY

        Assemble=TRUE

    )

    ContainedProposals = ( GOST_ENCRYPT_AND_INTEGRITY:ESP )

    ReverseRoute = TRUE

    NoDeadConnectionHistory = TRUE

    IKERule = IKERule:VPN:2:DMAP:1

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 192.168.100.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.254.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.2.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.100.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.254.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.1.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        Label = "VPN:2:DMAP:1:IPSEC_ACl_HUB1_AND_CLIENT1"

        SourceIP = 192.168.100.0/24

        DestinationIP = 192.168.254.0/24

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:2:DMAP:1 >

        LogEventID = "IPsec:Protect:VPN:2:DMAP:1:IPSEC_ACl_HUB1_AND_CLIENT1"

    ),

    Filter (

        SourceIP = 192.168.1.0/24

        DestinationIP = 192.168.254.0/24

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:2:DMAP:1 >

        LogEventID = "IPsec:Protect:VPN:2:DMAP:1:IPSEC_ACl_HUB1_AND_CLIENT1"

    ),

    Filter (

        SourceIP = 192.168.2.0/24

        DestinationIP = 192.168.254.0/24

        Action = PASS

        ExtendedAction = ipsec< sa = IPsecAction:VPN:2:DMAP:1 >

        LogEventID = "IPsec:Protect:VPN:2:DMAP:1:IPSEC_ACl_HUB1_AND_CLIENT1"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

 

3.    Консоль FRR:

!

frr version 7.3

frr defaults traditional

hostname Hub1

log syslog informational

service integrated-vtysh-config

!

interface eth0

 pbr-policy PBR

!

pbr-map PBR seq 1

 match src-ip 192.168.1.0/24

 set nexthop 192.168.255.2

!

pbr-map PBR seq 2

 match src-ip 192.168.2.0/24

 set nexthop 192.168.255.2

!

pbr-map PBR seq 3

 match src-ip 192.168.254.0/24

 set nexthop 192.168.255.2

!

line vty

!

end

Конфигурации криптошлюза Spoke1

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/ARr9jQowUYR7wEbOWZlx61OvL

i7goonOFUYhNSGV49BA.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 ip 192.168.1.0 0.0.0.255 192.168.100.0 0.0.0.255

 permit ip 192.168.1.0 0.0.0.255 192.168.254.0 0.0.0.255

 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

 permit ip 192.168.2.0 0.0.0.255 192.168.100.0 0.0.0.255

 permit ip 192.168.2.0 0.0.0.255 192.168.254.0 0.0.0.255

 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

!

!

crypto map VPN 1 ipsec-isakmp

 match address IPSEC_ACl_HUB1_AND_SPOKE1

 set transform-set GOST_ENCRYPT_AND_INTEGRITY

 set peer 172.16.100.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

!

!

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.    Содержимое /etc/network/interfaces:

############################################################

# CAUTION: lines under special marker: ###netifcfg-*###

# contains autogenerated information. You can add/modify

# lines outside of those markers

############################################################

 

# loopback configuration

auto lo

iface lo inet loopback

 

auto eth1.10

iface eth1.10 inet static

mtu 1500

address 192.168.1.1

netmask 255.255.255.0

 

auto eth1.11

iface eth1.11 inet static

mtu 1500

address 192.168.2.1

netmask 255.255.255.0

 

###netifcfg-begin###

auto eth0

iface eth0 inet static

mtu 1500

address 172.16.1.2

netmask 255.255.255.0

broadcast 172.16.1.255

auto eth1

iface eth1 inet manual

mtu 1500

###netifcfg-end###

3.    Конфигурация LSP:

#   This is automatically generated LSP

#

#   Conversion Date/Time:   Fri Nov 29 14:17:34 2019

 

GlobalParameters(

    Title                       = "This LSP was automatically generated by CSP Converter at Fri Nov 29 14:17:34 2019 (user: root)"

    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   = 4608000

    )

)

 

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

)

 

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

)

 

FilterChain IPsecPolicy:VPN (

    Filters = Filter (

        ProtocolID = 17

        SourcePort = 500, 4500

        Action = PASS

        PacketType = LOCAL_UNICAST, LOCAL_MISDIRECTED

    ),

    Filter (

        SourceIP = 192.168.1.0/24

        DestinationIP = 192.168.100.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.1.0/24

        DestinationIP = 192.168.254.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.1.0/24

        DestinationIP = 192.168.2.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.2.0/24

        DestinationIP = 192.168.100.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.2.0/24

        DestinationIP = 192.168.254.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    ),

    Filter (

        SourceIP = 192.168.2.0/24

        DestinationIP = 192.168.1.0/24

        Action = PASS

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

        LogEventID = "IPsec:Protect:VPN:1:IPSEC_ACl_HUB1_AND_SPOKE1"

    )

)

 

NetworkInterface (

    LogicalName = "GigabitEthernet0/0"

    IPsecPolicy = IPsecPolicy:VPN

)

 

4.    Консоль FRR:

!

frr version 7.3

frr defaults traditional

hostname Spoke1

log syslog informational

service integrated-vtysh-config

!

interface eth1.10

 pbr-policy PBR.10

!

interface eth1.11

 pbr-policy PBR.11

!

pbr-map PBR.10 seq 1

 match src-ip 192.168.1.0/24

 set nexthop 172.16.1.1

!

pbr-map PBR.11 seq 1

 match src-ip 192.168.2.0/24

 set nexthop 172.16.1.1

!

line vty

!

end

Конфигурация Client1

1.    Конфигурация LSP:

GlobalParameters (

       Title = "This LSP was automatically generated by S-Terra Client AdminTool (st) at 2020.07.15 09:40:39"

       Version = LSP_4_3

       CRLHandlingMode = BEST_EFFORT

)

LDAPSettings (

       ResponseTimeout = 200

       HoldConnectTimeout = 60

       DropConnectTimeout = 5

)

IdentityEntry auth_identity_01(

       DistinguishedName *= CertDescription(

             Subject *= COMPLETE,"CN=Client1"

             )

)

CertDescription local_cert_dsc_01(

       Subject *= COMPLETE,"CN=Client1"

       Issuer *= COMPLETE,"C=RU,L=Zelenograd,O=S-Terra CSP,OU=RnD,CN=S-Terra CSP Test Root CA"

       SerialNumber = "2F000003A70353EB67D8B8080B0000000003A7"

       FingerprintMD5 = "374FCA9E2FA70405A38993F763009F0B"

)

CertDescription partner_cert_dsc_01(

)

AuthMethodGOSTSign auth_method_01(

       LocalID = auth_identity_01

       LocalCredential = local_cert_dsc_01

       RemoteCredential = partner_cert_dsc_01

       SendRequestMode = AUTO

       SendCertMode = AUTO

)

IKEParameters (

       DefaultPort = 500

       SendRetries = 5

       RetryTimeBase = 1

       RetryTimeMax = 30

       SessionTimeMax = 60

       InitiatorSessionsMax = 30

       ResponderSessionsMax = 20

       BlacklogSessionsMax = 16

       BlacklogSessionsMin = 0

       BlacklogSilentSessions = 4

       BlacklogRelaxTime = 120

       IKECFGPreferDefaultAddress = FALSE

)

IKETransform ike_trf_01(

       LifetimeSeconds = 28800

       CipherAlg  *= "G2814789CPRO1-K256-CBC-65534"

       HashAlg *= "GR341112_256TC26-65128"

       GroupID *= VKO2_1B

)

IKETransform ike_trf_02(

       LifetimeSeconds = 28800

       CipherAlg  *= "GR341215K-K256-CFB-65528"

       HashAlg *= "GR341112_256TC26-65128"

       GroupID *= VKO2_1B

)

IKETransform ike_trf_03(

       LifetimeSeconds = 28800

       CipherAlg  *= "G2814789CPRO1-K256-CBC-65534"

       HashAlg *= "GR341194CPRO1-65534"

       GroupID *= VKO_1B

)

IKETransform ike_trf_04(

       LifetimeSeconds = 28800

       CipherAlg  *= "G2814789CPRO1-K256-CBC-65534"

       HashAlg *= "GR341194CPRO1-65534"

       GroupID *= MODP_1536

)

ESPTransform esp_trf_01(

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

       LifetimeSeconds = 3600

       LifetimeKilobytes = 4608000

)

ESPProposal esp_proposal_01(

       Transform *=esp_trf_01

)

ESPTransform esp_trf_02(

       CipherAlg *= "GR341215K-K352-MGM-251"

       LifetimeSeconds = 3600

       LifetimeKilobytes = 4608000

)

ESPProposal esp_proposal_02(

       Transform *=esp_trf_02

)

ESPTransform esp_trf_03(

       CipherAlg *= "G2814789CPRO1-K256-CBC-254"

       IntegrityAlg *= "GR341194CPRO1-H96-HMAC-65534"

       LifetimeSeconds = 3600

       LifetimeKilobytes = 4608000

)

ESPProposal esp_proposal_03(

       Transform *=esp_trf_03

)

IKERule ike_rule_with_ikecfg_01(

       DoNotUseDPD = FALSE

       DPDIdleDuration = 60

       DPDResponseDuration = 5

       DPDRetries = 3

       MainModeAuthMethod *= auth_method_01

       Transform *= ike_trf_01,ike_trf_02,ike_trf_03,ike_trf_04

       IKECFGRequestAddress = TRUE

)

IPsecAction ipsec_action_01(

       PersistentConnection = TRUE

       TunnelingParameters *=

             TunnelEntry(

                    PeerAddress = 172.16.100.2

                    Assemble = TRUE

                    ReRoute = FALSE

                    TCPEncapsulation = FALSE

             )

       ContainedProposals *= (esp_proposal_01),(esp_proposal_02),(esp_proposal_03)

       IKERule = ike_rule_with_ikecfg_01

)

FilterChain filter_chain_input(

       Filters *= Filter(

             ProtocolID *= 17

             DestinationPort *= 500

             Action = PASS

             LogEventID = "pass_action_02_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             ProtocolID *= 17

             DestinationPort *= 4500

             Action = PASS

             LogEventID = "pass_action_02_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             SourceIP *= 172.16.100.2

             ProtocolID *= 50

             Action = PASS

             LogEventID = "pass_action_03_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             SourceIP *= 172.16.100.2

             ProtocolID *= 51

             Action = PASS

             LogEventID = "pass_action_03_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             Action = PASS

             LogEventID = "pass_action_04"

       )

)

FilterChain filter_chain_output(

       Filters *= Filter(

             ProtocolID *= 17

             SourcePort *= 500

             Action = PASS

             LogEventID = "pass_action_05_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             ProtocolID *= 17

             SourcePort *= 4500

             Action = PASS

             LogEventID = "pass_action_05_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             DestinationIP *= 172.16.100.2

             ProtocolID *= 50

             Action = PASS

             LogEventID = "pass_action_06_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             DestinationIP *= 172.16.100.2

             ProtocolID *= 51

             Action = PASS

             LogEventID = "pass_action_06_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             Action = PASS

             LogEventID = "pass_action_07"

       )

)

FilterChain filter_chain_classification_input(

       Filters *= Filter(

             Action = PASS

             LogEventID = "pass_action_08"

       )

)

FilterChain filter_chain_classification_output(

       Filters *= Filter(

             Action = PASS

             LogEventID = "pass_action_09"

       )

)

FilterChain filter_chain_ipsec(

       Filters *= Filter(

             ProtocolID *= 17

             SourcePort *= 500

             Action = PASS

              LogEventID = "pass_action_10_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             ProtocolID *= 17

             SourcePort *= 4500

             Action = PASS

             LogEventID = "pass_action_10_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             DestinationIP *= 172.16.100.2

             ProtocolID *= 50

             Action = PASS

             LogEventID = "pass_action_11_01"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             DestinationIP *= 172.16.100.2

             ProtocolID *= 51

             Action = PASS

             LogEventID = "pass_action_11_02"

             PacketType = LOCAL_UNICAST,LOCAL_MISDIRECTED

       ),Filter(

             DestinationIP *= 192.168.100.0/24,192.168.1.0/24,192.168.2.0/24

             Action = PASS

             ExtendedAction *= ipsec<sa=ipsec_action_01>

             LogEventID = "ipsec_action_01"

       ),Filter(

             Action = PASS

             LogEventID = "pass_action_12"

       )

)

NetworkInterface(

       InputFilter = filter_chain_input

       OutputFilter = filter_chain_output

       InputClassification = filter_chain_classification_input

       OutputClassification = filter_chain_classification_output

       IPsecPolicy = filter_chain_ipsec

)