Перейти к поиску
  1. Главная
  2. Продукты
  3. Типовые сценарии применения
  4. С-Терра Шлюз
  5. Примеры дополнительных возможностей
  6. Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP (протокол IPv6)

Настройки multiwan

Поиск в комплекте Источник

Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP (протокол IPv6)

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

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

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

Введение

Данная инструкция описывает настройку DMVPN IPv6 для сетевых инженеров, знакомых с данной технологией по оборудованию Cisco, а также разбирающихся в базовых настройках «С-Терра Шлюз».

Краткое описание технологии DMVPN

Технология DMVPN (англ. Dynamic Multipoint Virtual Private Network – динамическая многоточечная виртуальная частная сеть) позволяет динамически строить защищенные соединения без необходимости описывать каждое соединение в политике безопасности, что существенно упрощает масштабирование крупных сетей с полносвязной топологией. Автоматическое построение полносвязной защищенной топологии достигается за счет применения динамических протоколов маршрутизации и таких протоколов как NHRP (англ. Next Hop Resolution Protocol – протокол разрешения следующего узла) и multipoint GRE (англ. Generic Routing Encapsulation).

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

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

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

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

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

Администратор должен быть ознакомлен со сценарием «Организация защищенного взаимодействия между подсетями центрального офиса и филиалов посредством IPsec VPN туннеля (протокол IPv4)». Далее по тексту он будет называться базовым сценарием.

Также Администратор должен быть ознакомлен со сценарием «Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP». Далее по тексту он будет называться базовым сценарием DMVPN IPv4.

Дополнительно, Администратор должен быть ознакомлен со сценарием «Организация защищенного взаимодействия между подсетями центрального офиса и филиалов посредством IPsec VPN туннеля (протокол IPv6)».

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

  1. Требования к устройствам.
  2. 1. «С-Терра Шлюз».
  3. 1.1. Устройства «С-Терра Шлюз» должны быть инициализированы (подробнее на http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз <версия> -> «Подключение ПАК и инициализация С-Терра Шлюз на вычислительных системах архитектуры Intel x86-64»).

В «С-Терра Шлюз» версии 5.0 появилась возможность пройти инициализацию через интерфейс управления (management) по SSH, данная процедура и ее ограничения описаны в документации и на портале https://doc.s-terra.ru.

  1. 1.2. При использовании «С-Терра Шлюз» на виртуальных машинах тип сетевого адаптера виртуальной машины должен быть “VMXNET 3”. Работа на других типах адаптеров не гарантируется.
  2. 2. Центр выпуска сертификатов.
  3. 2.1. Должен быть настроен центр выпуска сертификатов (удостоверяющий центр, далее УЦ) для IPsec. Устройство с именем Certification_authority на схеме.
  4. 2.2. Для выпуска цифровых сертификатов допускается использование встроенного в OC Windows Server 2016 (или новее) удостоверяющего центра совместно с сертифицированным СКЗИ «КриптоПро» CSP 5.0 R2 (или новее).
  5. 2.3. Для тестовых целей можно использовать тестовый УЦ от «КриптоПро» (веб-интерфейс: https://testgost2012.cryptopro.ru/certsrv/certrqxt.asp).

Категорически запрещено использование тестового УЦ от «КриптоПро» в производственной (боевой) эксплуатации, так как в данном случае отсутствует возможность контролировать процесс выпуска сертификатов и, соответственно, процедуру аутентификации.

  1. 3. HTTP сервер для распространения списка отозванных сертификатов.
  2. 3.1. Функционирующий HTTP сервер для распространения списка отозванных сертификатов (СОС). Устройство с именем CRL_distribution_point на схеме. Если по объективным причинам использование СОС не представляется возможным или не требуется, то проверку СОС можно отключить в CLI «С-Терра Шлюз» (при соблюдении правил пользования).

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

  1. Требования к сетевому взаимодействию.
  2. 1. Между устройствами стенда должна быть обеспечена IP связность.

Общая схема стенда

Рисунок 1. Общая схема стенда

Общая логика работы

Данная инструкция описывает настройку технологии DMVPN на криптошлюзах безопасности «С-Терра Шлюз» 5.0. Будет настроено две mGRE подсети (dual cloud) и использован протокол динамической маршрутизации iBGP. В каждой mGRE подсети будет по два Hub. По окончании настройки реализуется возможность построения динамических защищенных соединений между всеми подсетями филиалов, а также подсетями филиалов и центрального офиса (см. Рисунок 1).

Стенд состоит из 20 устройств:

  • «С-Терра Шлюз» версии 5.0: Hub1, Hub2, Hub3, Hub4, Spoke1‑n1, Spoke1‑n2, Spoke2.
  • Роутеры на базе ОС Debian 12: Int‑router‑Hub, Ext‑router‑Hub1, Ext‑router‑Hub2, Ext‑router‑Hub3, Ext‑router‑Hub4, Core‑router, Ext‑router1‑Spoke1, Ext‑router2‑Spoke1.
  • Управляемые коммутаторы: Int‑switch‑Hub, Int‑switch‑Spoke1.
  • Персональные компьютеры: Host‑b‑hub, Host‑b‑spoke1, Host‑b‑spoke2.

Роутеры на базе ОС Debian 12 выбраны в качестве примера. В общем случае могут быть использованы любые маршрутизаторы, поддерживающие функции NAT и динамической маршрутизации (NAT в ОС Debian 12 будет реализован при помощи iptables, а динамическая маршрутизация при помощи пакета FRR).

  1. Размещение устройств.
  2. 1. В центральном офисе размещаются: центр выпуска сертификатов (Certification_authority), 4 криптошлюза «С-Терра Шлюз» (Hub1, Hub2, Hub3 и Hub4) версии 5.0, 4 маршрутизатора, преобразующие IPv6 адреса (Ext‑router‑Hub1, Ext‑router‑Hub2, Ext‑router‑Hub3, Ext‑router‑Hub4), маршрутизатор, анонсирующий в BGP маршрут до защищаемой подсети центрального офиса (Int‑router‑Hub), и персональный компьютер (Host‑b‑hub).
  3. 2. В филиале № 1 размещаются: 2 криптошлюза «С-Терра Шлюз» (Spoke1‑n1 и Spoke1‑n2) версии 5.0, 2 маршрутизатора, преобразующие IPv6 адрес, и персональный компьютер (Host‑b‑spoke1).
  4. 3. В филиале № 2 размещаются: криптошлюз «С-Терра Шлюз» (Spoke2) версии 5.0 и персональный компьютер (Host‑b‑spoke2).
  5. 4. В неконтролируемом сегменте размещаются: маршрутизатор (Core‑router) и HTTP сервер для распространения списка отозванных сертификатов (CRL_distribution_point).
  6. Подключение к сети Интернет.
  7. В данном сценарии для эмуляции сети Интернет используется маршрутизатор Core‑router.
  8. Подключение к сети Интернет на устройствах «С-Терра Шлюз» будет считаться успешным, если по протоколу ICMP (или «ping») будет доступен HTTP сервер для распространения списка отозванных сертификатов (устройство CRL_distribution_point на схеме).
  9. 1. Криптошлюзы Hub1, Hub2, Hub3 и Hub4 подключаются к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизаторы Ext‑router‑Hub1, Ext‑router‑Hub2, Ext‑router‑Hub3 и Ext‑router‑Hub4 соответственно).
  10. 2. Криптошлюзы Spoke1‑n1 и Spoke1‑n2 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Ext-router1-Spoke и Ext-router2-Spoke соответственно).
  11. 3. Криптошлюз Spoke2 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Core‑router).
  12. Параметры шифрования IPsec.
  13. Весь трафик между центральным офисом (2001:db8::192:168:100:0/112) и филиалами (2001:db8::192:168:1:0/112, 2001:db8::192:168:2:0/112) инкапсулируется в GRE, а GRE трафик защищается с использованием алгоритмов ГОСТ и протокола IPsec в транспортном IPv6 режиме.
  14. Между криптошлюзами в филиалах и центральным офисом устанавливаются статические IPsec туннели. Инициатором подключения является служебный трафик протоколов NHRP/BGP.
  15. Между филиальными криптошлюзами устанавливаются динамические IPsec туннели. Инициатором построения туннелей является реальный трафик защищаемых подсетей филиалов.

Режим работы IPsec туннеля должен быть транспортным. Работа IPsec туннеля в туннельном режиме не поддерживается для сети DMVPN на криптошлюзах безопасности «С-Терра Шлюз 5.0».

  1. 1. Параметры протокола IKE:
  • Аутентификация при помощи цифровых сертификатов, алгоритм подписи – ГОСТ Р 34.10-2012 (ключ 256 бит);
  • Алгоритм шифрования – ГОСТ Р 34.12-2015 Магма (ключ 256 бит);
  • Алгоритм вычисления хеш-функции – ГОСТ Р 34.11-2012 ТК26 Стрибог (ключ 256 бит);
  • Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) – VKO_GOSTR3410_2012_256 (ключ 256 бит).
  1. 2. Параметры протокола ESP
  • Комбинированный алгоритм шифрования и имитозащиты (контроль целостности) – ГОСТ Р 34.12-2015 Магма в режиме MGM (ключ 256 бит).
  1. Параметры межсетевого экранирования.
  2. Для пакетов, которые не защищаются IPsec, применяются следующие правила фильтрации:
  3. 1. Для «С-Терра Шлюз» версии 5.0:
  4. 1.1. На LAN интерфейсах IPv6 трафик не заблокирован.
  5. 1.2. На WAN интерфейсах разрешен входящий IPv6 трафик:
  6. 4.1.2.1. Пакеты сообщений Neighbor Solicitation (NS) и Neighbor Advertisement (NA) протокола Neighbor Discovery (ND). Разрешение приема сообщений ND‑NS необходимо для обнаружения криптошлюза смежным сетевым оборудованием (Router1 в настоящем сценарии) в случае, если инициатором обмена данными является не сам криптошлюз, а партнер. Прием сообщений ND‑NA разрешается для случая, когда сообщение ND‑NS посылается криптошлюзом, который инициирует обмен данными с партнером, а смежное сетевое оборудование посылает ND‑NA с link-local адреса IPv6.
  7. 1.2.2. Протокол UDP порты 500 и 4500 – для IKE и NAT-Traversal (ESP in UDP).
  8. 1.2.3. Протокол ICMP – для проверки доступности криптошлюза и работы механизма PathMTUd.
  9. 1.2.4. Протокол ESP (номер 50) – для работы IPsec.
  10. 1.2.5. Весь TCP и UDP трафик, для которого есть исходящее соединение (это динамические правила, которые создаются при помощи stateful фильтрации).
  11. 1.3. На WAN интерфейсах заблокирован исходящий незашифрованный GRE трафик и транзитный трафик до приватных IP адресов.
  12. 1.4. На WAN интерфейсах инспектируются все исходящие локальные и транзитные IPv6 соединения для протоколов TCP и UDP. На основе результатов инспектирования осуществляется фильтрация входящего трафика с учетом состояния сессии (stateful).
  13. 1.5. На WAN интерфейсах IPv4 трафик заблокирован – входящий и исходящий.
  14. 1.6. На LAN интерфейсах IPv4 трафик не заблокирован. При необходимости трафик IPv4 может быть заблокирован по аналогии с блокировкой трафика IPv4 на WAN интерфейсе.
  15. Отказоустойчивость.
  16. Отказоустойчивость обеспечивается протоколом NHRP и протоколом динамической маршрутизации BGP. Филиальные криптошлюзы одновременно регистрируются по протоколу NHRP на Hub1, Hub2, Hub3 и Hub4. Hub1 и Hub2 находятся в одной mGRE-подсети (2001:db8::10:10:10:0/112), а Hub3 и Hub4 находятся во второй mGRE-подсети (2001:db8::10:10:20:0/112).

Поддержка нескольких Hub в одной mGRE-подсети осуществляется, начиная с «С-Терра Шлюз» версии 5.0.

  1. 1. Динамическая маршрутизация.
  2. Динамическая маршрутизация между криптошлюзами филиалов и центрального офиса обеспечивается протоколом Internal BGP. Все криптошлюзы безопасности находятся в одной автономной системе №65000.
  3. Криптошлюзы безопасности, установленные в филиалах, отсылают маршрутную информацию о защищаемых подсетях только криптошлюзам в центральный офис, соответственно, получение маршрутной информации происходит тоже только из центрального офиса. Маршруты до защищаемых подсетей устанавливаются через mGRE-интерфейсы. Центральные криптошлюзы являются роут-рефлекторами (route-reflector), а филиальные – роут-рефлектор клиентами (route-reflector client).
  4. Между криптошлюзами в центральном офисе и роутером Int-router-Hub (AS №65001) передача маршрутной информации обеспечивается при помощи External BGP. Между криптошлюзами в центральном офисе передача маршрутной информации не обеспечивается.
  5. На каждом криптошлюзе филиала и на роутере Int-router-Hub будет набор резервирующих друг друга маршрутов для каждой из защищаемых подсетей, из которых будет использоваться лучший из доступных в настоящий момент. Выбор лучшего из доступных маршрутов будет настроен по правилу статического приоритета, которые будут определены при конфигурировании.

Настройка OSPF на mGRE-интерфейсах в «С-Терра Шлюз» версии 5.0 не поддерживается.

  1. 2. Отказоустойчивость филиала № 1.
  2. Повышение отказоустойчивости Филиала № 1 обеспечивается использованием протокола VRRP на LAN интерфейсах криптошлюзов. Криптошлюзы Spoke1‑n1 и Spoke1‑n2 объединяются в отказоустойчивый кластер, работающий на базе протокола VRRP в режиме Master/Backup. Протокол VRRP реализуется сервисом keepalived.

Конфигурация между нодами кластера не синхронизируется. При изменении настроек на одной ноде нужно выполнить аналогичные настройки на другой.

  1. Нода, находящаяся в состоянии Master, владеет VIP адресом в доверенном сегменте и, соответственно, обрабатывает трафик. Нода, находящаяся в состоянии Backup или Fault, не владеет VIP адресом.
  2. При помощи скрипта /etc/keepalived/scripts/check_ping сервис keepalived дополнительно контролирует состояние канала Интернет-провайдера посредством проверки доступности заданных узлов по протоколу ICMP. Если все заданные узлы недоступны определенное время, то нода кластера переходит в состояние FAULT, что приводит к переключению кластера на резервную ноду (в случае, если она была в состоянии BACKUP), которая подключена к другому Интернет-провайдеру. Резервирование подключения к Интернет обеспечивается следующим принципом – каждая нода кластера филиала подключается к соответствующему Интернет-провайдеру.
  3. При помощи конфигурационного файла /etc/keepalived/notify_common.conf и скрипта /etc/keepalived/scripts/notify_common обеспечивается следующая логика. Если нода переходит в состояние BACKUP или FAULT, то BGP пиринг с центральными криптошлюзами выключается. Если нода переходит в состояние MASTER, то BGP пиринг с центральными криптошлюзами включается.
  4. Также в настройках FRR добавляется маршрут до защищаемой сети центрального офиса через VIP адрес с дистанцией 240. Таким образом, если был получен маршрут по BGP, он будет более приоритетным чем маршрут через VIP адрес.

На портах коммутатора Int‑switch‑Spoke1, подключенных к криптошлюзам, обязательно должен быть включен режим portfast.

  1. 3. Отказоустойчивость филиала № 2.
  2. Отказоустойчивость филиала реализована резервированием каналов связи и управлением резервированными каналами связи при помощи сервиса «multiwan». Режим работы каналов основной/резервный. При отказе основного канала связи происходит переключение на работу через резервный канал связи (если он был доступен). При восстановлении работы основного канала связи происходит переключение на работу через основной канал связи.

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

Настройка устройства Host-b-hub

На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).

Настройка устройства Host-b-spoke1

На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).

Настройка устройства Host-b-spoke2

На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).

Настройка устройства Int-switch-Hub

На данном устройстве сетевые интерфейсы, коммутирующие криптошлюзы Hub1, Hub2, Hub3, Hub4 и роутер Int‑router‑Hub, должны быть в одном VLAN и в режиме portfast.

Настройка устройства Int-switch-Spoke1

На данном устройстве сетевые интерфейсы, коммутирующие криптошлюзы Spoke1‑n1, Spoke1‑n2 и персональный компьютер Host‑b‑spoke1, должны быть в одном VLAN и в режиме portfast.

Настройка устройства Core-router

На данном устройстве должны быть настроены IP-адреса в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).

Настройка устройства Ext-router-Hub1

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Ext-router-Hub2

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Ext-router-Hub3

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Ext-router-Hub4

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Ext-router1-Spoke1

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Ext-router2-Spoke1

На данном устройстве должно быть настроено:

  1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

Настройка устройства Int-router-Hub

На данном устройстве должно быть настроено:

  1. IP-адреса в соответствии с общей схемой стенда (см. Рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
  2. Динамическая маршрутизация. В приложении представлены настройки FRR.

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

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсети 2001:db8::192:168:100:0/112, 2001:db8::192:168:1:0/112, 2001:db8::192:168:2:0/112). Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec.

Начальные настройки

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

Войдите в CLI разграничения доступа (пользователь и пароль по умолчанию: administrator, s‑terra) установите правильный тип терминала и требуемую ширину, смените пароль для пользователя administrator.

Перейдите в linux bash консоль, установите пароль для пользователя root, правильное время и временную зону.

Подробная настройка с описанием команд приведена в базовом сценарии.

Настройки PKI (запросы и сертификаты)

Продукт не поддерживает разностные (delta) списки отзыва сертификатов, только базовые. Учитывайте это при выборе или развертывании УЦ.

Для аутентификации партнеров по IPsec можно использовать цифровые сертификаты, выпущенные при помощи сертифицированного СКЗИ, или предварительно распределенные ключи, созданные и введённые в соответствии с правилами пользования СКЗИ (появились в версии 5.0).

Сгенерируйте запрос на сертификат криптошлюза и сохраните этот запрос в файл на USB Flash накопителе. Доставьте файл с запросом на УЦ и выпустите по нему сертификат. Сертификат криптошлюза вместе с сертификатом УЦ доставьте на шлюз и импортируйте их в базу Продукта.

Подробная настройка с описанием команд приведена в базовом сценарии.

Настройка паролей доступа к консоли cisco-like

Войдите в cisco-like консоль и смените пароль для пользователя cscons (пароль по умолчанию: csp) и пароль на enable (пароль по умолчанию: csp).

Подробная настройка с описанием команд приведена в базовом сценарии.

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

Изменение состояния интерфейсов и назначение IP адресов в cisco-like консоли применяются сразу после ввода соответствующих команд. Политика безопасности применяется после выхода из режима конфигурирования.

  1. Проверьте включена ли маршрутизация IPv6, выполнив следующую команду:

root@sterragate:~# sysctl net.ipv6.conf.all.forwarding

net.ipv6.conf.all.forwarding = 1

  1. Маршрутизация должна быть включена при инициализации криптошлюза. При необходимости маршрутизация IPv6 может быть включена позднее записью настройки net.ipv6.conf.all.forwarding=1 в файл /etc/sysctl.d/02-sterra_internet_settings.conf с последующей перезагрузкой криптошлюза.
  2. Задайте имя устройства:

sterragate(config)#hostname Hub1

  1. Включите внешний TenGigabitEthernet0/0 (WAN) и внутренний TenGigabitEthernet0/1 (LAN) интерфейсы:

В зависимости от параметров сетевого интерфейса его имя может отличаться от TenGigabitEthernetN/M и иметь имена, например FastEthernetN/M, GigabitEthernetN/M.

Hub1(config)#interface range TenGigabitEthernet 0/0 - 1

Hub1(config-if-range)#no shutdown

Hub1(config-if-range)#exit

  1. Разрешите IPv6 трафик независимо от наличия списков доступа на интерфейсах:

Hub1(config)#ipv6 default filtering permit

  1. Примечание – По умолчанию на всех сетевых интерфейсах IPv6 трафик заблокирован – команда ipv6 default filtering deny. Команда ipv6 default filtering deny запрещает прохождение трафика IPv6 во всех направлениях на интерфейсах без списков доступа IPv6. В рамках настоящего сценария команда по умолчанию ipv6 default filtering deny приведет к блокировке входящего и исходящего трафика IPv6 на LAN интерфейсе, так как на WAN интерфейсе будет указан список доступа IPv6, а на LAN интерфейсе список доступа IPv6 не предполагается. Описание команды ipv6 default filtering deny|permit приведено в сценарии «Организация защищенного взаимодействия между подсетями центрального офиса и филиалов посредством IPsec VPN туннеля (протокол IPv6)».
  2. Настройте IPv6 адреса на WAN и LAN интерфейсах в соответствии со схемой стенда и маршрут по умолчанию:

Hub1(config)#interface TenGigabitEthernet0/0

Hub1(config-if)# no ip address

Hub1(config-if)# ipv6 address 2001:db8::100:100:100:2/112

Hub1(config-if)#interface TenGigabitEthernet0/1

Hub1(config-if)# no ip address

Hub1(config-if)# ipv6 address 2001:db8::192:168:255:10/112

Hub1(config-if)# exit

Hub1(config)# ipv6 route ::/0 2001:db8::100:100:100:1

Hub1(config)#end

  1. Проверьте доступность маршрута по умолчанию:

Hub1#ping 2001:db8::100:100:100:1

PING 2001:db8::100:100:100:1(2001:db8::100:100:100:1) 100 data bytes

108 bytes from 2001:db8::100:100:100:1: icmp_seq=1 ttl=64 time=0.297 ms

108 bytes from 2001:db8::100:100:100:1: icmp_seq=2 ttl=64 time=0.520 ms

108 bytes from 2001:db8::100:100:100:1: icmp_seq=3 ttl=64 time=0.331 ms

108 bytes from 2001:db8::100:100:100:1: icmp_seq=4 ttl=64 time=0.360 ms

108 bytes from 2001:db8::100:100:100:1: icmp_seq=5 ttl=64 time=0.534 ms

--- 2001:db8::100:100:100:1 ping statistics ---

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

rtt min/avg/max/mdev = 0.297/0.408/0.534/0.098 ms

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

Настройки шифрования осуществляются из cisco-like консоли криптошлюза.

  1. Параметры IKE:
  2. 1. Задайте общие параметры IKE:

Hub1(config)#crypto isakmp identity dn

Hub1(config)#crypto isakmp keepalive 3 3

Hub1(config)#crypto isakmp keepalive retry-count 3

Hub1(config)#crypto isakmp fragmentation

Hub1(config)#crypto isakmp security-association lifetime delta 50

Hub1(config)#crypto isakmp initiator-sessions-max 100

Hub1(config)#crypto isakmp responder-sessions-max 100

  1. 2. Создайте политику, описывающую алгоритмы IKE туннеля:

Hub1(config)#crypto isakmp policy 1

Hub1(config-isakmp)# encr magma

Hub1(config-isakmp)# hash stribog-256

Hub1(config-isakmp)# authentication gost-sig

Hub1(config-isakmp)# group vko2

Hub1(config-isakmp)#exit

  1. 3. Создайте профиль настроек ISAKMP (алгоритм IKE) под именем ALGS_PROFILE:

Hub1(config)#crypto isakmp profile ALGS_PROFILE

% A profile is deemed incomplete until it has match identity statements

Hub1(conf-isa-prof)# match identity dn

Hub1(conf-isa-prof)# set identity mapping

Hub1(conf-isa-prof)# set policy 1

Hub1(conf-isa-prof)#exit

  1. Примечание - В настоящем сценарии в отличии от базового сценария DMVPN IPv4 используется один раздел криптокарты с одним isakmp профилем, к которому привязана только одна isakmp политика. В базовом сценарии DMVPN IPv4 вторая isakmp политика использовалась для подключения криптошлюзов версии 4.3. Однако, криптошлюзы версии 4.3 не поддерживают IPv6 и поэтому в настоящем сценарии не рассматриваются.
  2. Параметры IPsec:
  3. 1. Отключите обновление ключа IPsec SA по достижению определенного объема переданного трафика:

Hub1(config)# crypto ipsec security-association lifetime kilobytes unlimited

  1. 2. Создайте IPsec трансформ, задающий комбинированный алгоритм шифрования и имитозащиты ГОСТ 34.12-2015 Магма в режиме MGM для трафика (для версий 5.0):

Hub1(config)#crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

Hub1(cfg-crypto-trans)# mode transport

Hub1(cfg-crypto-trans)#exit

Режим работы IPsec туннеля должен быть транспортным. В отличие от криптошлюзов версии 4.3 туннельный режим IPsec в сценарии DMVPN для криптошлюзов версии 5.0 не поддерживается и не может быть использован даже при отсутствии NAT.

  1. 3. Создайте сетевой object-group с именем SELF‑IPV6 для хранения в нем WAN адресов криптошлюза с целью дальнейшего его использования в ACL:

Hub1(config)# object-group v6-network SELF‑IPV6

Hub1(config-v6network-group)#description IP on WAN interface

Hub1(config-v6network-group)# host 2001:db8::100:100:100:2

Hub1(config-v6network-group)#exit

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

Hub1(config)# ipv6 access-list IPSEC_DMVPN_IPV6

Hub1(config-ipv6-acl)# remark special DMVPN filter

Hub1(config-ipv6-acl)# permit gre object-group SELF-IPV6 each

Hub1(config-ipv6-acl)#exit

Hub1(config)#

  1. Примечание - Ключевое слово each позволяет строить узкие IPsec туннели для любого адреса назначения. Адрес назначения берется из IP заголовка GRE пакета, в котором находится NBMA адрес криптошлюза.
  2. 5. Создайте динамическую крипто-карту (имя DMAP_IPV6, раздел 1) и привяжите её к статической (имя VPN_IPV6, раздел 1):

Hub1(config)# crypto dynamic-map DMAP_IPV6 1

Hub1(config-crypto-map)# match ipv6 address IPSEC_DMVPN_IPV6

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

Hub1(config-crypto-map)# set isakmp-profile ALGS_PROFILE

Hub1(config-crypto-map)# set security-association mss-fix out

Hub1(config-crypto-map)# set pre-fragmentation

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

Hub1(config-crypto-map)#exit

Hub1(config)#crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

Hub1(config)#

  1. 6. Прикрепите созданную статическую крипто-карту к внешнему интерфейсу TenGigabitEthernet0/0:

Hub1(config)#interface TenGigabitEthernet0/0

Hub1(config-if)#crypto map VPN_IPV6

Hub1(config-if)#exit

Подробная настройка с описанием команд приведена в базовом сценарии.

Настройка политики обработки СОС (CRL)

В целях безопасности настоятельно рекомендуется включать проверку списков отзыва сертификатов. Разностные списки отозванных сертификатов (delta CRL) не поддерживаются.

Включите проверку СОС и настройте автоматическую загрузку и импортирование в базу Продукта списка отозванных сертификатов с HTTP сервера CRL_distribution_point.

Подробная настройка с описанием команд приведена в базовом сценарии.

Настройка межсетевого экрана

Настройка межсетевого экрана осуществляются из cisco-like консоли.

  1. Создайте ACL с именем FW_OUTPUT_WAN_IPV6 для исходящего с WAN интерфейс IPv6 трафика:

Список доступа для исходящего трафика должен блокировать открытый трафик из защищаемой подсети криптошлюза 2001:db8::192:168:100:0/112 в защищаемые подсети филиалов 2001:db8::192:168:1:0/112 и 2001:db8::192:168:2:0/112 (считаем, что трафик защищаемых подсетей должен обязательно шифроваться), а также незашифрованный GRE.

Hub1(config)# ipv6 access-list FW_OUTPUT_WAN_IPV6

Hub1(config-ipv6-acl)#permit icmp any any nd-ns

Hub1(config-ipv6-acl)#permit icmp any any nd-na

Hub1(config-ipv6-acl)#deny gre any any

Hub1(config-ipv6-acl)# permit ipv6 object-group SELF-IPV6 any

Hub1(config-ipv6-acl)# exit

  1. Создайте ACL с именем FW_INPUT_WAN_IPV6 для входящего на WAN интерфейс IPv6 трафика:

Hub1(config)# ipv6 access-list FW_INPUT_WAN_IPV6

Hub1(config-ipv6-acl)#permit icmp any any nd-ns

Hub1(config-ipv6-acl)#permit icmp any any nd-na

Hub1(config-ipv6-acl)#permit udp any object-group SELF-IPV6 eq isakmp

Hub1(config-ipv6-acl)#permit udp any object-group SELF-IPV6 eq non500-isakmp

Hub1(config-ipv6-acl)#permit icmp any object-group SELF-IPV6

Hub1(config-ipv6-acl)#permit esp any object-group SELF-IPV6

Hub1(config-ipv6-acl)# exit

  1. Примечание - Список доступа для входящего трафика разрешает пакеты сообщений NS и NA протокола Neighbor Discovery (подробнее смотри п. 4.1.3.1 в “Общая логика работы”), входящие пакеты протоколов IKE, ESP, ICMP, а остальные блокирует только для случая, когда криптошлюз является ответчиком впервые. Если криптошлюз является инициатором или ответчиком в рамках ранее созданной сессии, то ответные пакеты будут разрешены, так как согласно алгоритму работы stateful фильтрации динамические разрешающие правила более приоритетны чем статические. Stateful фильтрация будет настроена далее в данном разделе. Динамические правила stateful фильтрации в cisco-like консоли НЕ отображаются, их можно посмотреть при помощи утилиты fwconn_mgr с параметром show.
  2. Создайте ACL с именами FIREWALL_OUT и FIREWALL_IN для запрета исходящего и входящего IPv4 трафика на WAN интерфейсе:

Hub1(config)#ip access-list extended FIREWALL_OUT

Hub1(config-ext-nacl)#deny ip any any

Hub1(config-ext-nacl)#exit

Hub1(config)#ip access-list extended FIREWALL_IN

Hub1(config-ext-nacl)#deny ip any any

Hub1(config-ext-nacl)#exit

  1. Создайте правила инспектирования всего TCP и UDP трафика и задайте необходимое максимальное количество сессий:

Hub1(config)#ip inspect tcp sessions-max 256000

Hub1(config)#ip inspect udp sessions-max 65536

Hub1(config)#ipv6 inspect name INSPECT tcp

Hub1(config)#ipv6 inspect name INSPECT tcp

  1. Прикрепите списки доступа и правила инспектирования на внешний интерфейс:

Hub1(config)#interface TenGigabitEthernet0/0

Hub1(config-if)#ipv6 access-group FW_OUTPUT_WAN_IPV6 out

Hub1(config-if)#ipv6 access-group FW_INPUT_WAN_IPV6 in

Hub1(config-if)#ip access-group FIREWALL_IN in

Hub1(config-if)#ip access-group FIREWALL_OUT out

Hub1(config-if)#ipv6 inspect INSPECT out

Hub1(config-if)#exit

Подробная настройка с описанием команд приведена в базовом сценарии.

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

На центральных шлюзах должно быть по одному mGRE-интерфейсу.

  1. Настройки mGRE интерфейсов осуществляются из linux bash, чтобы попасть в linux bash выполните следующую команду в CLI разграничения доступа (предварительно нужно выйти из консоли cisco-like):

Hub1#exit

administrator@Hub1] system

Entering system shell...

root@Hub1:~#

  1. Создайте файл /etc/network/interfaces.d/mgre0 и добавьте в него следующее содержимое:

Имя mGRE-интерфейса должно соответствовать шаблону: mgreN, где N – целое число.

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:100/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

При необходимости использовать явно заданную привязку физического адреса для отправки пакетов mGRE-туннеля не допускается использовать dev без local в комманде ip tunnel.

Пример правильной команды:

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit dev eth0 local 2001:db8::100:100:100:2

  1. Поднимите mGRE-интерфейс:

root@Hub1:~# ifup mgre0

  1. Убедитесь, что mGRE-интерфейс создан с нужными параметрами:

root@Hub1:~# ip -6 tunnel show mgre0

mgre0: gre/ipv6 remote :: local :: encaplimit 4 hoplimit 64 tclass inherit flowlabel 0x00000 (flowinfo 0x00000000) key 1

root@Hub1:~# ip -6 address show dev mgre0

7: mgre0@NONE: <MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 10000

inet6 2001:db8::10:10:10:100/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::7f00:1/64 scope host

valid_lft forever preferred_lft forever

Настройка NHRP

Настройки NHRP интерфейсов осуществляются из linux bash в следующей последовательности:

  1. Приведите файл /etc/opennhrp/opennhrp.conf к виду:

interface mgre0

multicast dynamic

holding-time 90

cisco-authentication secret

non-caching

  1. Примечание – Допустимый диапазон значения holding-time – от 30 до 150 секунд. Подробное описание параметра holding-time и ограничения по его изменению приведено в Базовом сценарии DMVPN IPv4 в разделе Описание параметра holding-time.
  2. Добавьте сервис OpenNHRP в автозагрузку и запустите его:

root@Hub1:~# systemctl enable opennhrp

Created symlink /etc/systemd/system/multi-user.target.wants/opennhrp.service -> /lib/systemd/system/opennhrp.service.

root@Hub1:~# systemctl start opennhrp

Настройка BGP

Динамическая маршрутизация настраивается через консоль сервиса FRR.

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

root@Hub1:~# systemctl enable frr

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

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

Created symlink /etc/systemd/system/multi-user.target.wants/frr.service → /lib/systemd/system/frr.service.

root@Hub1:~# systemctl start frr

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

root@Hub1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub1#

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

Hub1# configure terminal

  1. 1. Создайте route-map FROM-HUB1-OUT, которая будет менять local-preference для маршрутов, которые Hub1 получает из автономной системы 65001 (2001:db8::192:168:100:0/112) и ретранслирует в криптошлюзы филиалов:

Hub1(config)# route-map FROM-HUB1-OUT permit 1

Hub1(config-route-map)# set local-preference 100

Hub1(config-route-map)# exit

  1. Примечание - route-map будет изменять статический приоритет (local-preference) для объявляемых маршрутов или маршрутов, полученных по eBGP и не будет влиять на local‑preference маршрутов, полученных от Spoke-ов. Подробнее – смотри в базовом сценарии DMVPN IPv4.
  2. 2. Создайте route-map SET-NEXTHOP, которая будет устанавливать более высокий приоритет глобальных IPv6 адресов для маршрутов по сравнению с link-local адресами для этих же маршрутов, если для маршрута одновременно поступают и глобальные и link-local адреса IPv6 адреса маршрутизатора next-hop:

Hub1(config)# route-map SET-NEXTHOP permit 1

Hub1(config-route-map)# set ipv6 next-hop prefer-global

Hub1(config-route-map)# exit

  1. 3. Включите процесс протокола BGP для автономной системы 65000 и перейдите в режим его конфигурирования:

Hub1(config)# router bgp 65000

  1. 4. Установите идентификатор маршрутизатора:

Hub1(config-router)# bgp router-id 10.10.10.100

  1. 5. Включите логирование изменения статуса (например, up, down и другие) BGP соседа в журнале работы:

Hub1(config-router)# bgp log-neighbor-changes

  1. 6. Отключите обязательное наличие BGP фильтров для обмена маршрутами по eBGP сессий:

Hub1(config-router)# no bgp ebgp-requires-policy

  1. Примечание - Команда bgp ebgp-requires-policy включена по умолчанию и требует наличие фильтров при работе с eBGP соседями. В настоящем сценарии отключение ebgp-requires-policy производится с целью упрощения конфигурирования. Подробнее – смотри в базовом сценарии DMVPN IPv4.
  2. 7. Установите таймеры keepalive и hold time для BGP соседей:

Hub1(config-router)# timers bgp 3 9

  1. Примечание - Данные настройки производятся с целью ускорения сходимости iBGP и по согласованию с Производителем могут изменяться.
  2. 8. Создайте группу spokes-ibgp с номером автономной системы 65000 для BGP соседей из mgre подсети (криптошлюзов филиалов):

Hub1(config-router)# neighbor spokes-ibgp peer-group

Hub1(config-router)# neighbor spokes-ibgp remote-as 65000

Hub1(config-router)# bgp listen range 2001:db8::10:10:10:0/112 peer-group spokes-ibgp

  1. 9. Измените максимальное количество BGP соседей, которые могут подключиться к криптошлюзу по BGP одновременно:

Hub1(config-router)# bgp listen limit 5000

  1. 10. Добавьте bgp соседа 2001:db8::192:168:255:1 с номером автономной системы 65001:

Hub1(config-router)# neighbor 2001:db8::192:168:255:1 remote-as 65001

  1. 11. Включите пересылку маршрутов для группы spokes-ibgp:

Hub1(config-router)# address-family ipv6 unicast

Hub1(config-router-af)# neighbor spokes-ibgp route-reflector-client

  1. 12. Включите изменение nexthop адреса для маршрутов, полученных по eBGP, на адрес Hub1:

Hub1(config-router-af)# neighbor spokes-ibgp next-hop-self

  1. Примечание - Чтобы изменять next-hop адреса маршрутов, полученных по iBGP, можно использовать команду «neighbor spokes-ibgp next-hop-self force». В этом случае трафик между филиалами будет идти через центр (Аналог первой фазы DMVPN).
  2. 13. Примените route-map FROM-HUB1-OUT на отправленные маршруты к соседям из группы spokes-ibgp:

Hub1(config-router-af)# neighbor spokes-ibgp route-map FROM-HUB1-OUT out

  1. Примечание - Для данного сценария local-preference будет изменён для ретранслируемого маршрута до 2001:db8::192:168:100:0/112.
  2. 14. Примените route-map SET-NEXTHOP для маршрутов, поступающих от соседей из группы spokes-ibgp (Spoke’ов) и затем ретранслируемых другим соседям из группы spokes-ibgp:

Hub1(config-router-af)# neighbor spokes-ibgp route-map SET-NEXTHOP in

  1. 15. Сохраните изменения:

Hub1(config-router-af)# end

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;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf.

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

Настройка устройства Hub2 осуществляется аналогично устройству Hub1 с учетом соответствующих IP-адресов (см. Рисунок 1). В настройках FRR значение local-preference должно быть равно 75.

Значение mGRE key на Hub1 и на Hub2 должны совпадать. Но должен отличаться от значения mGRE key на Hub3 и Hub4.

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf.

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

Настройка устройства Hub3 осуществляется аналогично устройству Hub1 с учетом соответствующих IP-адресов (см. Рисунок 1). В настройках FRR значение local-preference должно быть равно 50.

Значение mGRE key на Hub3 и на Hub4 должны совпадать. Но должен отличаться от значения mGRE key на Hub1 и Hub2.

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf.

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

Настройка устройства Hub4 осуществляется аналогично устройству Hub1 с учетом соответствующих IP-адресов (см. Рисунок 1). В настройках FRR значение local-preference должно быть равно 25.

Значение mGRE key на Hub3 и на Hub4 должны совпадать. Но должен отличаться от значения mGRE key на Hub1 и Hub2.

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf.

Настройка устройства Spoke1-n1

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсети 2001:db8::192:168:100:0/112, 2001:db8::192:168:1:0/112, 2001:db8::192:168:2:0/112). Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec.

Начальные настройки, настройки PKI, настройка паролей доступа к консоли cisco-like, настройка сетевых параметров, настройка шифрования, настройка политики обработки СОС (CRL) и настройка межсетевого экрана осуществляется аналогично устройству Hub1 с учетом соответствующих IP-адресов (см. Рисунок 1).

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

На филиальных шлюзах должно быть по два mGRE-интерфейса (по два на каждый центральный шлюз).

  1. Настройки mGRE интерфейсов осуществляются из linux bash, чтобы попасть в linux bash выполните следующую команду в CLI разграничения доступа (предварительно нужно выйти из консоли cisco-like):

Spoke1‑n1#exit

administrator@Spoke1‑n1] system

Entering system shell...

root@Spoke1‑n1:~#

  1. Создайте файл /etc/network/interfaces.d/mgre0 и добавьте в него следующее содержимое:

Имя mGRE-интерфейса должно соответствовать шаблону: mgreN, где N – целое число.

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:100/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

  1. Создайте файл /etc/network/interfaces.d/mgre1 и добавьте в него следующее содержимое:

Имя mGRE-интерфейса должно соответствовать шаблону: mgreN, где N – целое число.

auto mgre1

iface mgre1 inet6 static

address 2001:db8::10:10:20:1/112

pre-up ip link del mgre1 2> /dev/null || true

pre-up ip tunnel add mgre1 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

post-up ethtool -K mgre1 tx-checksumming off > /dev/null

post-down ip link del mgre1

  1. Поднимите mGRE-интерфейс:

root@Spoke1‑n1:~# ifup mgre0

root@Spoke1‑n1:~# ifup mgre1

  1. Убедитесь, что mGRE-интерфейс создан с нужными параметрами:

root@Spoke1‑n1:~# ip -6 tunnel show mgre0

mgre0: gre/ipv6 remote :: local :: encaplimit 4 hoplimit 64 tclass inherit flowlabel 0x00000 (flowinfo 0x00000000) key 1

root@Spoke1‑n1:~# ip -6 tunnel show mgre1

mgre1: gre/ipv6 remote :: local :: encaplimit 4 hoplimit 64 tclass inherit flowlabel 0x00000 (flowinfo 0x00000000) key 2

root@Spoke1‑n1:~# ip -6 address show dev mgre0

7: mgre0@NONE: <MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 10000

inet6 2001:db8::10:10:10:1/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::7f00:1/64 scope host

valid_lft forever preferred_lft forever

root@Spoke1‑n1:~# ip -6 address show dev mgre1

8: mgre1@NONE: <MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 10000

inet6 2001:db8::10:10:20:1/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::7f00:1/64 scope host

valid_lft forever preferred_lft forever

Настройка NHRP

Настройка NHRP осуществляются из linux bash.

  1. Приведите файл /etc/opennhrp/opennhrp.conf к виду:

Маска в настройках opennhrp должна совпадать с маской на mgre интерфейсе.

interface mgre0

map 2001:db8::10:10:10:100/112 2001:db8::172:16:100:2 register

map 2001:db8::10:10:10:200/112 2001:db8::172:16:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

interface mgre1

map 2001:db8::10:10:20:100/112 2001:db8::172:17:100:2 register

map 2001:db8::10:10:20:200/112 2001:db8::172:17:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

  1. Примечание – В больших DMVPN сетях, содержащих более сотни устройств, может наблюдаться повышение нагрузки на криптошлюзы Центрального офиса после потери связи со всеми или большинством филиалов, например, из-за отказа провайдера. В этом случае криптошлюзы филиалов могут направлять Registration Request на Hub практически одновременно создавая пик нагрузки на него. Для повышения равномерности распределения по времени запросов Registration Request от филиальных криптошлюзов введен параметр reregister-time – время до начала перерегистрации Spoke на Hub после потери связи между ними. Пример настроек с использованием reregister-time:

interface mgre0

map 2001:db8::10:10:10:100/112 2001:db8::172:16:100:2 register reregister-time 60

map 2001:db8::10:10:10:200/112 2001:db8::172:16:101:2 register reregister-time 45-75

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

  1. По умолчанию время перерегистрации берётся из диапазона 60-180 секунд.
  2. Подробнее – смотри в базовом сценарии DMVPN IPv4.
  3. Добавьте сервис OpenNHRP в автозагрузку и запустите его:

root@Spoke1‑n1:~# systemctl enable opennhrp

Created symlink /etc/systemd/system/multi-user.target.wants/opennhrp.service -> /lib/systemd/system/opennhrp.service.

root@Spoke1‑n1:~# systemctl start opennhrp

  1. Через некоторое время проверьте, что между Spoke1‑n1 и центральными криптошлюзами Hub1, Hub2, Hub3, Hub4 поднялись IPsec туннели (если туннели не поднялись – проверьте настройки сети/IPsec/Firewall/NHRP, лог-файлы /var/log/cspvpngate.log и /var/log/syslog):

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 26 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 9276 7976

2 27 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 10308 8840

3 28 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 7728 6680

4 29 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:100:2,4500) active 3600 3224

IPsec connections:

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

1 615 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 183020 190588

2 617 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 133288 138832

3 618 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 50952 53044

4 619 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 36080 37576

Настройка BGP

Динамическая маршрутизация настраивается через консоль сервиса FRR.

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

root@Spoke1‑n1:~# 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‑n1:~# systemctl start frr

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

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

  1. Добавьте маршрут 2001:db8::192:168:100:0/112 через VIP адрес (2001:db8::192:168:1:20) с дистанцией 240:

Spoke1‑n1#configure terminal

Spoke1‑n1(config)# ipv6 route 2001:db8::192:168:100:0/112 2001:db8::192:168:1:20 240

  1. Примечания:
  • В DMVPN IPv6 в отличие от базового сценария DMVPN IPv4 маршруты должны указывать не на кластерный адрес VRRP, а на адрес LAN-интерфейса смежного устройства.
  • Данный маршрут будет устанавливаться в систему на резервной ноде кластера VRRP для обеспечения возможности опроса ее LAN интерфейса из подсети Центрального офиса, например, с целью централизованного сбора диагностической информации из Центрального офиса. Подробнее – смотри в базовом сценарии DMVPN IPv4.
  1. Настройте BGP (см. описание http://docs.frrouting.org):
  2. 1. Создайте route-map TO-HUB1-OUT, TO-HUB2-OUT, TO-HUB3-OUT, TO-HUB4-OUT. Данные route-map будет менять local-preference для маршрутов, анонсируемые филиалом в сторону криптошлюзов Центрального офиса (2001:db8::192:168:1:0/112):

Spoke1‑n1(config)# route-map TO-HUB1-OUT permit 1

Spoke1‑n1(config-route-map)#set local-preference 100

Spoke1‑n1(config-route-map)#exit

Spoke1‑n1(config)#route-map TO-HUB2-OUT permit 1

Spoke1‑n1(config-route-map)#set local-preference 75

Spoke1‑n1(config-route-map)#exit

Spoke1‑n1(config)#route-map TO-HUB3-OUT permit 1

Spoke1‑n1(config-route-map)#set local-preference 50

Spoke1‑n1(config-route-map)#exit

Spoke1‑n1(config)#route-map TO-HUB4-OUT permit 1

Spoke1‑n1(config-route-map)#set local-preference 25

Spoke1‑n1(config-route-map)#exit

Примечание - На криптошлюзах всех остальных филиалах маршрут до защищаемой подсети Spoke1-n1, полученный через Hub1, будет иметь наибольший приоритет, а маршрут до защищаемой подсети Spoke1-n1, полученный через Hub4, будет иметь наименьший приоритет.

  1. 2. Включите процесс протокола BGP для автономной системы 65000 и перейдите в режим его конфигурирования:

Spoke1‑n1(config)#router bgp 65000

  1. 3. Установите идентификатор маршрутизатора:

Spoke1‑n1(config-router)#bgp router-id 192.168.1.10

  1. 4. Включите логирование изменения статуса (например, up, down и другие) BGP соседа в журнале работы:

Spoke1‑n1(config-router)#bgp log-neighbor-changes

  1. 5. Установите таймеры keepalive и holdtime для BGP соседа:

Spoke1‑n1(config-router)#timers bgp 3 9

  1. 6. Добавьте mGRE-адреса Hub-ов в качестве BGP соседей с номером автономной системы 65000 и установите время повторной попытки построения BGP соседства в 30 секунд:

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:10:100 remote-as 65000

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:10:100 timers connect 30

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:20:100 remote-as 65000

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:20:100 timers connect 30

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:10:100 remote-as 65000

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:20:100 timers connect 30

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:20:200 remote-as 65000

Spoke1‑n1(config-router)#neighbor 2001:db8::10:10:20:200 timers connect 30

  1. 7. Включите анонсирование маршрута до защищаемой подсети Филиала №1:

Spoke1‑n1(config-router)#address-family ipv6 unicast

Spoke1‑n1Spoke1‑n1(config-router-af)#network 2001:db8::192:168:1:0/112

  1. 8. Примените route-map к соседям:

Spoke1‑n1(config-router-af)#neighbor 2001:db8::10:10:10:100 activate

Spoke1‑n1(config-router-af)#neighbor 2001:db8::10:10:10:100 route-map TO-HUB1-OUT out

Spoke1‑n1(config-router-af)# neighbor 2001:db8::10:10:10:200 activate

Spoke1‑n1(config-router-af)#neighbor 2001:db8::10:10:10:200 route-map TO-HUB2-OUT out

Spoke1‑n1(config-router-af)# neighbor 2001:db8::10:10:20:100 activate

Spoke1‑n1(config-router-af)#neighbor 2001:db8::10:10:20:100 route-map TO-HUB3-OUT out

Spoke1‑n1(config-router-af)# neighbor 2001:db8::10:10:20:200 activate

Spoke1‑n1(config-router-af)#neighbor 2001:db8::10:10:20:200 route-map TO-HUB4-OUT out

  1. 9. Сохраните изменения:

Spoke1‑n1(config-router-af)#end

Spoke1‑n1(config-router)# exit

Spoke1‑n1# write

Note: this version of vtysh never writes vtysh.conf

Building Configuration...

Integrated configuration saved to /etc/frr/frr.conf[OK]

[OK]

Настройка VRRP

  1. В отличие от версии 4.3 в версии 5.0 значительная часть настроек VRRP перенесена в cisco‑like консоль. Но настройка VRRP конфигурационного файла /etc/keepalived/notify_common.conf осуществляется из linux bash.
  2. Сохраните копию файла /etc/keepalived/notify_common.conf в /etc/keepalived/notify_common.conf.backup и приведите файл /etc/keepalived/notify_common.conf к виду:

############################################## specific to DMVPN scenario ###########################################################

# Flag indicate that DMVPN scenario is using on clustered spokes.

# Used to mange BGP neighbors shutdown state or OSPF interfaces passive mode when VRRP node changes it STATE.

FLAG_DMVPN_SCENARIO_ON_CLUSTERED_SPOKE="true"

### IBGP specific options ###

# Internal routing protocol for DMVPN (IBGP or OSPF).

DMVPN_INTERNAL_ROUTING_PROTOCOL="IBGP"

# Local BGP AS Number. Set it if internal routing protocol is IBGP.

DMVPN_LOCAl_ASN="65000"

# BGP neighbors (separated by space) which must be shutted down if VRRP node transit to BACKUP of FAULT state,

# and no shutted down if VRRP node transit to MASTER state.

# Set it if internal routing protocol is IBGP.

DMVPN_BGP_NEIGHBORS="2001:db8::10:10:10:100 2001:db8::10:10:10:200 2001:db8::10:10:20:100 2001:db8::10:10:20:200"

Конфигурационный файл /etc/keepalived/notify_common.conf управляет скриптом /etc/keepalived/scripts/notify_common. Логика следующая: если нода переходит в состояние BACKUP или FAULT, то BGP пиринг с центральными криптошлюзами (2001:db8::10:10:10:100, 2001:db8::10:10:10:200, 2001:db8::10:10:20:100, 2001:db8::10:10:20:200) выключается. Если нода переходит в состояние MASTER, то BGP пиринг с центральными криптошлюзами включается.

Изменение параметров DMVPN в файле /etc/keepalived/notify_common.conf после настройки keepalived (в процессе работы):

При необходимости изменения параметров следует:

1) Перезапустить FRR с помощью команды "systemctl restart frr" (это действие загрузит конфигурацию, которая соответствует состоянию MASTER). ВАЖНО: после перезапуска FRR может возникнуть ассиметричная маршрутизация. Это связано с тем, что устройство в состоянии BACKUP или FAULT будет участвовать в обмене BGP маршрутами;

2) Изменить требуемые настройки FRR, которые соответствует состоянию MASTER;

3) Сохранить настройки FRR (команда write).

4) После настройки FRR требуется изменить соответствующие параметры DMVPN в файле /etc/keepalived/notify_common.conf.

5) Для устройств, находящихся в состоянии BACKUP или FAULT, следует перезапустить сервис keepalived, чтобы применить настройки из файла /etc/keepalived/notify_common.conf. Для устройства в состоянии MASTER настройки применяются после перехода в состояние BACKUP или FAULT.

Если была допущена ошибка в файле /etc/keepalived/notify_common.conf в части DMVPN (например, номер автономной системы или IP-адрес BGP пира не совпадает с настройками FRR), то при переходе ноды в состояние BACKUP или FAULT в логах /var/log/cspvpngate.log появится сообщение "VRRP notify common script: ERROR: can not set shutdown on neighbor". После исправления ошибок в файле достаточно перезапустить сервис keepalived.

  1. Остальные настройки VRRP осуществляются из cisco-like консоли криптошлюза. Включите использование vrrp v3:

Spoke1‑n1# configure terminal

Spoke1‑n1(config)# fhrp version vrrp v3

  1. Включите запуск общего скрипт-файла (/etc/keepalived/scripts/notify_common) при переходе VRRP инстанса между состояниями:

Spoke1‑n1(config)# vrrp notify common

  1. Создайте правило SLA (по умолчанию для IPv6):

Spoke1‑n1(config)#vrrp track sla check_isp_link ipv6

  1. Укажите целевые хосты для проверки связи:

Spoke1‑n1(vrrp-track-sla)# host 2001:db8::172:16:1:1

Spoke1‑n1(vrrp-track-sla)# host 2001:db8::172:16:101:15

  1. Укажите режим SLA на проверку с помощью ICMP:

Spoke1‑n1(vrrp-track-sla)# mode icmp-echo

  1. Задайте условие успешности проверки, как доступность любого из указанного хостов:

Spoke1‑n1(vrrp-track-sla)# reachability any

  1. Задайте интерфейс, с которого будут отправляться ICMP:

Spoke1‑n1(vrrp-track-sla)# source TenGigabitEthernet0/0

  1. Задайте количество допустимых неуспешных попыток проверки доступности хостов:

Spoke1‑n1(vrrp-track-sla)# fall 15

  1. Задайте количество необходимых успешных попыток проверки доступности хостов:

Spoke1‑n1(vrrp-track-sla)# rise 10

  1. Задайте время ожидания проверки доступности хоста:

Spoke1‑n1(vrrp-track-sla)# timeout 2

  1. Интервал между проверками доступности хоста:

Spoke1‑n1(vrrp-track-sla)# interval 3

Spoke1‑n1(vrrp-track-sla)# exit

  1. Включите VRRP на внутреннем интерфейсе (создает VRRP инстанс):

Spoke1‑n1(config)# interface TenGigabitEthernet0/1

Spoke1‑n1(config-if)# vrrp 1 address-family ipv6

Spoke1‑n1(config-if-vrrp)#

  1. Задайте кластерный IPv6 адрес:

Spoke1‑n1(config-if-vrrp)# address 2001:db8::192:168:1:1/112

  1. Установите интервал отправки advertisement-сообщений:

Spoke1‑n1(config-if-vrrp)# timers advertise 3

  1. Установите интервал отправки gratuitous ARP-сообщения:

Spoke1‑n1(config-if-vrrp)# timers garp 5

  1. Прикрепите к интерфейсу SLA правило:

Spoke1‑n1(config-if-vrrp)# track sla check_isp_link

  1. Включите отслеживание внешнего интерфейса:

Spoke1‑n1(config-if-vrrp)# track interface TenGigabitEthernet0/0

  1. Отключите preempt mode:

Spoke1‑n1(config-if-vrrp)# no preempt

  1. Установите приоритет для VRRP инстанса:

Spoke1‑n1(config-if-vrrp)# priority 100

Spoke1‑n1(config-if-vrrp)#end

  1. Убедитесь, что нода перешла в состояние MASTER. Для этого войдите в cisco-like консоль криптошлюза и посмотрите настройки VRRP:

Spoke1‑n1#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Master IPv6

  1. Убедитесь, что доступен один из хостов указанных в SLA:

Spoke1‑n1#show vrrp sla check_isp_link

Rule name: check_isp_link

Result: Success

Hostname State Last checked at

2001:db8::172:16:1:1 reachable 2024-05-28|09:23:25.032

2001:db8::172:16:101:15 unknown None

Примечание - Из-за того, что проверяется доступность любого хоста, после получения ответа от 2001:db8::172:16:1:1 проверка второго хоста не происходит.

  1. Убедитесь, что на внутреннем интерфейсе eth1 появился кластерный VIP-адрес:

root@Spoke1‑n1:~# ip -6 address show dev eth1

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 10000

altname enp11s0

altname ens192

altname TenGigabitEthernet0_1

inet6 2001:db8::192:168:1:1/112 scope global nodad

valid_lft forever preferred_lft forever

inet6 2001:db8::192:168:1:10/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::2ce4:3dfa:e90c:8b5f/64 scope link stable-privacy

valid_lft forever preferred_lft forever

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/network/interfaces.d/mgre1;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/keepalived/keepalived.conf.

Настройка устройства Spoke1-n2

Настройка устройства Spoke1‑n2 осуществляется аналогично устройству Spoke1‑n1 с учетом соответствующих IP-адресов (см. Рисунок 1).

Значение bgp router-id у резервной ноды должно отличаться от значения основной ноды (Spoke1‑n1).

Значение priority в VRRP у резервной ноды должно быть меньше, чем у основной ноды.

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/network/interfaces.d/mgre1;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/keepalived/keepalived.conf.

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

Настройка может осуществляться и удаленно (по SSH), но исключительно по доверенному каналу связи. Доверенным каналом связи может считаться канал в пределах контролируемой зоны в случае отсутствия в нем нарушителя (в нашем примере это подсети 2001:db8::192:168:100:0/112, 2001:db8::192:168:1:0/112, 2001:db8::192:168:2:0/112). Доверенным каналом связи также считается канал, защищенный при помощи протокола IPsec.

Начальные настройки, настройки PKI, настройка паролей доступа к консоли cisco-like, настройка политики обработки СОС (CRL), настройка межсетевого экрана, настройка mGRE-интерфейсов, настройка NHRP и настройка BGP осуществляется аналогично устройству Spoke1-n1 с учетом соответствующих IP-адресов (см. Рисунок 1). Настройки VRRP на Spoke2 не выполняются. Соответстветственно в настройках BGP не нужно добавлять маршрут через VIP адрес.

Из-за отсутствия маршрута по умолчанию до настройки multiwan, СОС не будет загружен в базу Продукта во время настройки политики обработки СОС (CRL).

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

Изменение состояния интерфейсов и назначение IP адресов в cisco-like консоли применяются сразу после ввода соответствующих команд. Политика безопасности применяются после выхода из режима конфигурирования.

  1. Проверьте включена ли маршрутизация IPv6, выполнив следующую команду:

root@sterragate:~# sysctl net.ipv6.conf.all.forwarding

net.ipv6.conf.all.forwarding = 1

  1. Маршрутизация должна быть включена при инициализации криптошлюза. При необходимости маршрутизация IPv6 может быть включена позднее записью настройки net.ipv6.conf.all.forwarding=1 в файл /etc/sysctl.d/02-sterra_internet_settings.conf с последующей перезагрузкой криптошлюза.
  2. Задайте имя устройства:

sterragate(config)#hostname Spoke2

  1. Включите WAN и LAN интерфейсы и настройте IP адрес на WAN и LAN интерфейсах в соответствии со схемой стенда:

Spoke2(config)#interface TenGigabitEthernet0/0

Spoke2(config-if)# no ip address

Spoke2(config-if)# ipv6 address 2001:db8::172:16:2:2/112

Spoke2(config-if)# no shutdown

Spoke2(config-if)#interface TenGigabitEthernet0/1

Spoke2(config-if)# no ip address

Spoke2(config-if)# ipv6 address 2001:db8::172:16:2:2/112

Spoke2(config-if)# no shutdown

Spoke2(config-if)#interface TenGigabitEthernet0/2

Spoke2(config-if)# no ip address

Spoke2(config-if)# ipv6 address 2001:db8::192:168:2:1/112

Spoke2(config-if)# no shutdown

Spoke2(config)#end

  1. Примечание – маршрут по умолчанию будет добавлен с помощью сервиса multiwan.
  2. Разрешите IPv6 трафик независимо от наличия списков доступа на интерфейсах:

Spoke2(config)#ipv6 default filtering permit

  1. Примечание – Описание команды ipv6 default filtering deny|permit приведено в сценарии «Организация защищенного взаимодействия между подсетями центрального офиса и филиалов посредством IPsec VPN туннеля (протокол IPv6)».
  2. Проверьте доступность Core-router по обоим WAN интерфейсам:

Spoke2#ping 2001:db8::172:16:2:1

PING 2001:db8::172:16:2:1(2001:db8::172:16:2:1) 100 data bytes

108 bytes from 2001:db8::172:16:2:1: icmp_seq=1 ttl=64 time=2.16 ms

108 bytes from 2001:db8::172:16:2:1: icmp_seq=2 ttl=64 time=0.268 ms

108 bytes from 2001:db8::172:16:2:1: icmp_seq=3 ttl=64 time=0.465 ms

108 bytes from 2001:db8::172:16:2:1: icmp_seq=4 ttl=64 time=0.303 ms

108 bytes from 2001:db8::172:16:2:1: icmp_seq=5 ttl=64 time=0.298 ms

--- 2001:db8::172:16:2:1 ping statistics ---

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

rtt min/avg/max/mdev = 0.268/0.698/2.160/0.733 ms

Spoke2#ping 2001:db8::172:17:2:1

PING 2001:db8::172:17:2:1(2001:db8::172:17:2:1) 100 data bytes

108 bytes from 2001:db8::172:17:2:1: icmp_seq=1 ttl=64 time=1.19 ms

108 bytes from 2001:db8::172:17:2:1: icmp_seq=2 ttl=64 time=0.275 ms

108 bytes from 2001:db8::172:17:2:1: icmp_seq=3 ttl=64 time=0.267 ms

108 bytes from 2001:db8::172:17:2:1: icmp_seq=4 ttl=64 time=0.249 ms

108 bytes from 2001:db8::172:17:2:1: icmp_seq=5 ttl=64 time=0.369 ms

--- 2001:db8::172:17:2:1 ping statistics ---

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

rtt min/avg/max/mdev = 0.249/0.469/1.187/0.361 ms

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

Настройка шифрования осуществляется аналогично устройству Spoke1-n1 с учетом соответствующих IP-адресов (см. Рисунок 1) и наличия двух WAN интерфейсов у Spoke2. В отличие от базового сценария DMVPN IPv4, в данном сценарии IPv6 адреса двух WAN интерфейсов Spoke2 разнесены в две object-group с именами SELF‑ISP1‑IPV6 и SELF‑ISP2‑IPV6. Наличие двух object‑group в данном сценарии по одному WAN IPv6 адресу в каждой не является обязательным и принципиальным отличием от базового сценария DMVPN IPv4. При необходимости и целесообразности может использоваться одна object‑group с двумя WAN адресами с соответствующими изменения в других частях cisco‑like конфигурации.

Настройки шифрования осуществляются из cisco-like консоли криптошлюза.

  1. Параметры IKE выполните аналогично устройствам Hub1 и Spoke1-n1.
  2. Параметры IPsec:
  3. 1. Отключите обновление ключа IPsec SA по достижению определенного объема переданного трафика:

Spoke2(config)# crypto ipsec security-association lifetime kilobytes unlimited

  1. 2. Создайте IPsec трансформ, задающий комбинированный алгоритм шифрования и имитозащиты ГОСТ 34.12-2015 Магма в режиме MGM для трафика (для версий 5.0):

Spoke2(config)#crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

Spoke2(cfg-crypto-trans)# mode transport

Spoke2(cfg-crypto-trans)#exit

Режим работы IPsec туннеля должен быть транспортным. В отличие от криптошлюзов версии 4.3 туннельный режим IPsec в сценарии DMVPN для криптошлюзов версии 5.0 не поддерживается и не может быть использован даже при отсутствии NAT.

  1. 3. Создайте сетевые object-group с именами SELF‑ISP1‑IPV6 и SELF‑ISP2‑IPV6 для хранения в каждом из них одного из двух WAN адресов криптошлюза с целью дальнейшего его использования в ACL:

Spoke2(config)#object-group v6-network SELF-ISP1-IPV6

Spoke2(config-v6network-group)# description IP on WAN interface for ISP1

Spoke2(config-v6network-group)# host 2001:db8::172:16:2:2

Spoke2(config-v6network-group)# exit

Spoke2(config)#object-group v6-network SELF-ISP2-IPV6

Spoke2(config-v6network-group)# description IP on WAN interface for ISP2

Spoke2(config-v6network-group)# host 2001:db8::172:17:2:2

Spoke2(config-v6network-group)# exit

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

Spoke2(config)# ipv6 access-list IPSEC_DMVPN_ISP1_IPV6

Spoke2(config-ipv6-acl)# remark special DMVPN filter for ISP1

Spoke2(config-ipv6-acl)# permit gre object-group SELF-ISP1-IPV6 each

Spoke2(config-ipv6-acl)#exit

Spoke2(config)# ipv6 access-list IPSEC_DMVPN_ISP2_IPV6

Spoke2(config-ipv6-acl)# remark special DMVPN filter for ISP2

Spoke2(config-ipv6-acl)# permit gre object-group SELF-ISP2-IPV6 each

Spoke2(config-ipv6-acl)#exit

Spoke2(config)#

  1. Примечание - Ключевое слово each позволяет строить узкие IPsec туннели для любого адреса назначения. Адрес назначения берется из IP заголовка GRE пакета, в котором находится NBMA адрес криптошлюза.
  2. 5. Создайте динамические крипто-карты (имена DMAP_ISP1_IPV6, раздел 1 и DMAP_ISP1_IPV6, раздел 1) и привяжите их к соответствующим статическим (имена VPN_ISP1_IPV6, раздел 1 и VPN_ISP2_IPV6, раздел 1):

Spoke2(config)# crypto dynamic-map DMAP_ISP1_IPV6 1

Spoke2(config-crypto-map)# match ipv6 address IPSEC_DMVPN_ISP1_IPV6

Spoke2(config-crypto-map)# set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

Spoke2(config-crypto-map)# set isakmp-profile ALGS_PROFILE

Spoke2(config-crypto-map)# set security-association mss-fix out

Spoke2(config-crypto-map)# set pre-fragmentation

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

Spoke2(config-crypto-map)#exit

Spoke2(config)#crypto map VPN_ISP1_IPV6 1 ipsec-isakmp dynamic DMAP_ISP1_IPV6

Spoke2(config)# crypto dynamic-map DMAP_ISP2_IPV6 1

Spoke2(config-crypto-map)# match ipv6 address IPSEC_DMVPN_ISP2_IPV6

Spoke2(config-crypto-map)# set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

Spoke2(config-crypto-map)# set isakmp-profile ALGS_PROFILE

Spoke2(config-crypto-map)# set security-association mss-fix out

Spoke2(config-crypto-map)# set pre-fragmentation

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

Spoke2(config-crypto-map)#exit

Spoke2(config)#crypto map VPN_ISP2_IPV6 1 ipsec-isakmp dynamic DMAP_ISP2_IPV6

Spoke2(config)#

  1. 6. Прикрепите созданные статические крипто-карты VPN_ISP1_IPV6 и VPN_ISP2_IPV6 к внешним интерфейсам TenGigabitEthernet0/0 и TenGigabitEthernet0/1:

Spoke2(config)#interface TenGigabitEthernet0/0

Spoke2(config-if)#crypto map VPN_ISP1_IPV6

Spoke2(config-if)#exit

Spoke2(config)#interface TenGigabitEthernet0/1

Spoke2(config-if)#crypto map VPN_ISP2_IPV6

Spoke2(config-if)#exit

Подробная настройка с описанием команд приведена в базовом сценарии.

Настройка multiwan

Настройка осуществляются из linux bash. Подробное описание параметров приведено в сценарии «Резервирование каналов связи при помощи пакета «multiwan» (протокол IPv6)».

  1. Приведите файл /etc/multiwan/config.yaml к виду:

config_format_version: 1

links_params:

links:

- name: ISP1

check:

hosts_reachability: any

ipv6:

hosts:

- 2001:db8::172:16:101:15

- 2001:db8::172:16:2:1

source_address: 2001:db8::172:16:2:2

method:

icmp:

max_rtt: 100

interval: 3

restore_interval: 1

restore_count: 10

failure_count: 10

tos: 184

data_size: 56

iface_name: eth0

prio: 300

routes:

ipv6:

networks:

- ::/0

nexthop: 2001:db8::172:16:2:1

source_address: 2001:db8::172:16:2:2

watch_foreign_routes: true

- name: ISP2

check:

hosts_reachability: any

ipv6:

hosts:

- 2001:db8::172:16:101:15

- 2001:db8::172:17:2:1

source_address: 2001:db8::172:17:2:2

method:

icmp:

max_rtt: 100

interval: 3

restore_interval: 1

restore_count: 10

failure_count: 10

tos: 184

data_size: 56

iface_name: eth1

prio: 200

routes:

ipv6:

networks:

- ::/0

nexthop: 2001:db8::172:17:2:1

source_address: 2001:db8::172:17:2:2

watch_foreign_routes: True

Завершение настройки Spoke2

  1. После настройки запустите сервис multiwan, а также добавьте его в автозагрузку:

root@Spoke2:~# systemctl start multiwan.service

root@Spoke2:~# systemctl enable multiwan.service

  1. Посмотреть лог работы сервиса можно в файле /var/log/cspvpngate.log:

root@Spoke2:~# tail -n 1000 /var/log/cspvpngate.log | grep multiwan

2024-05-28T10:58:10.042075+03:00 Spoke2 multiwan: INFO: Starting multiwan...

2024-05-28T10:58:11.421765+03:00 Spoke2 multiwan: INFO: NAT translations table has been cleared.

2024-05-28T10:58:12.438633+03:00 Spoke2 multiwan: INFO: LSP was reloaded.

2024-05-28T10:58:12.445774+03:00 Spoke2 multiwan: INFO: Used interface "eth0". Nexthop "2001:db8::172:16:2:1".

  1. Проверьте, что добавлены маршруты объявлены в настройках multiwan:

root@Spoke2:~# ip -6 route show proto multiwan

default via 2001:db8::172:16:2:1 dev eth0 src 2001:db8::172:16:2:2 metric 700 pref medium

  1. Проверьте что маршрут до IP адреса HTTP сервера CRL_distribution_point в системе:

root@Spoke2:~# ip -6 route get 2001:db8::172:16:101:15

2001:db8::172:16:101:15 from :: via 2001:db8::172:16:2:1 dev eth0 proto multiwan src 2001:db8::172:16:2:2 metric 700 pref medium

  1. Если всё настроено верно, то перезагрузите сервис getcrls для загрузки СОС в базу Продукта:

root@Spoke2:~# systemctl restart getcrls.service

  1. Выполните проверку статуса сертификатов в базе Продукта:

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

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

  • текст консоли cisco-like;
  • Содержимое /etc/network/interfaces.d/mgre0;
  • Содержимое /etc/network/interfaces.d/mgre1;
  • Содержимое /etc/opennhrp/opennhrp.conf;
  • Содержимое /etc/frr/frr.conf;
  • Содержимое /etc/multiwan/multiwan.yaml

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

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

  1. Все узлы в центральном офисе и филиалах функционируют и исправны.
  2. Проблема на основном криптошлюзе в центральном офисе: отказ центрального криптошлюза, отказ внешнего сетевого интерфейса.
  3. Проблема на основной ноде кластера в филиале: отказ основной ноды кластера, недоступность Интернет-провайдера, недоступность сервиса opennhrp.

Все узлы в центральном офисе и филиалах функционируют и исправны

  1. Убедитесь, что криптошлюз второго филиала работает через основной интерфейс:

root@Spoke2:~# mwan_mgr show --links_status

Link: 1

Name: ISP1

Interface: eth0

Priority: 300

State: reachable

Active: True

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:16:2:1"

Link: 2

Name: ISP2

Interface: eth1

Priority: 200

State: reachable

Active: False

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:17:2:1"

  1. Видно, что активным интерфейсом является eth0.
  2. Убедитесь, что на центральных криптошлюзах установлены IPsec-туннели со всеми филиальными криптошлюзами, для этого в linux bash выполните следующую команду:

root@Hub1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 4 (2001:db8::100:100:100:2,4500)-(2001:db8::172:16:2:2,4500) active 2488 2520

2 5 (2001:db8::100:100:100:2,4500)-(2001:db8::172:16:1:2,4500) active 2456 2432

3 6 (2001:db8::100:100:100:2,4500)-(2001:db8::172:17:1:2,4500) active 1992 2032

IPsec connections:

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

1 4 (2001:db8::100:100:100:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 0 4500

2 5 (2001:db8::100:100:100:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 3076 0

3 6 (2001:db8::100:100:100:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 292 284

4 7 (2001:db8::100:100:100:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 2840 3924

5 8 (2001:db8::100:100:100:2,*)-(2001:db8::172:17:1:2,*) 47 ESP nat-t-trans 528 352

root@Hub2:~# 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 (2001:db8::100:100:101:2,4500)-(2001:db8::172:17:1:2,4500) active 1992 2032

2 2 (2001:db8::100:100:101:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

3 3 (2001:db8::100:100:101:2,4500)-(2001:db8::172:16:2:2,4500) active 1992 2024

IPsec connections:

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

1 1 (2001:db8::100:100:101:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 264 176

2 2 (2001:db8::100:100:101:2,*)-(2001:db8::172:17:1:2,*) 47 ESP nat-t-trans 264 352

3 3 (2001:db8::100:100:101:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 1604 1844

root@Hub3:~# 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 (2001:db8::100:101:100:2,4500)-(2001:db8::172:17:1:2,4500) active 1992 2032

2 2 (2001:db8::100:101:100:2,4500)-(2001:db8::172:16:2:2,4500) active 1992 2024

3 3 (2001:db8::100:101:100:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

IPsec connections:

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

1 1 (2001:db8::100:101:100:2,*)-(2001:db8::172:17:1:2,*) 47 ESP nat-t-trans 792 528

2 2 (2001:db8::100:101:100:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 6028 4264

3 3 (2001:db8::100:101:100:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 5624 5432

root@Hub4:~# 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 (2001:db8::100:101:101:2,4500)-(2001:db8::172:16:2:2,4500) active 1992 2024

2 2 (2001:db8::100:101:101:2,4500)-(2001:db8::172:17:1:2,4500) active 1992 2032

3 3 (2001:db8::100:101:101:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

IPsec connections:

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

1 1 (2001:db8::100:101:101:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 7156 7164

2 2 (2001:db8::100:101:101:2,*)-(2001:db8::172:17:1:2,*) 47 ESP nat-t-trans 1056 1084

3 3 (2001:db8::100:101:101:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 7664 7300

  1. Видно, что на каждом центральном криптошлюзе установлено по три IPsec-туннеля – два с нодами кластера в первом филиале (IP-адреса 2001:db8::172:16:1:2, 2001:db8::172:17:1:2) и третий с криптошлюзом во втором филиале (IP-адрес: 2001:db8::172:16:2:2). Строка «ESP nat-t-trans» свидетельствует о том, что IPsec-туннель работает в транспортном режиме через NAT. Состояние, когда один IPsec-туннель отображается как два IPsec-туннеля (один для входящего трафика, другой для исходящего) является нормальным. Так же состояние, когда происходит дублирование записи IPsec-туннеля и счётчики меняются только у последней записи, является нормальным.
  2. Убедитесь, что на центральных криптошлюзах протокол NHRP верно отображает информацию о филиальных криптошлюзах, для этого в linux bash выполните следующую команду:

root@Hub1:~# opennhrpctl show

Status: ok

Interface: mgre0

Type: local

Protocol-Address: ff02::1:ff00:0/128

Alias-Address: 2001:db8::10:10:10:100

Flags: up

Interface: mgre0

Type: local

Protocol-Address: 2001:db8::10:10:10:100/128

Flags: up

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:2/128

NBMA-Address: 2001:db8::172:17:1:2

NBMA-NAT-OA-Address: 2001:db8::100:101:1:2

Flags: up

Expires-In: 1:13

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:12

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:1/128

NBMA-Address: 2001:db8::172:16:1:2

NBMA-NAT-OA-Address: 2001:db8::100:100:1:2

Flags: up

Expires-In: 1:11

root@Hub2:~# opennhrpctl show

Status: ok

Interface: mgre0

Type: local

Protocol-Address: ff02::1:ff00:0/128

Alias-Address: 2001:db8::10:10:10:200

Flags: up

Interface: mgre0

Type: local

Protocol-Address: 2001:db8::10:10:10:200/128

Flags: up

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 0:59

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:1/128

NBMA-Address: 2001:db8::172:16:1:2

NBMA-NAT-OA-Address: 2001:db8::100:100:1:2

Flags: up

Expires-In: 0:59

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:2/128

NBMA-Address: 2001:db8::172:17:1:2

NBMA-NAT-OA-Address: 2001:db8::100:101:1:2

Flags: up

Expires-In: 0:59

root@Hub3:~# opennhrpctl show

Status: ok

Interface: mgre0

Type: local

Protocol-Address: ff02::1:ff00:0/128

Alias-Address: 2001:db8::10:10:20:100

Flags: up

Interface: mgre0

Type: local

Protocol-Address: 2001:db8::10:10:20:100/128

Flags: up

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:1/128

NBMA-Address: 2001:db8::172:16:1:2

NBMA-NAT-OA-Address: 2001:db8::100:100:1:2

Flags: up

Expires-In: 1:29

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:26

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:2/128

NBMA-Address: 2001:db8::172:17:1:2

NBMA-NAT-OA-Address: 2001:db8::100:101:1:2

Flags: up

Expires-In: 1:25

root@Hub4:~# opennhrpctl show

Status: ok

Interface: mgre0

Type: local

Protocol-Address: ff02::1:ff00:0/128

Alias-Address: 2001:db8::10:10:20:200

Flags: up

Interface: mgre0

Type: local

Protocol-Address: 2001:db8::10:10:20:200/128

Flags: up

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:06

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:1/128

NBMA-Address: 2001:db8::172:16:1:2

NBMA-NAT-OA-Address: 2001:db8::100:100:1:2

Flags: up

Expires-In: 1:01

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:2/128

NBMA-Address: 2001:db8::172:17:1:2

NBMA-NAT-OA-Address: 2001:db8::100:101:1:2

Flags: up

Expires-In: 0:59

  1. Видно, что на каждом центральном криптошлюзе протокол NHRP корректно отображает информацию о филиальных криптошлюзах (записи с пометкой «Type: dynamic»), а именно mGRE-адрес (Protocol-Address) соответствует NBMA IP-адресу (NBMA-Address). Также правильно отображается информация об исходном IP-адресе до выполнения процедуры трансляции (NBMA-NAT-OA-Address) для тех криптошлюзов, которые находятся за устройствами, выполняющими функции NAT.
  2. Убедитесь, что на центральных криптошлюзах подсистема ip neighbor ядра ОС Linux корректно отображает информацию о маппинге mGRE-адреса в NBMA-адрес филиальных криптошлюзов, для этого в linux bash выполните следующую команду:

root@Hub1:~# ip -6 neighbor show

2001:db8::10:10:10:2 dev mgre0 lladdr 2001:db8::172:17:1:2 REACHABLE

2001:db8::100:100:100:1 dev eth0 lladdr 00:50:56:9e:60:c0 router REACHABLE

2001:db8::192:168:255:1 dev eth1 lladdr 00:50:56:9e:17:06 router REACHABLE

fe80::250:56ff:fe9e:60c0 dev eth0 lladdr 00:50:56:9e:60:c0 router REACHABLE

2001:db8::10:10:10:1 dev mgre0 lladdr 2001:db8::172:16:1:2 REACHABLE

2001:db8::10:10:10:3 dev mgre0 lladdr 2001:db8::172:16:2:2 REACHABLE

root@Hub2:~# ip -6 neighbor show

fe80::250:56ff:fe9e:874a dev eth0 lladdr 00:50:56:9e:87:4a router REACHABLE

2001:db8::192:168:255:1 dev eth1 lladdr 00:50:56:9e:17:06 REACHABLE

2001:db8::10:10:10:3 dev mgre0 lladdr 2001:db8::172:16:2:2 REACHABLE

2001:db8::10:10:10:1 dev mgre0 lladdr 2001:db8::172:16:1:2 REACHABLE

2001:db8::100:100:101:1 dev eth0 lladdr 00:50:56:9e:87:4a router REACHABLE

2001:db8::10:10:10:2 dev mgre0 lladdr 2001:db8::172:17:1:2 REACHABLE

root@Hub3:~# ip -6 neighbor show

2001:db8::192:168:255:1 dev eth1 lladdr 00:50:56:9e:17:06 router REACHABLE

2001:db8::10:10:20:3 dev mgre0 lladdr 2001:db8::172:16:2:2 REACHABLE

fe80::250:56ff:fe9e:6cdd dev eth0 lladdr 00:50:56:9e:6c:dd router REACHABLE

2001:db8::10:10:20:1 dev mgre0 lladdr 2001:db8::172:16:1:2 REACHABLE

2001:db8::100:101:100:1 dev eth0 lladdr 00:50:56:9e:6c:dd router DELAY

2001:db8::10:10:20:2 dev mgre0 lladdr 2001:db8::172:17:1:2 REACHABLE

root@Hub4:~# ip -6 neighbor show

2001:db8::10:10:20:1 dev mgre0 lladdr 2001:db8::172:16:1:2 REACHABLE

2001:db8::100:101:101:1 dev eth0 lladdr 00:50:56:9e:81:21 router REACHABLE

2001:db8::10:10:20:2 dev mgre0 lladdr 2001:db8::172:17:1:2 STALE

2001:db8::192:168:255:1 dev eth1 lladdr 00:50:56:9e:17:06 router REACHABLE

2001:db8::10:10:20:3 dev mgre0 lladdr 2001:db8::172:16:2:2 REACHABLE

fe80::250:56ff:fe9e:8121 dev eth0 lladdr 00:50:56:9e:81:21 router REACHABLE

  1. Видно, что на каждом центральном криптошлюзе маппинг mGRE-адреса в NBMA-адрес филиальных криптошлюзов выполнен верно.
  2. Убедитесь, что на центральных криптошлюзах корректно работает протокол BGP, для этого зайдите в linux bash выполните следующие команды:

root@Hub1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub1# show ip bgp summary

IPv4 Unicast Summary (VRF default):

BGP router identifier 10.10.10.100, local AS number 65000 vrf-id 0

BGP table version 0

RIB entries 0, using 0 bytes of memory

Peers 3, using 61 KiB of memory

Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc

*2001:db8::10:10:10:1 4 65000 634 636 0 0 0 00:31:30 0 0 N/A

*2001:db8::10:10:10:3 4 65000 634 636 0 0 0 00:31:28 0 0 N/A

2001:db8::192:168:255:1 4 65001 639 637 0 0 0 00:31:31 0 0 N/A

Total number of neighbors 3

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

Hub1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:10:1, mgre0, weight 1, 00:31:29

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:31:27

B>* 2001:db8::192:168:100:0/112 [20/0] via fe80::250:56ff:fe9e:1706, eth1, weight 1, 00:31:30

root@Hub2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub2# show ip bgp summary

IPv4 Unicast Summary (VRF default):

BGP router identifier 10.10.10.200, local AS number 65000 vrf-id 0

BGP table version 0

RIB entries 0, using 0 bytes of memory

Peers 3, using 61 KiB of memory

Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc

*2001:db8::10:10:10:1 4 65000 560 562 0 0 0 00:27:45 0 0 N/A

*2001:db8::10:10:10:3 4 65000 563 565 0 0 0 00:27:55 0 0 N/A

2001:db8::192:168:255:1 4 65001 568 569 0 0 0 00:28:09 0 0 N/A

Total number of neighbors 3

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

Hub2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:10:1, mgre0, weight 1, 00:27:44

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:27:54

B>* 2001:db8::192:168:100:0/112 [20/0] via fe80::250:56ff:fe9e:1706, eth1, weight 1, 00:28:08

root@Hub3:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub3# show ip bgp summary

IPv4 Unicast Summary (VRF default):

BGP router identifier 10.10.20.100, local AS number 65000 vrf-id 0

BGP table version 0

RIB entries 0, using 0 bytes of memory

Peers 3, using 61 KiB of memory

Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc

*2001:db8::10:10:20:1 4 65000 630 632 0 0 0 00:31:16 0 0 N/A

*2001:db8::10:10:20:3 4 65000 631 633 0 0 0 00:31:19 0 0 N/A

2001:db8::192:168:255:1 4 65001 632 634 0 0 0 00:31:21 0 0 N/A

Total number of neighbors 3

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

Hub3# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:20:1, mgre0, weight 1, 00:31:15

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:20:3, mgre0, weight 1, 00:31:18

B>* 2001:db8::192:168:100:0/112 [20/0] via fe80::250:56ff:fe9e:1706, eth1, weight 1, 00:31:20

root@Hub4:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub4# show ip bgp summary

IPv4 Unicast Summary (VRF default):

BGP router identifier 10.10.20.200, local AS number 65000 vrf-id 0

BGP table version 0

RIB entries 0, using 0 bytes of memory

Peers 3, using 61 KiB of memory

Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc

*2001:db8::10:10:20:1 4 65000 629 631 0 0 0 00:31:13 0 0 N/A

*2001:db8::10:10:20:3 4 65000 627 629 0 0 0 00:31:08 0 0 N/A

2001:db8::192:168:255:1 4 65001 631 632 0 0 0 00:31:17 0 0 N/A

Total number of neighbors 3

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

Hub4# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:20:1, mgre0, weight 1, 00:31:12

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:20:3, mgre0, weight 1, 00:31:06

B>* 2001:db8::192:168:100:0/112 [20/0] via fe80::250:56ff:fe9e:1706, eth1, weight 1, 00:31:16

  1. Видно, что на каждом центральном криптошлюзе по протоколу BGP установлено соседство с основной нодой кластера в филиале №1, с криптошлюзом в филиале №2 и роутером Int‑router‑Hub. Соседство с резервной нодой кластера в филиале №1 отсутствует, как и требуется (нода, которая находится в состоянии BACKUP/FAULT не участвует в BGP).
  2. Маршруты до филиальных подсетей (2001:db8::192:168:1:0/112 и 2001:db8::192:168:2:0/112) в таблице маршрутизации присутствуют, а также до 2001:db8::192:168:100:0/112.
  3. Убедитесь, что основная нода кластера в филиале №1 находится в состоянии MASTER, для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# ip -6 address show dev eth1

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 10000

altname enp11s0

altname ens192

altname TenGigabitEthernet0_1

inet6 2001:db8::192:168:1:1/112 scope global nodad

valid_lft forever preferred_lft forever

inet6 2001:db8::192:168:1:10/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::9c0c:6078:f99b:188b/64 scope link stable-privacy

valid_lft forever preferred_lft forever

root@Spoke1‑n1:~# tcpdump -i eth1 -n -c 4 ip6 proto 112

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode

listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes

08:01:26.992795 IP6 fe80::9c0c:6078:f99b:188b > ff02::12: VRRPv3, Advertisement, vrid 1, prio 100, intvl 300cs, length 24

08:01:29.992986 IP6 fe80::9c0c:6078:f99b:188b > ff02::12: VRRPv3, Advertisement, vrid 1, prio 100, intvl 300cs, length 24

08:01:32.993273 IP6 fe80::9c0c:6078:f99b:188b > ff02::12: VRRPv3, Advertisement, vrid 1, prio 100, intvl 300cs, length 24

08:01:35.993462 IP6 fe80::9c0c:6078:f99b:188b > ff02::12: VRRPv3, Advertisement, vrid 1, prio 100, intvl 300cs, length 24

4 packets captured

4 packets received by filter

0 packets dropped by kernel

  1. Видно, что на внутреннем интерфейсе eth1 имеются адрес 2001:db8::192:168:1:10, назначенный интерфейсу, VIP-адрес 2001:db8::192:168:1:1 и link-local адрес fe80::9c0c:6078:f99b:188b , а также с данного интерфейса (с IP-адреса fe80::9c0c:6078:f99b:188b) отсылаются VRRP пакеты.
  2. Также в cisco-like консоли криптошлюза можно увидеть состояние VRRP:

Spoke1‑n1#show vrrp

Spoke1-n1#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Master IPv6

  1. Убедитесь, что на резервной ноде есть маршрут до 2001:db8::192:168:100:0/112 через IPv6 адрес LAN-интерфейса основной ноды.

root@Spoke1-n2:~# ip -6 route show

2001:db8::10:10:10:0/112 dev mgre0 proto kernel metric 256 pref medium

2001:db8::10:10:20:0/112 dev mgre1 proto kernel metric 256 pref medium

2001:db8::100:101:1:0/112 dev eth0 proto kernel metric 256 pref medium

2001:db8::192:168:1:0/112 dev eth1 proto kernel metric 256 pref medium

2001:db8::192:168:100:0/112 nhid 12 via 2001:db8::192:168:1:10 dev eth1 proto static metric 20 pref medium

fe80::/64 dev mgre0 proto kernel metric 256 pref medium

fe80::/64 dev mgre1 proto kernel metric 256 pref medium

fe80::/64 dev eth0 proto kernel metric 256 pref medium

fe80::/64 dev eth1 proto kernel metric 256 pref medium

default via 2001:db8::100:101:1:1 dev eth0 proto st_policy metric 1024 pref medium

  1. Убедитесь, что на внутреннем маршрутизаторе центрального офиса есть марштрты до защищищаемых подсетей филиалов через Hub1.

root@Int-router1-Hub:~# ip -6 route show

2001:db8::192:168:1:0/112 nhid 86 via fe80::8e81:3589:20a1:9ab0 dev ens192 proto bgp metric 20 pref medium

2001:db8::192:168:2:0/112 nhid 86 via fe80::8e81:3589:20a1:9ab0 dev ens192 proto bgp metric 20 pref medium

2001:db8::192:168:100:0/112 dev ens224 proto kernel metric 256 pref medium

2001:db8::192:168:255:0/112 dev ens192 proto kernel metric 256 pref medium

fe80::/64 dev ens192 proto kernel metric 256 pref medium

fe80::/64 dev ens224 proto kernel metric 256 pref medium

fe80::/64 dev ens256 proto kernel metric 256 pref medium

  1. Убедитесь, что присутствует трафик между защищаемым подсетями филиала №1 и центрального офиса. Для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑hub и удостоверьтесь в прохождении пакетов:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:100:100 -c 4

PING 2001:db8::192:168:100:100(2001:db8::192:168:100:100) 56 data bytes

64 bytes from 2001:db8::192:168:100:100: icmp_seq=1 ttl=61 time=2.40 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=2 ttl=61 time=2.07 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=3 ttl=61 time=3.17 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=4 ttl=61 time=1.99 ms

--- 2001:db8::192:168:100:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 1.993/2.410/3.173/0.466 ms

  1. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно строится, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=4.17 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=1040 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=8.27 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.75 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3035ms

rtt min/avg/max/mdev = 1.748/263.487/1039.757/448.185 ms, pipe 2

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 7 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:100:2,4500) active 2032 1992

2 8 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

3 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

5 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 106 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 58612 60920

2 107 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 58436 59292

3 108 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 58436 54084

4 109 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 59312 52836

5 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 348 348

  1. Видно, что пакеты успешно дошли от Host‑b‑spoke1 до Host‑b‑spoke2, а также построился IPsec-туннель между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2.

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

Смоделируем поочерёдный отказ внешнего сетевого интерфейса eth0 на криптошлюзах центрального офиса Hub1, Hub2 и Hub3 и проверим работоспособность стенда.

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

root@Hub1:~# ip -6 link set dev eth0 down

  1. Подождите некоторое время и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub1 отсутствует. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre0. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub2. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 8 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

2 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

3 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

4 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 106 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 95148 98948

2 107 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 94880 97320

3 108 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 94880 82872

4 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 348 348

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:01:51

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:200, mgre0, weight 1, 00:01:51

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 1 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 6688 5816

2 21 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:100:2,4500) active 6172 5384

3 22 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:101:2,4500) active 5140 4520

4 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

IPsec connections:

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

1 138 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 118620 121432

2 139 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 96364 98364

3 140 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 47000 59236

4 141 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 348 348

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:10:1, mgre0, weight 1, 00:03:52

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:200, mgre0, weight 1, 00:03:52

  1. Убедитесь, что ходит трафик между защищаемым подсетями филиала №1 и центрального офиса, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑hub и удостоверьтесь в прохождении пакетов:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:100:100 -c 4

PING 2001:db8::192:168:100:100(2001:db8::192:168:100:100) 56 data bytes

64 bytes from 2001:db8::192:168:100:100: icmp_seq=1 ttl=61 time=2.90 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=2 ttl=61 time=2.28 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=3 ttl=61 time=2.83 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=4 ttl=61 time=2.57 ms

--- 2001:db8::192:168:100:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 2.283/2.645/2.900/0.242 ms

  1. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно строится, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=3.59 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=1.76 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=2.21 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.63 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 1.632/2.296/3.589/0.776 ms

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 8 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

2 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

3 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

4 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 106 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 126388 131904

2 107 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 124240 127824

3 108 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 124240 107328

4 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 696 696

  1. Видно, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно построилось.
  2. Переведите внешний сетевой интерфейс eth0 на криптошлюзе Hub2 в состояние DOWN, для этого в linux bash выполните следующую команду:

root@Hub2:~# ip -6 link set dev eth0 down

  1. Подождите некоторое время и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub2 отсутствует. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre1. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub3. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

2 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

3 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 107 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 138444 142644

2 108 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 138444 120468

3 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 696 696

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:20:3, mgre1, weight 1, 00:01:33

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:100, mgre1, weight 1, 00:01:33

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 7204 6248

2 21 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:100:2,4500) active 6172 5384

3 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

IPsec connections:

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

1 140 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 81976 106940

2 141 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 696 696

3 142 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 2608 2696

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:20:1, mgre1, weight 1, 00:02:21

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:100, mgre1, weight 1, 00:02:21

  1. Убедитесь, что ходит трафик между защищаемым подсетями филиала №1 и центрального офиса, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑hub и удостоверьтесь в прохождении пакетов:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:100:100 -c 4

PING 2001:db8::192:168:100:100(2001:db8::192:168:100:100) 56 data bytes

64 bytes from 2001:db8::192:168:100:100: icmp_seq=1 ttl=61 time=2.36 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=2 ttl=61 time=1.78 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=3 ttl=61 time=2.10 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=4 ttl=61 time=2.19 ms

--- 2001:db8::192:168:100:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 1.777/2.108/2.363/0.213 ms

  1. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 функционирует исправно, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=2.77 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=2.00 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=1.81 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.73 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 1.731/2.077/2.770/0.411 ms

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2548 2424

2 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2548 2424

3 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 1044 1044

2 112 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 43344 53716

3 113 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 24332 17048

  1. Так как туннель был до проведения теста, то после отправки пакетов с помощью PING увеличились счётчики отправки и получения в туннеле.
  2. Переведите внешний сетевой интерфейс eth0 на криптошлюзе Hub3 в состояние DOWN, для этого в linux bash выполните следующую команду:

root@Hub3:~# ip -6 link set dev eth0 down

  1. Подождите некоторое время и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub3 отсутствует. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre1. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub4. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2548 2424

2 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 1044 1044

2 112 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 54828 73828

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:20:3, mgre1, weight 1, 00:02:38

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:200, mgre1, weight 1, 00:02:38

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 1 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 7204 6248

2 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

IPsec connections:

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

1 141 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 1044 1044

2 142 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 84332 86368

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ip route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:20:1, mgre1, weight 1, 00:03:56

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:200, mgre1, weight 1, 00:03:56

  1. Убедитесь, что ходит трафик между защищаемым подсетями филиала №1 и центрального офиса, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑hub и удостоверьтесь в прохождении пакетов:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:100:100 -c 4

PING 2001:db8::192:168:100:100(2001:db8::192:168:100:100) 56 data bytes

64 bytes from 2001:db8::192:168:100:100: icmp_seq=1 ttl=61 time=2.60 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=2 ttl=61 time=2.27 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=3 ttl=61 time=3.01 ms

64 bytes from 2001:db8::192:168:100:100: icmp_seq=4 ttl=61 time=3.74 ms

--- 2001:db8::192:168:100:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 2.267/2.904/3.743/0.550 ms

  1. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 функционирует исправно, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=16.8 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=1.55 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=1.30 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.83 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 1.302/5.361/16.758/6.582 ms

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 2 initiated, 0 responded

ISAKMP connections:

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

1 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2548 2424

2 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 1392 1392

2 112 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 65268 91340

  1. Так как туннель был до проведения теста, то после отправки пакетов с помощью PING увеличились счётчики отправки и получения в туннеле.
  2. Переведите внешний сетевой интерфейс eth0 на криптошлюзе Hub3 в состояние UP, для этого в linux bash выполните следующую команду:

root@Hub3:~# ip -6 link set dev eth0 up

  1. Подождите некоторое время (до пяти минут) и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub3 создан. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre1. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub3. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 1 initiated, 0 responded

ISAKMP connections:

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

1 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2548 2424

2 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

3 136 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

IPsec connections:

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

1 110 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 1392 1392

2 112 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 74564 107660

3 114 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 5552 6004

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:20:3, mgre1, weight 1, 00:02:20

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:100, mgre1, weight 1, 00:02:20

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 7204 6248

2 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 1992 2032

3 129 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:100:2,4500) active 2024 1992

IPsec connections:

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

1 141 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 1392 1392

2 142 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 117532 120664

3 144 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 12136 19152

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:20:1, mgre1, weight 1, 00:03:35

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:20:100, mgre1, weight 1, 00:04:45

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

root@Hub2:~# ip -6 link set dev eth0 up

  1. Подождите некоторое время (до пяти минут) и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub2 создан. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre0. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub2. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2548 2424

2 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2548 2424

3 136 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 151 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

IPsec connections:

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

1 112 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 104080 154564

2 114 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 50608 49968

3 115 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 21508 19876

4 116 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 0 0

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:04:36

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:200, mgre0, weight 1, 00:04:36

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 7720 6680

2 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 2424 2548

3 129 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:100:2,4500) active 2024 1992

4 149 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:101:2,4500) active 2024 1992

IPsec connections:

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

1 144 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 83792 105128

2 145 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 61392 82920

3 146 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 63372 64692

4 147 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 0 0

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:10:1, mgre0, weight 1, 00:17:00

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:200, mgre0, weight 1, 00:19:23

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

root@Hub1:~# ip -6 link set dev eth0 up

  1. Подождите некоторое время (до пяти минут) и убедитесь в том, что на основной ноде кластера в филиале №1 и на криптошлюзе в филиале №2 IPsec-туннель с Hub1 создан. Маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre0. Маршрут до защищаемую подсеть центрального офиса доступна через mGRE-адрес Hub1. Для этого в linux bash выполните следующие команды:

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 3064 2856

2 15 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2548 2424

3 136 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 151 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

5 182 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:100:2,4500) active 2032 1992

IPsec connections:

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

1 114 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 111336 109888

2 115 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 85032 62828

3 116 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 0 0

4 117 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 52904 33936

5 118 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 176 264

root@Spoke1‑n1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n1# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:20:22

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:100, mgre0, weight 1, 00:00:34

root@Spoke2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 20 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:101:2,4500) active 7720 6680

2 24 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:1:2,4500) active 2424 2548

3 129 (2001:db8::172:16:2:2,4500)-(2001:db8::172:17:100:2,4500) active 2024 1992

4 149 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:101:2,4500) active 2024 1992

5 181 (2001:db8::172:16:2:2,4500)-(2001:db8::172:16:100:2,4500) active 2024 1992

IPsec connections:

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

1 144 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 100240 119324

2 145 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 78212 99424

3 146 (2001:db8::172:16:2:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 79560 81168

4 147 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:1:2,*) 47 ESP nat-t-trans 0 0

5 148 (2001:db8::172:16:2:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 176 220

root@Spoke2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:1:0/112 [200/0] via 2001:db8::10:10:10:1, mgre0, weight 1, 00:00:28

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:100, mgre0, weight 1, 00:00:28

  1. Видно, что в случае отказа внешнего сетевого интерфейса eth0 на криптошлюзах Hub1, Hub2 и Hub3 в центральном офисе динамическое построение защищенных соединений продолжает функционировать, защищаемая подсеть центрального офиса доступна с филиальных криптошлюзов.
  2. При восстановлении внешнего сетевого интерфейса eth0 все также корректно отрабатывает. Проверку с полным отключением Hub1, Hub2, Hub3 повторите по аналогии.

Проблема на основной ноде кластера в филиале

Смоделируем полный отказ основной ноды кластера в филиале №1, а также отказ Интернет-провайдера и проверим работоспособность стенда.

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

root@Spoke1‑n1:~# poweroff

  1. 2. Убедитесь, что резервная нода перешла в состояние MASTER, для этого проверьте наличие VIP адреса на внутреннем интерфейсе и состояние VRRP в cisco-like консоли криптошлюза:

root@Spoke1‑n2:~# ip -6 address show dev eth1

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 10000

altname enp11s0

altname ens192

altname TenGigabitEthernet0_1

inet6 2001:db8::192:168:1:1/112 scope global nodad

valid_lft forever preferred_lft forever

inet6 2001:db8::192:168:1:20/112 scope global

valid_lft forever preferred_lft forever

inet6 fe80::d249:9ced:28a8:9a84/64 scope link stable-privacy

valid_lft forever preferred_lft forever

Spoke1‑n2#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Master IPv6

  1. Видно, что кластерный VIP-адрес (2001:db8::192:168:1:1) присутствует на внутреннем интерфейсе eth1 и VRRP находится в состоянии MASTER.
  2. 3. Убедитесь, что на резервной ноде по протоколу BGP установлено соседство с центральными криптошлюзами и получены маршруты в защищаемые подсети, для этого в linux bash выполните следующие команды:

root@Spoke1‑n2:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1‑n2# show ip bgp summary

IPv4 Unicast Summary (VRF default):

BGP router identifier 192.168.1.20, local AS number 65000 vrf-id 0

BGP table version 0

RIB entries 0, using 0 bytes of memory

Peers 4, using 82 KiB of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc

2001:db8::10:10:10:100 4 65000 72 69 0 0 0 00:03:13 0 0 N/A

2001:db8::10:10:10:200 4 65000 72 69 0 0 0 00:03:12 0 0 N/A

2001:db8::10:10:20:100 4 65000 72 69 0 0 0 00:03:12 0 0 N/A

2001:db8::10:10:20:200 4 65000 72 69 0 0 0 00:03:12 0 0 N/A

Total number of neighbors 4

Spoke1‑n2# show ipv6 route bgp

Codes: K - kernel route, C - connected, S - static, R - RIPng,

O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,

v - VNC, V - VNC-Direct, A - Babel, F - PBR,

f - OpenFabric,

> - selected route, * - FIB route, q - queued, r - rejected, b - backup

t - trapped, o - offload failure

B>* 2001:db8::192:168:2:0/112 [200/0] via 2001:db8::10:10:10:3, mgre0, weight 1, 00:03:52

B>* 2001:db8::192:168:100:0/112 [200/0] via 2001:db8::10:10:10:100, mgre0, weight 1, 00:03:52

  1. 4. Убедитесь, что защищенное соединение между резервной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно строится, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на резервной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=4.00 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=708 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=2.22 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.65 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 1.645/178.854/707.554/305.246 ms

root@Spoke1‑n2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 111 (2001:db8::100:101:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

2 112 (2001:db8::100:101:1:2,4500)-(2001:db8::172:16:100:2,4500) active 2032 1992

3 115 (2001:db8::100:101:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 116 (2001:db8::100:101:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

5 119 (2001:db8::100:101:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 12 (2001:db8::100:101:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 21700 22680

2 13 (2001:db8::100:101:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 22068 17156

3 14 (2001:db8::100:101:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 21500 22476

4 15 (2001:db8::100:101:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 21332 22564

5 16 (2001:db8::100:101:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 348 348

  1. 5. Запустите основную ноду кластера, дождитесь ее полной загрузки и убедитесь, что она перешла в состояние BACKUP (основная нода не перехватит роль MASTER, так как в настройках VRRP стоит опция nopreempt), для этого проверьте отсутствие VIP адреса на внутреннем интерфейсе, и состояние VRRP в cisco-like консоли криптошлюза:

root@Spoke1‑n1:~# ip -6 address show dev eth1

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000

link/ether 00:50:56:9e:82:c4 brd ff:ff:ff:ff:ff:ff

altname enp11s0

altname ens192

altname TenGigabitEthernet0_1

inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

valid_lft forever preferred_lft forever

inet6 fe80::250:56ff:fe9e:82c4/64 scope link

valid_lft forever preferred_lft forever

Spoke1‑n1#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Backup IPv6

  1. Видно, что в случае полного отказа основной ноды кластера роль MASTER на себя берет резервная нода и успешно обрабатывает трафик.
  2. Отказ Интернет-провайдера.
  3. 1. Чтобы смоделировать отказ Интернет-провайдера заблокируем ICMP пакеты от резервной ноды кластера (предполагается, что резервная нода находится в состоянии MASTER, а основная в BACKUP) на роутере Core_router, для этого в linux bash выполните следующую команду:

root@Core‑router:~# ip6tables -A INPUT -s 2001:db8::172:17:1:2 -p icmpv6 -j DROP

  1. 2. Убедитесь, что резервная нода кластера перешла в состояние FAULT, для этого состояние VRRP в cisco-like консоли криптошлюза:

Spoke1‑n2#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Fault IPv6

  1. 3. Убедитесь, что основная нода кластера перешла в состояние MASTER, для этого в linux bash выполните следующую команду:

Spoke1‑n1#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Master IPv6

  1. 4. Удалите на роутере Core_router правила, блокирующие ICMP добавленные ранее, для этого в linux bash выполните следующую команду:

root@Core‑router:~# ip6tables -D INPUT -s 2001:db8::172:17:1:2 -p icmpv6 -j DROP

  1. 5. Убедитесь, что резервная нода кластера перешла в состояние BACKUP, для этого в linux bash выполните следующую команду:

Spoke1‑n2#show vrrp

Interface VRID State AddrFamily

-------------------------------------------------------

TenGigabitEthernet0/1 1 Backup IPv6

  1. При отказе Интернет-провайдера нода кластера переходит в состояние FAULT, а в случае восстановления в BACKUP.

Отказ интернет-провайдера второго филиала

  1. Чтобы смоделировать отказ Интернет-провайдера заблокируем ICMP пакеты от основного интерфейса на роутере Core_router, для этого в linux bash выполните следующую команду:

root@Core‑router:~# ip6tables -A INPUT -s 2001:db8::172:16:2:2 -p icmpv6 -j DROP

  1. Проверьте состояние линков:

root@Spoke2:~# mwan_mgr show --links_status

Link: 1

Name: ISP1

Interface: eth0

Priority: 300

State: unreachable

Active: False

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:16:2:1"

Link: 2

Name: ISP2

Interface: eth1

Priority: 200

State: reachable

Active: True

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:17:2:1"

  1. Видно, что хосты стали недоступны через основной интерфейс (eth0) и активным стал второй интерфейс (eth1).
  2. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно строится, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=3.53 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=473 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=1.60 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.91 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 1.598/120.134/473.498/204.015 ms

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 7 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:100:2,4500) active 2032 1992

2 8 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

3 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

5 16 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:2:2,4500) active 2032 1992

IPsec connections:

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

1 9 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 70328 66068

2 10 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 71232 74360

3 11 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 71116 47616

4 12 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 71116 74244

5 13 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:2:2,*) 47 ESP nat-t-trans 348 348

  1. Проверьте правильность определения NBMA адреса криптошлюза филиала №2 в OpenNHRP на смежных ему устройствах:

root@Hub1:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

root@Hub1:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:17:2:2

Flags: up

Expires-In: 1:12

root@Hub2:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

root@Hub2:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:17:2:2

Flags: up

Expires-In: 1:12

root@Hub3:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

root@Hub3:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:17:2:2

Flags: up

Expires-In: 1:00

root@Hub4:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

root@Hub4:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:17:2:2

Flags: up

Expires-In: 1:08

root@Spoke1‑n1:~# opennhrpctl show nbma 172.17.2.2

Status: ok

Interface: mgre0

Type: cached

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:17:2:2

Flags: used up

Expires-In: 1:21

  1. Видно, что все устройства правильно определяют NBMA адрес криптошлюза филиала №2.
  2. Удалите на роутере Core_router правила, блокирующие ICMP, добавленные ранее, для этого в linux bash выполните следующую команду:

root@Core‑router:~# ip6tables -D INPUT -s 2001:db8::172:16:2:2 -p icmpv6 -j DROP

  1. Проверьте состояние линков:

root@Spoke2:~# mwan_mgr show --links_status

Link: 1

Name: ISP1

Interface: eth0

Priority: 300

State: reachable

Active: True

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:16:2:1"

Link: 2

Name: ISP2

Interface: eth1

Priority: 200

State: reachable

Active: False

Hosts reachability: any

IPv4 hosts: None

IPv6 hosts: "2001:db8::172:16:101:15", "2001:db8::172:17:2:1"

  1. Видно, что хосты стали доступны через основной интерфейс (eth0), и канал связи 1 (ISP1) стал активным.
  2. Убедитесь, что защищенное соединение между основной нодой кластера в филиале №1 и криптошлюзом в филиале №2 успешно строится, для этого запустите ping с устройства Host‑b‑spoke1 на устройство Host‑b‑spoke2 и проверьте наличие IPsec-туннеля на основной ноде кластера в филиале №1:

root@Host‑b‑spoke1:~# ping -6 2001:db8::192:168:2:100 -c 4

PING 2001:db8::192:168:2:100(2001:db8::192:168:2:100) 56 data bytes

64 bytes from 2001:db8::192:168:2:100: icmp_seq=1 ttl=61 time=3.97 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=2 ttl=62 time=210 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=3 ttl=62 time=1.64 ms

64 bytes from 2001:db8::192:168:2:100: icmp_seq=4 ttl=62 time=1.53 ms

--- 2001:db8::192:168:2:100 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3005ms

rtt min/avg/max/mdev = 1.525/54.272/209.956/89.889 ms

root@Spoke1‑n1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

ISAKMP connections:

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

1 7 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:100:2,4500) active 2032 1992

2 8 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:101:2,4500) active 2032 1992

3 9 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:100:2,4500) active 2032 1992

4 10 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:101:2,4500) active 2032 1992

5 16 (2001:db8::100:100:1:2,4500)-(2001:db8::172:17:2:2,4500) active 2032 1992

6 17 (2001:db8::100:100:1:2,4500)-(2001:db8::172:16:2:2,4500) active 2032 1992

IPsec connections:

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

1 9 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:100:2,*) 47 ESP nat-t-trans 119304 111920

2 10 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:101:2,*) 47 ESP nat-t-trans 119496 124704

3 11 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:100:2,*) 47 ESP nat-t-trans 119148 78912

4 12 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:101:2,*) 47 ESP nat-t-trans 119148 124356

5 13 (2001:db8::100:100:1:2,*)-(2001:db8::172:17:2:2,*) 47 ESP nat-t-trans 696 696

6 14 (2001:db8::100:100:1:2,*)-(2001:db8::172:16:2:2,*) 47 ESP nat-t-trans 348 348

  1. Проверьте правильность определения NBMA адреса криптошлюза филиала №2 в OpenNHRP на смежных ему устройствах:

root@Hub1:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

root@Hub1:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:06

root@Hub2:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

root@Hub2:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:02

root@Hub3:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

root@Hub3:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 1:21

root@Hub4:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

root@Hub4:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

Interface: mgre0

Type: dynamic

Protocol-Address: 2001:db8::10:10:20:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: up

Expires-In: 0:59

root@Spoke1‑n1:~# opennhrpctl show nbma 2001:db8::172:17:2:2

Status: ok

root@Spoke1‑n1:~# opennhrpctl show nbma 2001:db8::172:16:2:2

Status: ok

Interface: mgre0

Type: cached

Protocol-Address: 2001:db8::10:10:10:3/128

NBMA-Address: 2001:db8::172:16:2:2

Flags: used up

Expires-In: 1:24

  1. Видно, что все устройства правильно определяют NBMA адрес криптошлюза филиала №2. Дополнительно видно, что все криптошлюзы определяют, что криптошлюз филиала №2 не находится за NAT.

Дополнение

Балансировка нагрузки от филиальных криптошлюзов на центральные криптошлюзы

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

На устройстве Int‑router‑Hub должны отсутствовать route-map, регулирующие приоритет входящих маршрутов, полученных от Hub1, Hub2, Hub3 и Hub4. В таком случае в таблице маршрутизации Int‑router‑Hub будут присутствовать маршруты, полученные от всех Hub-ов.

На всех криптошлюзах центрального офиса требуется изменить настройки FRR. Далее показана настройка Hub1.

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

root@Hub1:~# vtysh

Hello, this is FRRouting (version 9.0.2).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Hub1#

  1. Требуется удалить route-map вида FROM-HUB1-OUT на Hub1, Hub2, Hub3 и Hub4. После этого криптошлюзы филиалов будут получать маршруты до защищаемых подсетей центрального офиса с одинаковым приоритетом:

Hub1# conf t

Hub1(config)# no route-map FROM-HUB1-OUT

Hub1(config)# router bgp 65000

Hub1(config-router)# address-family ipv6 unicast

Hub1(config-router-af)# no neighbor spokes-ibgp route-map FROM-HUB1-OUT out

Hub1(config-router-af)# end

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

Hub1# write

Note: this version of vtysh never writes vtysh.conf

Building Configuration...

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

[OK]

После настройки на устройстве Int‑router‑Hub должно быть по четыре маршрута до защищаемых сетей филиалов, а на криптошлюзах филиалов будет четыре маршрута до защищаемой сети центрального офиса.

root@Int‑router‑Hub:~# ip -6 route

2001:db8::192:168:1:0/112 nhid 32 proto bgp metric 20 pref medium

nexthop via fe80::7a71:b970:bc1d:568e dev ens192 weight 1

nexthop via fe80::84:aa1b:cc5a:b791 dev ens192 weight 1

nexthop via fe80::ff6d:9a5b:7de3:eabb dev ens192 weight 1

nexthop via fe80::854:defa:ac45:2175 dev ens192 weight 1

2001:db8::192:168:2:0/112 nhid 32 proto bgp metric 20 pref medium

nexthop via fe80::7a71:b970:bc1d:568e dev ens192 weight 1

nexthop via fe80::84:aa1b:cc5a:b791 dev ens192 weight 1

nexthop via fe80::ff6d:9a5b:7de3:eabb dev ens192 weight 1

nexthop via fe80::854:defa:ac45:2175 dev ens192 weight 1

2001:db8::192:168:100:0/112 dev ens224 proto kernel metric 256 pref medium

2001:db8::192:168:255:0/112 dev ens192 proto kernel metric 256 pref medium

fe80::/64 dev ens192 proto kernel metric 256 pref medium

fe80::/64 dev ens224 proto kernel metric 256 pref medium

fe80::/64 dev ens256 proto kernel metric 256 pref medium

root@Spoke1‑n1:~# ip -6 route

2001:db8::10:10:10:0/112 dev mgre0 proto kernel metric 256 pref medium

2001:db8::10:10:20:0/112 dev mgre1 proto kernel metric 256 pref medium

2001:db8::100:100:1:0/112 dev eth0 proto kernel metric 256 pref medium

2001:db8::192:168:1:0/112 dev eth1 proto kernel metric 256 pref medium

2001:db8::192:168:2:0/112 nhid 19 via 2001:db8::10:10:10:3 dev mgre0 proto bgp metric 20 pref medium

2001:db8::192:168:100:0/112 nhid 41 proto bgp metric 20 pref medium

nexthop via 2001:db8::10:10:10:100 dev mgre0 weight 1

nexthop via 2001:db8::10:10:10:200 dev mgre0 weight 1

nexthop via 2001:db8::10:10:20:100 dev mgre1 weight 1

nexthop via 2001:db8::10:10:20:200 dev mgre1 weight 1

fe80::/64 dev mgre0 proto kernel metric 256 pref medium

fe80::/64 dev mgre1 proto kernel metric 256 pref medium

fe80::/64 dev eth0 proto kernel metric 256 pref medium

fe80::/64 dev eth1 proto kernel metric 256 pref medium

default via 2001:db8::100:100:1:1 dev eth0 proto st_policy metric 1024 pref medium

root@Spoke2:~# ip -6 route

2001:db8::10:10:10:0/112 dev mgre0 proto kernel metric 256 pref medium

2001:db8::10:10:20:0/112 dev mgre1 proto kernel metric 256 pref medium

2001:db8::172:16:2:0/112 dev eth0 proto kernel metric 256 pref medium

2001:db8::172:17:2:0/112 dev eth1 proto kernel metric 256 pref medium

2001:db8::192:168:1:0/112 nhid 344 via 2001:db8::10:10:10:1 dev mgre0 proto bgp metric 20 pref medium

2001:db8::192:168:2:0/112 dev eth2 proto kernel metric 256 pref medium

2001:db8::192:168:100:0/112 nhid 836781 proto bgp metric 20 pref medium

nexthop via 2001:db8::10:10:10:100 dev mgre0 weight 1

nexthop via 2001:db8::10:10:10:200 dev mgre0 weight 1

nexthop via 2001:db8::10:10:20:100 dev mgre1 weight 1

nexthop via 2001:db8::10:10:20:200 dev mgre1 weight 1

fe80::/64 dev mgre0 proto kernel metric 256 pref medium

fe80::/64 dev mgre1 proto kernel metric 256 pref medium

fe80::/64 dev eth0 proto kernel metric 256 pref medium

fe80::/64 dev eth1 proto kernel metric 256 pref medium

fe80::/64 dev eth2 proto kernel metric 256 pref medium

default via 2001:db8::172:16:2:1 dev eth0 proto multiwan src 2001:db8::172:16:2:2 metric 700 pref medium

Ограничение полосы пропускания (shaping) на mGRE интерфейсе.

В данном разделе будет описано конфигурирование ограничения полосы пропускания до 100 Мбит/с суммарно по всем типам трафика, из них 10 на UDP, 85 на TCP и 5 на остальной трафик.

Подробнее об ограничениях при настройке полосы пропускания описано в инструкции «Обеспечение качества обслуживания для трафика (QoS)».

Для исключения срабатываний механизма защиты от атак воспроизведения на принимающем криптошлюзе при перегрузке полосы пропускания на передающем криптошлюзе рекомендуется отказаться от shaping на WAN‑интерфейсе и выполнять его ДО зашифрования трафика, например, на внешнем оборудовании (LAN‑сегмент) или mGRE‑интерфейсе (подробнее в разделе «Ограничение полосы пропускания (shaping)» инструкции «Обеспечение качества обслуживания для трафика (QoS)»).

Примечание - Срабатывание механизма защиты от атак воспроизведения на приемной стороне можно диагностировать по увеличению счетчика потерь «ipsec replay drops» в утилите «kstat_show».

Для начала нужно маркировать UDP и TCP трафик. Настройка маркирования осуществляется в cisco-like консоли криптошлюза и должна производиться на внутреннем интерфейсе. В данном сценарии маркирование будет производиться на интерфейсе mgre0. Однако, криптошлюзы версии 5.0 не позволяют настраивать туннельные интерфейсы IPv6 через cisco-like консоль. В связи с этим необходимо в linux bash добавить возможность привязки mgre-интерфейса в cisco-like к спискам доступа. Для добавления возможности привязки mgre выполните следующие действия:

  1. Добавьте GRE интерфейс mgre0 в файл /etc/ifaliases.cf (выделено жирным):

root@Hub1:~# vim.tiny /etc/ifaliases.cf

interface (name="TenGigabitEthernet0/0" pattern="eth0")

interface (name="TenGigabitEthernet0/1" pattern="eth1")

interface (name="TenGigabitEthernet0/2" pattern="eth2")

interface (name="Tunnel0" pattern="mgre0")

interface (name="default" pattern="*")

  • значение параметра name должно быть задано в виде TunnelN.
  • значение параметра pattern должно соответствовать имени GRE интерфейса в нотации Linux.

Конфигурирование mgre-интерфейса IPv6 из cisco-like консоли не поддерживается и должно выполняться из linux bash. Попытка настройки mgre-интерфейса IPv6 из cisco-like консоли приведет к созданию mgre-интерфейса IPv4 с настроенным адресом IPv6.

  1. Пересчитайте контрольную сумму файлa /etc/ifaliases.cf:

root@Hub1:~# integr_mgr calc -f /etc/ifaliases.cf

SUCCESS: Operation was successful.

Настройка маркирования осуществляется в cisco-like консоли криптошлюза:

  1. Создайте необходимые списки доступа, которые описывают маркируемый трафик:

Hub1#conf t

Hub1(config)#ipv6 access-list SET_DSCP_AF11

Hub1(config-ipv6-acl)#permit tcp 2001:db8::192:168:100:0/112 any

Hub1(config-ipv6-acl)#ipv6 access-list SET_DSCP_AF12

Hub1(config-ipv6-acl)#permit udp 2001:db8::192:168:100:0/112 any

Hub1(config-ipv6-acl)#ipv6 access-list CLEAR_DSCP

Hub1(config-ipv6-acl)#deny tcp 2001:db8::192:168:100:0/112 any

Hub1(config-ipv6-acl)#deny udp 2001:db8::192:168:100:0/112 any

Hub1(config-ipv6-acl)#permit ipv6 any any

Hub1(config-ipv6-acl)#exit

Hub1(config)#

  1. Опишите классы трафика на основе списков доступа:

Hub1(config)#class-map match-all CLEAR_DSCP

Hub1(config-cmap)#match access-group name CLEAR_DSCP

Hub1(config-cmap)#class-map match-all SET_DSCP_AF11

Hub1(config-cmap)#match access-group name SET_DSCP_AF11

Hub1(config-cmap)#class-map match-all SET_DSCP_AF12

Hub1(config-cmap)#match access-group name SET_DSCP_AF12

Hub1(config-cmap)#exit

  1. Опишите политику для трафика (выставление DSCP метки):

Hub1(config)#policy-map DSCP_POLICY

Hub1(config-pmap)#class SET_DSCP_AF11

Hub1(config-pmap-c)#set dscp af11

Hub1(config-pmap-c)#class SET_DSCP_AF12

Hub1(config-pmap-c)#set dscp af12

Hub1(config-pmap-c)#class CLEAR_DSCP

Hub1(config-pmap-c)#set dscp default

Hub1(config-pmap-c)#exit

Hub1(config-pmap)#exit

Hub1(config)#

  1. Привяжите политику для трафика к mgre интерфейсу на исходящее направление:

Hub1(config)#interface Tunnel0

Hub1(config-if)#service-policy output DSCP_POLICY

Hub1(config-if)#end

Настройка ограничения полосы пропускания осуществляется из linux bash.

  1. Добавьте следующее содержимое в файл /etc/network/if-up.d/zshaper:

Скрипты из /etc/network/if-up.d/ выполняются в лексикографическом порядке. Скрипт должен выполняться позже st-virtual-if.

#!/bin/bash

function enable_shaper(){

# del root queue discipline

tc qdisc del dev $IFACE root || true

# add root queue discipline

tc qdisc add dev $IFACE root handle 1:0 htb default 4

# add root class

tc class add dev $IFACE parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit

# add sub classes

tc class add dev $IFACE parent 1:1 classid 1:2 htb rate 85mbit ceil 100mbit

tc class add dev $IFACE parent 1:1 classid 1:3 htb rate 10mbit ceil 100mbit

tc class add dev $IFACE parent 1:1 classid 1:4 htb rate 5mbit ceil 100mbit

# add filters for traffic

tc filter add dev $IFACE parent 1:0 protocol ipv6 prio 0 u32 match ip6 priority 0x28 0xfc flowid 1:2

tc filter add dev $IFACE parent 1:0 protocol ipv6 prio 0 u32 match ip6 priority 0x30 0xfc flowid 1:3

}

if [[ $IFACE == "mgre0" ]]; then

enable_shaper $IFACE

fi

Пояснения:

  1. 1. Удалить корневую дисциплину с интерфейса:

tc qdisc del dev $IFACE root || true

  1. Примечание – При включении интерфейса с IPv6 адресом включается алгоритм Duplicate Address Detection (DAD), который обеспечивает уникальность IPv6 адреса в пределах сети. При попытке удаления корневой дисциплины (команда tc qdisc del dev $IFACE root) в период работы DAD возможно появление сообщений об ошибках следующего вида:

Error: Cannot delete qdisc with handle of zero.

  1. Для безусловного выполнения других команд скрипта даже при выполнении команды tc qdisc del dev $IFACE root в период работы механизма DAD добавлены команды || true.
  2. 2. Добавить подкласс 4 по умолчанию в корневую дисциплину интерфейса c классом HTB (трафик, который не попал под фильтры, направляется в этот класс):

tc qdisc add dev $IFACE root handle 1:0 htb default 4

  1. 3. Ограничить скорость на интерфейсе до 100 Мбит/с:

tc class add dev $IFACE parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit

  1. 4. Определить подклассы (1:2, 1:3, 1:4) и ограничить в них скорость:

tc class add dev $IFACE parent 1:1 classid 1:2 htb rate 85mbit ceil 100mbit

tc class add dev $IFACE parent 1:1 classid 1:3 htb rate 10mbit ceil 100mbit

tc class add dev $IFACE parent 1:1 classid 1:4 htb rate 5mbit ceil 100mbit

  1. 5. При помощи фильтров направить трафик в нужные классы. Пакеты с меткой AF11 (0x28) должны попадать в класс 1:2 (flowid 1:2). Пакеты с меткой AF12 (0x30) должны попадать в класс 1:3 (flowid 1:3):

Требуется указывать шестнадцатеричное значение ToS байта. Для двоичного значения DSCP добавляются два нуля справа и переводится полученное значение в шестнадцатеричное представление:

· двоичное представление для AF11 001010 -> 00101000 -> 0x28;

· двоичное представление для AF12 001100 -> 00110000 -> 0x30.

tc filter add dev $IFACE parent 1:0 protocol ip prio 0 u32 match ip tos 0x28 0xfc flowid 1:2

tc filter add dev $IFACE parent 1:0 protocol ip prio 0 u32 match ip tos 0x30 0xfc flowid 1:3

  1. 6. В данном сценарии shaping будет производиться на внутреннем интерфейсе mgre0 до зашифрования трафика.
  2. Дайте файлу /etc/network/if-up.d/zshaper права на исполнение:

root@Hub1:~# chmod u+x /etc/network/if-up.d/zshaper

Примечание - Данный файл будет запускаться автоматически при старте системы во время конфигурирования интерфейса mgre0 (а также при выполнении команды ifup mgre0).

  1. Примените настройки ограничения полосы пропускания:

root@Hub1:~# ifdown mgre0; ifup mgre0

Waiting for DAD... Done

Error: Cannot delete qdisc with handle of zero.

  1. Посмотреть статистику можно при помощи команд:

root@Hub1:~# tc -s qdisc show dev mgre0

root@Hub1:~# tc -s filter show dev mgre0

root@Hub1:~# tc -s class show dev mgre0

  1. Примечание - Из-за ограничения полосы пропускания в kstat_show будут расти как счётчики tx errors, так и количество отброшенных пакетов (dropped) в tc -s qdisc show dev mgre0. Допускается небольшое отклонение между количеством отброшенных пакетов и tx error.

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

Приложение

Устройство Core-router

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Ext-router-Hub1

auto ens192

iface ens192 inet6 static

address 2001:db8::172:16:100:1/112

# To Ext-router-Hub2

auto ens224

iface ens224 inet6 static

address 2001:db8::172:16:101:1/112

# To Ext-router-Hub3

auto ens256

iface ens256 inet6 static

address 2001:db8::172:17:100:1/112

# To Ext-router-Hub4

auto ens161

iface ens161 inet6 static

address 2001:db8::172:17:101:1/112

# To Spoke2 (ISP1)

auto ens193

iface ens193 inet6 static

address 2001:db8::172:16:2:1/112

# To Spoke1-n2

auto ens225

iface ens225 inet6 static

address 2001:db8::172:17:1:1/112

# To Spoke1-n1

auto ens257

iface ens257 inet6 static

address 2001:db8::172:16:1:1/112

# To Spoke2 (ISP2)

auto ens162

iface ens162 inet6 static

address 2001:db8::172:17:2:1/112

# To VM Network

auto ens194

iface ens194 inet dhcp

# For CDP.

auto ens224:0

iface ens224:0 inet6 static

address 2001:db8::172:16:101:15/112

Устройство Ext-router-Hub1

Сетевые настройки

Содержимое файла /etc/network/interfaces:

This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:16:100:2/112

gateway 2001:db8::172:16:100:1

# To Hub1

auto ens224

iface ens224 inet6 static

address 2001:db8::100:100:100:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:16:100:2"

IPSECGW="2001:db8::100:100:100:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Ext-router-Hub2

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:16:101:2/112

gateway 2001:db8::172:16:101:1

# To Hub2

auto ens224

iface ens224 inet6 static

address 2001:db8::100:100:101:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:16:101:2"

IPSECGW="2001:db8::100:100:101:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Ext-router-Hub3

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:17:100:2/112

gateway 2001:db8::172:17:100:1

# To Hub3

auto ens224

iface ens224 inet6 static

address 2001:db8::100:101:100:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:17:100:2"

IPSECGW="2001:db8::100:101:100:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Ext-router-Hub4

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:17:101:2/112

gateway 2001:db8::172:17:101:1

# To Hub4

auto ens224

iface ens224 inet6 static

address 2001:db8::100:101:101:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:17:101:2"

IPSECGW="2001:db8::100:101:101:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Ext-router1-Spoke1

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:16:1:2/112

gateway 2001:db8::172:16:1:1

# To Spoke1-n1

auto ens224

iface ens224 inet6 static

address 2001:db8::100:100:1:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:16:1:2"

IPSECGW="2001:db8::100:100:1:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Ext-router2-Spoke1

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Core-router

auto ens192

iface ens192 inet6 static

address 2001:db8::172:17:1:2/112

gateway 2001:db8::172:17:1:1

# To Spoke1-n2

auto ens224

iface ens224 inet6 static

address 2001:db8::100:101:1:1/112

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens192"

INTIF="ens224"

INET_IP1="2001:db8::172:17:1:2"

IPSECGW="2001:db8::100:101:1:2"

### SNAT ###

ip6tables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

### DNAT ###

# IKE/500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination [$IPSECGW]:500

# NAT-T/4500

ip6tables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination [$IPSECGW]:4500

Устройство Host-b-hub

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto ens192

iface ens192 inet6 static

address 2001:db8::192:168:100:100/112

gateway 2001:db8::192:168:100:1

Устройство Host-b-spoke1

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto ens192

iface ens192 inet6 static

address 2001:db8::192:168:1:100/112

gateway 2001:db8::192:168:1:1

Устройство Host-b-spoke2

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto ens192

iface ens192 inet6 static

address 2001:db8::192:168:2:100/112

gateway 2001:db8::192:168:2:1

Устройство Int-router-Hub

Сетевые настройки

Содержимое файла /etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

# To Hubs

auto ens192

iface ens192 inet6 static

address 2001:db8::192:168:255:1/112

# To LAN

auto ens224

iface ens224 inet6 static

address 2001:db8::192:168:100:1/112

Настройки динамической маршрутизации

Настройки сервиса FRR (vtysh):

frr version 8.4.4

frr defaults traditional

hostname Int-router1-Hub

log syslog informational

service integrated-vtysh-config

!

router bgp 65001

bgp router-id 192.168.255.1

bgp log-neighbor-changes

no bgp ebgp-requires-policy

no bgp suppress-duplicates

coalesce-time 1000

timers bgp 3 9

neighbor 2001:db8::192:168:255:10 remote-as 65000

neighbor 2001:db8::192:168:255:11 remote-as 65000

neighbor 2001:db8::192:168:255:20 remote-as 65000

neighbor 2001:db8::192:168:255:21 remote-as 65000

!

address-family ipv6 unicast

network 2001:db8::192:168:100:0/112

neighbor 2001:db8::192:168:255:10 activate

neighbor 2001:db8::192:168:255:10 route-map FROM-HUB1-IN in

neighbor 2001:db8::192:168:255:11 activate

neighbor 2001:db8::192:168:255:11 route-map FROM-HUB2-IN in

neighbor 2001:db8::192:168:255:20 activate

neighbor 2001:db8::192:168:255:20 route-map FROM-HUB3-IN in

neighbor 2001:db8::192:168:255:21 activate

neighbor 2001:db8::192:168:255:21 route-map FROM-HUB4-IN in

exit-address-family

exit

!

route-map FROM-HUB1-IN permit 1

set local-preference 100

exit

!

route-map FROM-HUB2-IN permit 1

set local-preference 75

exit

!

route-map FROM-HUB3-IN permit 1

set local-preference 50

exit

!

route-map FROM-HUB4-IN permit 1

set local-preference 25

exit

!

end

Устройство Hub1

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

hostname Hub1

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:100:100:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:100:100:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:255:10/112

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:100:100:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:100/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

multicast dynamic

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

Содержимое файла /etc/frr/frr.conf:

frr version 9.0.2

frr defaults traditional

hostname Hub1

log syslog informational

service integrated-vtysh-config

!

router bgp 65000

bgp router-id 10.10.10.100

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor spokes-ibgp peer-group

neighbor spokes-ibgp remote-as 65000

neighbor 2001:db8::192:168:255:1 remote-as 65001

bgp listen limit 5000

bgp listen range 2001:db8::10:10:10:0/112 peer-group spokes-ibgp

!

address-family ipv6 unicast

neighbor spokes-ibgp activate

neighbor spokes-ibgp route-reflector-client

neighbor spokes-ibgp next-hop-self

neighbor spokes-ibgp route-map SET-NEXTHOP in

neighbor spokes-ibgp route-map FROM-HUB1-OUT out

neighbor 2001:db8::192:168:255:1 activate

exit-address-family

exit

!

route-map SET-NEXTHOP permit 1

set ipv6 next-hop prefer-global

exit

!

route-map FROM-HUB1-OUT permit 1

set local-preference 100

exit

!

end

Устройство Hub2

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

hostname Hub2

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:100:101:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:100:101:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:255:11/112

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:100:101:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:200/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

multicast dynamic

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Hub2

log syslog informational

service integrated-vtysh-config

!

router bgp 65000

bgp router-id 10.10.10.200

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor spokes-ibgp peer-group

neighbor spokes-ibgp remote-as 65000

neighbor 2001:db8::192:168:255:1 remote-as 65001

bgp listen limit 5000

bgp listen range 2001:db8::10:10:10:0/112 peer-group spokes-ibgp

!

address-family ipv6 unicast

neighbor spokes-ibgp activate

neighbor spokes-ibgp route-reflector-client

neighbor spokes-ibgp next-hop-self

neighbor spokes-ibgp route-map SET-NEXTHOP in

neighbor spokes-ibgp route-map FROM-HUB2-OUT out

neighbor 2001:db8::192:168:255:1 activate

exit-address-family

exit

!

route-map SET-NEXTHOP permit 1

set ipv6 next-hop prefer-global

exit

!

route-map FROM-HUB2-OUT permit 1

set local-preference 75

exit

!

end

Устройство Hub3

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

hostname Hub3

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:101:100:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:101:100:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:255:20/112

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:101:100:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:20:100/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

multicast dynamic

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Hub3

log syslog informational

service integrated-vtysh-config

!

router bgp 65000

bgp router-id 10.10.20.100

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor spokes-ibgp peer-group

neighbor spokes-ibgp remote-as 65000

neighbor 2001:db8::192:168:255:1 remote-as 65001

bgp listen limit 5000

bgp listen range 2001:db8::10:10:20:0/112 peer-group spokes-ibgp

!

address-family ipv6 unicast

neighbor spokes-ibgp activate

neighbor spokes-ibgp route-reflector-client

neighbor spokes-ibgp next-hop-self

neighbor spokes-ibgp route-map SET-NEXTHOP in

neighbor spokes-ibgp route-map FROM-HUB3-OUT out

neighbor 2001:db8::192:168:255:1 activate

exit-address-family

exit

!

route-map SET-NEXTHOP permit 1

set ipv6 next-hop prefer-global

exit

!

route-map FROM-HUB3-OUT permit 1

set local-preference 50

exit

!

end

Устройство Hub4

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

hostname Hub4

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:101:101:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:101:101:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:255:21/112

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:101:101:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:20:200/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

multicast dynamic

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Hub4

log syslog informational

service integrated-vtysh-config

!

router bgp 65000

bgp router-id 10.10.20.200

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor spokes-ibgp peer-group

neighbor spokes-ibgp remote-as 65000

neighbor 2001:db8::192:168:255:1 remote-as 65001

bgp listen limit 5000

bgp listen range 2001:db8::10:10:20:0/112 peer-group spokes-ibgp

!

address-family ipv6 unicast

neighbor spokes-ibgp activate

neighbor spokes-ibgp route-reflector-client

neighbor spokes-ibgp next-hop-self

neighbor spokes-ibgp route-map SET-NEXTHOP in

neighbor spokes-ibgp route-map FROM-HUB4-OUT out

neighbor 2001:db8::192:168:255:1 activate

exit-address-family

exit

!

route-map SET-NEXTHOP permit 1

set ipv6 next-hop prefer-global

exit

!

route-map FROM-HUB4-OUT permit 1

set local-preference 25

exit

!

end

Устройство Spoke1-n1

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

fhrp version vrrp v3

hostname Spoke1-n1

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:100:1:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:100:1:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:1:10/112

vrrp 1 address-family ipv6

timers advertise 3

timers garp 5

no preempt

track sla check_isp_link

track interface TenGigabitEthernet0/0

address 2001:db8::192:168:1:1/112

exit-vrrp

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:100:1:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

vrrp track sla check_isp_link ipv6

host 2001:db8::172:16:1:1

host 2001:db8::172:16:101:15

mode icmp-echo

reachability any

source TenGigabitEthernet0/0

fall 15

rise 10

timeout 2

interval 3

!

vrrp notify common

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:1/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet6 static

address 2001:db8::10:10:20:1/112

pre-up ip link del mgre1 2> /dev/null || true

pre-up ip tunnel add mgre1 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

post-up ethtool -K mgre1 tx-checksumming off > /dev/null

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

map 2001:db8::10:10:10:100/112 2001:db8::172:16:100:2 register

map 2001:db8::10:10:10:200/112 2001:db8::172:16:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

interface mgre1

map 2001:db8::10:10:20:100/112 2001:db8::172:17:100:2 register

map 2001:db8::10:10:20:200/112 2001:db8::172:17:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Spoke1-n1

log syslog informational

service integrated-vtysh-config

!

ipv6 route 2001:db8::192:168:100:0/112 2001:db8::192:168:1:20 240

!

router bgp 65000

bgp router-id 192.168.1.10

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor 2001:db8::10:10:10:100 remote-as 65000

neighbor 2001:db8::10:10:10:100 timers connect 30

neighbor 2001:db8::10:10:10:200 remote-as 65000

neighbor 2001:db8::10:10:10:200 timers connect 30

neighbor 2001:db8::10:10:20:100 remote-as 65000

neighbor 2001:db8::10:10:20:100 timers connect 30

neighbor 2001:db8::10:10:20:200 remote-as 65000

neighbor 2001:db8::10:10:20:200 timers connect 30

!

address-family ipv6 unicast

network 2001:db8::192:168:1:0/112

neighbor 2001:db8::10:10:10:100 activate

neighbor 2001:db8::10:10:10:100 route-map TO-HUB1-OUT out

neighbor 2001:db8::10:10:10:200 activate

neighbor 2001:db8::10:10:10:200 route-map TO-HUB2-OUT out

neighbor 2001:db8::10:10:20:100 activate

neighbor 2001:db8::10:10:20:100 route-map TO-HUB3-OUT out

neighbor 2001:db8::10:10:20:200 activate

neighbor 2001:db8::10:10:20:200 route-map TO-HUB4-OUT out

exit-address-family

exit

!

route-map TO-HUB1-OUT permit 1

set local-preference 100

exit

!

route-map TO-HUB2-OUT permit 1

set local-preference 75

exit

!

route-map TO-HUB3-OUT permit 1

set local-preference 50

exit

!

route-map TO-HUB4-OUT permit 1

set local-preference 25

exit

!

Настройки VRRP

  1. Содержимое файла /etc/keepalived/notify_common.conf:

############################################## specific to DMVPN scenario ###########################################################

# Flag indicate that DMVPN scenario is using on clustered spokes.

# Used to mange BGP neighbors shutdown state or OSPF interfaces passive mode when VRRP node changes it STATE.

FLAG_DMVPN_SCENARIO_ON_CLUSTERED_SPOKE="true"

### IBGP specific options ###

# Internal routing protocol for DMVPN (IBGP or OSPF).

DMVPN_INTERNAL_ROUTING_PROTOCOL="IBGP"

# Local BGP AS Number. Set it if internal routing protocol is IBGP.

DMVPN_LOCAl_ASN="65000"

# BGP neighbors (separated by space) which must be shutted down if VRRP node transit to BACKUP of FAULT state,

# and no shutted down if VRRP node transit to MASTER state.

# Set it if internal routing protocol is IBGP.

DMVPN_BGP_NEIGHBORS="2001:db8::10:10:10:100 2001:db8::10:10:10:200 2001:db8::10:10:20:100 2001:db8::10:10:20:200"

  1. Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

enable_dbus

}

vrrp_sync_group 0 {

notify "/etc/keepalived/scripts/notify_common"

group {

eth1_ipv6_1

}

}

vrrp_script check_isp_link {

script "/etc/keepalived/scripts/sla check --ip-version 6 --mode icmp-echo --hosts 2001:db8::172:16:1:1 2001:db8::172:16:101:15 --reachability any --source-iface eth0 --tos 0xB8 --data-size 56 --name check_isp_link"

fall 15

rise 10

timeout 2

interval 3

}

vrrp_instance eth1_ipv6_1 {

version 3

interface eth1

track_interface {

eth0

}

virtual_ipaddress {

2001:db8::192:168:1:1/112

}

nopreempt

priority 100

advert_int 3

garp_master_refresh 5

virtual_router_id 1

track_script {

check_isp_link

}

}

Устройство Spoke1-n2

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

fhrp version vrrp v3

hostname Spoke1-n2

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-IPV6

description IP on WAN interface

host 2001:db8::100:101:1:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-IPV6 eq isakmp

permit udp any object-group SELF-IPV6 eq non500-isakmp

permit icmp any object-group SELF-IPV6

permit esp any object-group SELF-IPV6

!

ipv6 access-list IPSEC_DMVPN_IPV6

remark special DMVPN filter

permit gre object-group SELF-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_IPV6 1

match ipv6 address IPSEC_DMVPN_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_IPV6 1 ipsec-isakmp dynamic DMAP_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::100:101:1:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_IPV6 out

crypto map VPN_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::192:168:1:20/112

vrrp 1 address-family ipv6

timers advertise 3

timers garp 5

no preempt

priority 50

track sla check_isp_link

track interface TenGigabitEthernet0/0

address 2001:db8::192:168:1:1/112

exit-vrrp

!

interface TenGigabitEthernet0/2

no ip address

shutdown

!

!

!

ipv6 route ::/0 2001:db8::100:101:1:1

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

vrrp track sla check_isp_link ipv6

host 2001:db8::172:17:1:1

host 2001:db8::172:16:101:15

mode icmp-echo

reachability any

source TenGigabitEthernet0/0

fall 15

rise 10

timeout 2

interval 3

!

vrrp notify common

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:2/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet6 static

address 2001:db8::10:10:20:2/112

pre-up ip link del mgre1 2> /dev/null || true

pre-up ip tunnel add mgre1 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

post-up ethtool -K mgre1 tx-checksumming off > /dev/null

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

map 2001:db8::10:10:10:100/112 2001:db8::172:16:100:2 register

map 2001:db8::10:10:10:200/112 2001:db8::172:16:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

interface mgre1

map 2001:db8::10:10:20:100/112 2001:db8::172:17:100:2 register

map 2001:db8::10:10:20:200/112 2001:db8::172:17:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Spoke1-n2

log syslog outformational

service outtegrated-vtysh-config

!

ipv6 route 2001:db8::192:168:100:0/112 2001:db8::192:168:1:10 240

!

router bgp 65000

bgp router-id 192.168.1.20

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor 2001:db8::10:10:10:100 remote-as 65000

neighbor 2001:db8::10:10:10:100 timers connect 30

neighbor 2001:db8::10:10:10:200 remote-as 65000

neighbor 2001:db8::10:10:10:200 timers connect 30

neighbor 2001:db8::10:10:20:100 remote-as 65000

neighbor 2001:db8::10:10:20:100 timers connect 30

neighbor 2001:db8::10:10:20:200 remote-as 65000

neighbor 2001:db8::10:10:20:200 timers connect 30

!

address-family ipv6 unicast

network 2001:db8::192:168:1:0/112

neighbor 2001:db8::10:10:10:100 activate

neighbor 2001:db8::10:10:10:100 route-map TO-HUB1-OUT out

neighbor 2001:db8::10:10:10:200 activate

neighbor 2001:db8::10:10:10:200 route-map TO-HUB2-OUT out

neighbor 2001:db8::10:10:20:100 activate

neighbor 2001:db8::10:10:20:100 route-map TO-HUB3-OUT out

neighbor 2001:db8::10:10:20:200 activate

neighbor 2001:db8::10:10:20:200 route-map TO-HUB4-OUT out

exit-address-family

exit

!

route-map TO-HUB1-OUT permit 1

set local-preference 100

exit

!

route-map TO-HUB2-OUT permit 1

set local-preference 75

exit

!

route-map TO-HUB3-OUT permit 1

set local-preference 50

exit

!

route-map TO-HUB4-OUT permit 1

set local-preference 25

exit

!

Настройки VRRP

  1. Содержимое файла /etc/keepalived/notify_common.conf:

############################################## specific to DMVPN scenario ###########################################################

# Flag indicate that DMVPN scenario is using on clustered spokes.

# Used to mange BGP neighbors shutdown state or OSPF interfaces passive mode when VRRP node changes it STATE.

FLAG_DMVPN_SCENARIO_ON_CLUSTERED_SPOKE="true"

### IBGP specific options ###

# Internal routing protocol for DMVPN (IBGP or OSPF).

DMVPN_INTERNAL_ROUTING_PROTOCOL="IBGP"

# Local BGP AS Number. Set it if internal routing protocol is IBGP.

DMVPN_LOCAl_ASN="65000"

# BGP neighbors (separated by space) which must be shutted down if VRRP node transit to BACKUP of FAULT state,

# and no shutted down if VRRP node transit to MASTER state.

# Set it if internal routing protocol is IBGP.

DMVPN_BGP_NEIGHBORS="2001:db8::10:10:10:100 2001:db8::10:10:10:200 2001:db8::10:10:20:100 2001:db8::10:10:20:200"

  1. Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

enable_dbus

}

vrrp_sync_group 0 {

notify "/etc/keepalived/scripts/notify_common"

group {

eth1_ipv6_1

}

}

vrrp_script check_isp_link {

script "/etc/keepalived/scripts/sla check --ip-version 6 --mode icmp-echo --hosts 2001:db8::172:17:1:1 2001:db8::172:16:101:15 --reachability any --source-iface eth0 --tos 0xB8 --data-size 56 --name check_isp_link"

fall 15

rise 10

timeout 2

interval 3

}

vrrp_instance eth1_ipv6_1 {

version 3

interface eth1

track_interface {

eth0

}

virtual_ipaddress {

2001:db8::192:168:1:1/112

}

nopreempt

priority 50

advert_int 3

garp_master_refresh 5

virtual_router_id 1

track_script {

check_isp_link

}

}

Устройство Spoke2

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 ipsec security-association lifetime kilobytes unlimited

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 secret 5 $6$RiWz4IVm$qMp6sbpYnTfSUxuaJPZ9UCq4yy8/x

heIEbSmbTfMzmbQqepMD6R1b18vHTdFQt949xNXzpRXWA9dZ/gCK70z./

aaa new-model

!

!

hostname Spoke2

enable secret 5 PC9d7N5HlAyLrzuA3qRJvQ==

!

!

!

!

!

!

!

crypto isakmp policy 1

encr magma

hash stribog-256

authentication gost-sig

group vko2

!

crypto isakmp profile ALGS_PROFILE

match identity dn

set identity mapping

set policy 1

!

crypto ipsec transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY esp-magma-mgm

mode transport

!

object-group v6-network SELF-ISP1-IPV6

description IP on WAN interface for ISP1

host 2001:db8::172:16:2:2

!

object-group v6-network SELF-ISP2-IPV6

description IP on WAN interface for ISP2

host 2001:db8::172:17:2:2

!

ip access-list extended FIREWALL_OUT

deny ip any any

!

ip access-list extended FIREWALL_IN

deny ip any any

!

ipv6 default filtering permit

!

ipv6 access-list FW_OUTPUT_WAN_ISP1_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-ISP1-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_ISP1_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-ISP1-IPV6 eq isakmp

permit udp any object-group SELF-ISP1-IPV6 eq non500-isakmp

permit icmp any object-group SELF-ISP1-IPV6

permit esp any object-group SELF-ISP1-IPV6

!

ipv6 access-list FW_OUTPUT_WAN_ISP2_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

deny gre any any

permit ipv6 object-group SELF-ISP2-IPV6 any

!

ipv6 access-list FW_INPUT_WAN_ISP2_IPV6

permit icmp any any nd-ns

permit icmp any any nd-na

permit udp any object-group SELF-ISP2-IPV6 eq isakmp

permit udp any object-group SELF-ISP2-IPV6 eq non500-isakmp

permit icmp any object-group SELF-ISP2-IPV6

permit esp any object-group SELF-ISP2-IPV6

!

ipv6 access-list IPSEC_DMVPN_ISP1_IPV6

remark special DMVPN filter for ISP1

permit gre object-group SELF-ISP1-IPV6 each

!

ipv6 access-list IPSEC_DMVPN_ISP2_IPV6

remark special DMVPN filter for ISP2

permit gre object-group SELF-ISP2-IPV6 each

!

!

ip inspect tcp sessions-max 256000

ip inspect udp sessions-max 65536

ipv6 inspect name INSPECT tcp

ipv6 inspect name INSPECT udp

!

crypto dynamic-map DMAP_ISP1_IPV6 1

match ipv6 address IPSEC_DMVPN_ISP1_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto dynamic-map DMAP_ISP2_IPV6 1

match ipv6 address IPSEC_DMVPN_ISP2_IPV6

set transform-set MAGMA_GOST_ENCRYPT_AND_INTEGRITY

set isakmp-profile ALGS_PROFILE

set security-association mss-fix out

set pre-fragmentation

set dead-connection history off

!

crypto map VPN_ISP1_IPV6 1 ipsec-isakmp dynamic DMAP_ISP1_IPV6

!

crypto map VPN_ISP2_IPV6 2 ipsec-isakmp dynamic DMAP_ISP2_IPV6

!

interface TenGigabitEthernet0/0

no ip address

ipv6 address 2001:db8::172:16:2:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_ISP1_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_ISP1_IPV6 out

crypto map VPN_ISP1_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/1

no ip address

ipv6 address 2001:db8::172:17:2:2/112

ip access-group FIREWALL_IN in

ip access-group FIREWALL_OUT out

ipv6 access-group FW_INPUT_WAN_ISP2_IPV6 in

ipv6 access-group FW_OUTPUT_WAN_ISP2_IPV6 out

crypto map VPN_ISP2_IPV6

ipv6 inspect INSPECT out

!

interface TenGigabitEthernet0/2

no ip address

ipv6 address 2001:db8::192:168:2:1/112

!

interface TenGigabitEthernet0/3

no ip address

shutdown

!

!

!

!

crypto pki trustpoint s-terra_technological_trustpoint

revocation-check crl

crl download group ROOTCA http://[2001:db8::172:16:101:15]/certcrl.crl

crl download time 60

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

...

AD4F8901771632E0A0AF83

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet6 static

address 2001:db8::10:10:10:3/112

pre-up ip link del mgre0 2> /dev/null || true

pre-up ip tunnel add mgre0 mode ip6gre key 1 ttl 64 tos inherit

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

post-up ethtool -K mgre0 tx-checksumming off > /dev/null

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet6 static

address 2001:db8::10:10:20:3/112

pre-up ip link del mgre1 2> /dev/null || true

pre-up ip tunnel add mgre1 mode ip6gre key 2 ttl 64 tos inherit

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

post-up ethtool -K mgre1 tx-checksumming off > /dev/null

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

map 2001:db8::10:10:10:100/112 2001:db8::172:16:100:2 register

map 2001:db8::10:10:10:200/112 2001:db8::172:16:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

interface mgre1

map 2001:db8::10:10:20:100/112 2001:db8::172:17:100:2 register

map 2001:db8::10:10:20:200/112 2001:db8::172:17:101:2 register

multicast nhs

holding-time 90

cisco-authentication secret

non-caching

Настройки BGP

frr version 9.0.2

frr defaults traditional

hostname Spoke2

log syslog informational

service integrated-vtysh-config

!

router bgp 65000

bgp router-id 192.168.2.1

bgp log-neighbor-changes

no bgp ebgp-requires-policy

timers bgp 3 9

neighbor 2001:db8::10:10:10:100 remote-as 65000

neighbor 2001:db8::10:10:10:100 timers connect 30

neighbor 2001:db8::10:10:10:200 remote-as 65000

neighbor 2001:db8::10:10:10:200 timers connect 30

neighbor 2001:db8::10:10:20:100 remote-as 65000

neighbor 2001:db8::10:10:20:100 timers connect 30

neighbor 2001:db8::10:10:20:200 remote-as 65000

neighbor 2001:db8::10:10:20:200 timers connect 30

!

address-family ipv6 unicast

network 2001:db8::192:168:2:0/112

neighbor 2001:db8::10:10:10:100 activate

neighbor 2001:db8::10:10:10:100 route-map TO-HUB1-OUT out

neighbor 2001:db8::10:10:10:200 activate

neighbor 2001:db8::10:10:10:200 route-map TO-HUB2-OUT out

neighbor 2001:db8::10:10:20:100 activate

neighbor 2001:db8::10:10:20:100 route-map TO-HUB3-OUT out

neighbor 2001:db8::10:10:20:200 activate

neighbor 2001:db8::10:10:20:200 route-map TO-HUB4-OUT out

exit-address-family

exit

!

route-map TO-HUB1-OUT permit 1

set local-preference 100

exit

!

route-map TO-HUB2-OUT permit 1

set local-preference 75

exit

!

route-map TO-HUB3-OUT permit 1

set local-preference 50

exit

!

route-map TO-HUB4-OUT permit 1

set local-preference 25

exit

!

Настройки multiwan

config_format_version: 1

links_params:

links:

- name: ISP1

check:

hosts_reachability: any

ipv6:

hosts:

- 2001:db8::172:16:101:15

- 2001:db8::172:16:2:1

source_address: 2001:db8::172:16:2:2

method:

icmp:

max_rtt: 100

interval: 3

restore_interval: 1

restore_count: 10

failure_count: 10

tos: 184

data_size: 56

iface_name: eth0

prio: 300

routes:

ipv6:

networks:

- ::/0

nexthop: 2001:db8::172:16:2:1

source_address: 2001:db8::172:16:2:2

watch_foreign_routes: true

- name: ISP2

check:

hosts_reachability: any

ipv6:

hosts:

- 2001:db8::172:16:101:15

- 2001:db8::172:17:2:1

source_address: 2001:db8::172:17:2:2

method:

icmp:

max_rtt: 100

interval: 3

restore_interval: 1

restore_count: 10

failure_count: 10

tos: 184

data_size: 56

iface_name: eth1

prio: 200

routes:

ipv6:

networks:

- ::/0

nexthop: 2001:db8::172:17:2:1

source_address: 2001:db8::172:17:2:2

watch_foreign_routes: True