Настройка DMVPN (phase 2) с протоколом динамической маршрутизации iBGP для двух ЦОД

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

Назначение инструкции

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

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

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

Требования к квалификации инженера

Инженер, внедряющий и эксплуатирующий технологию DMVPN на базе продукта «С-Терра Шлюз» в производственной среде, должен свободно ориентироваться в настройке базовых сценариев (например, site-to-site IPsec) продукта «С-Терра Шлюз», а также должен знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall, NHRP, GRE, OSPF, BGP, VRRP.

Требования к начальному состоянию «С-Терра Шлюз»

Перед настройкой должно быть выполнено следующее:

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

2.    На шлюзах должны быть установлены корневой сертификат УЦ и локальный сертификат устройства.

Исключительно для тестовых целей можно использовать тестовый УЦ от «КриптоПро», веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp.

 


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

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

 


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

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

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

¾     «С-Терра Шлюз» 4.3: Hub1-dc1, Hub2-dc1, Hub1-dc2, Hub2-dc2, Spoke1-n1, Spoke1-n2, Spoke2‑n1, Spoke2‑n2.

¾     Роутеры на базе ОС Debian 9: Int_router1_Hub_dc1, Int_router1_Hub_dc2, Ext_router1_Hub1_dc1, Ext_router2_Hub2_dc1, Ext_router1_Hub1_dc2, Ext_router2_Hub2_dc2, Core_router_ISP1, Core_router_ISP2, Ext_router1_Spoke1, Ext_router2_Spoke1, Ext_router1_Spoke2, Ext_router2_Spoke2.

¾     Управляемые коммутаторы: Int_switch1_Hub_dc1, Int_switch1_Hub_dc2, Int_switch1_Spoke1, Int_switch1_Spoke2.

¾     Персональные компьютеры: host_behind_hub_dc1, host_behind_hub_dc2, host_behind_spoke1, host_behind_spoke2.

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

Логика работы

В каждом из ЦОД1 и ЦОД2 находятся защищаемые серверные сегменты локальной сети - подсеть 192.168.200.0/24 в ЦОД1 и подсеть 192.168.210.0/24 в ЦОД2.

Сетевое взаимодействие между ЦОДами производится через отдельную связь, которая в данной инструкции представлена только функционально в виде нерезервированной, незащищенной связи Inter data center link. Фактическая реализация этой связи (включая средства и способы резервирования и защиты информации) выходит за рамки данной инструкции и определяется персоналом, внедряющим решение.

В каждом ЦОДе и филиале устанавливается по два шлюза безопасности «С-Терра Шлюз» 4.3. Для подключения филиалов к двум ЦОДам используются независимые сети двух провайдеров ISP1 и ISP2, полностью изолированные друг от друга. Каждый из шлюзов безопасности в каждом из ЦОДов и филиалов подключается к коммуникационному оборудованию только одного из двух провайдеров ISP1 или ISP2.

Подключение шлюзов ЦОДов и филиалов к провайдерам происходит при помощи статической маршрутизации.

Защищенные соединения

Между шлюзами в филиалах и ЦОДах устанавливаются статические IPsec туннели. Инициатором построения туннелей является служебный трафик протоколов NHRP/BGP.

Между филиальными шлюзами устанавливаются динамические IPsec туннели. Инициатором построения туннелей является реальный трафик защищаемых подсетей филиалов.

Допускается расположение шлюзов безопасности за устройствами, выполняющими функции трансляции сетевых адресов. Трансляция в этом случае должна быть статическая (порты 500/4500 протокола UDP должны быть проброшены на «С-Терра Шлюз»).

Для корректной работы DMVPN с NAT необходимо, чтобы режим IPsec туннеля был транспортный.

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

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

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

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

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

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

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

¾     Режим туннеля - транспортный.

Динамическая маршрутизация

Динамическая маршрутизация защищаемых подсетей филиалов и ЦОДов обеспечивается протокол BGP.

Шлюзы безопасности, установленные в филиалах, отсылают маршрутную информацию о защищаемых подсетях шлюзам в ЦОДы и смежному шлюзу в филиале. Соответственно, получение маршрутной информации происходит тоже из ЦОДов и от смежного шлюза в филиале. Маршруты до защищаемых подсетей устанавливаются через mGRE-интерфейсы.

Все шлюзы безопасности, подключенные к одному провайдеру, находятся в одной автономной системе - №65001 для шлюзов, подключенных к провайдеру ISP1, и №65002 для шлюзов, подключенных к провайдеру ISP2. Центральные шлюзы являются роут-рефлекторами (route-reflector), а филиальные - роут-рефлектор клиентами (route-reflector client).

Между шлюзами в ЦОДах и роутерами Int_router1_Hub_dc1 и Int_router1_Hub_dc1 (AS №65003) передача маршрутной информации обеспечивается при помощи eBGP. Между парами шлюзов в ЦОДах и филилах (AS №65001 для шлюзов, подключенных к провайдеру ISP1, и AS №65002 для шлюзов, подключенных к провайдеру ISP2) передача маршрутной информации так же обеспечивается при помощи eBGP (передача происходит по выделенной сети (перемычке) 100.100.150.0/24).

Данная инструкция разработана в соответствии с требованием о приоритете использования провайдера ISP1. Сеть провайдера ISP2 должна использоваться при невозможности достигнуть пункта назначения через провайдера ISP1. Выполнение этого требования достигается средствами протокола BGP путем приоритезации путей прохождения трафика при обмене между Филиалом №1 (Филиалом №2 аналогично) и ЦОДами. В таблицах ниже (см. Таблица 1 и Таблица 2) перечислены все возможные пути прохождения трафика в порядке убывания приоритета путей, если все устройства стенда исправны. Для отправки транзитного (источник или пункт назначения - сеть филиала) и локального трафика (источник или пункт назначения - сам шлюз) каждый шлюз безопасности в Филиале №1 (Филиале №2), шлюз в ЦОДе или внутренний марштизатор в ЦОДе будет выбирать самый приоритетный путь из доступных. Доступность пути определяется средствами протокола BGP. Одной из возможных причин недоступности пути может быть отключение шлюза, участвующего в этом пути. При этом для транзитного трафика в филиале (смотри Таблица 1) указанные пути актуальны, если соответствующая нода находится в состоянии MASTER в терминах протокола VRRP, а для локального трафика указанные пути актуальны независимо от состояния шлюза в рамках протокола VRRP. Например, если шлюз Spoke1‑n1, являющийся членом кластера VRRP в Филиале №1, находится в состоянии MASTER, то поступающий из локальной сети 192.168.1.0/24 транзитный трафик в защищаемые подсети ЦОДов будет передаваться по пути:

¾      Hub1‑dc1, если он доступен, независимо от доступности других путей;

¾      Hub1‑dc2, если он доступен, а шлюз Hub1‑dc1 недоступен;

¾      Spoke1-n2 -> Hub2-dc1, если они доступны, а шлюзы Hub1‑dc1 и Hub1‑dc2 недоступны;

¾      Spoke1-n2 -> Hub2-dc2, если они доступны, а шлюзы Hub1‑dc1, Hub1‑dc2 и Spoke1-n2 -> Hub2‑dc1 недоступны.

Приоритеты путей из Филиала №1 в ЦОДы для шлюза Spoke1‑n2 действуют в случае одновременной работы Spoke1‑n1 и Spoke1‑n2, когда Spoke1‑n2 находится в состоянии MASTER. Это возможно в случае перезагрузки Spoke1‑n1, так как в рамках инструкции используется опция nopreemt протокола VRRP.

Таблица 1 Приоритеты путей из Филиала №1 в защищаемые подсети ЦОДов

Шлюз безопасности в Филиале №1

Приоритет пути (в порядке убывания приоритета)

Spoke1-n1

Hub1-dc1

Hub1-dc2

Spoke1-n2 -> Hub2-dc1

Spoke1-n2 -> Hub2-dc2

Spoke1-n2

Spoke1-n1 -> Hub1-dc1

Spoke1-n1 -> Hub1-dc2

Hub2-dc1

Hub2-dc2

Таблица 2 Приоритеты путей из защищаемых подсетей ЦОДов в Филиал №1

Внутренний маршрутизатор в ЦОДе

Приоритет пути (в порядке убывания приоритета)

Int_router1_Hub_dc1

Hub1-dc1

Int_router1_Hub_dc2->Hub1-dc2-> Spoke1-n1

Hub2-dc1

Int_router1_Hub_dc2->Hub2-dc2-> Spoke1-n2

Int_router1_Hub_dc2

Int_router1_Hub_dc1->Hub1-dc1-> Spoke1-n1

Hub1-dc2

Int_router1_Hub_dc1->Hub2-dc1-> Spoke1-n2

Hub2-dc1

Отказоустойчивость

Отказоустойчивость ЦОДов. Отказоустойчивость ЦОДов, а именно шлюзов безопасности Hub1-dc1, Hub2-dc1, Hub1-dc2 и Hub2-dc2, по отношению к филиальным шлюзам обеспечивается протоколами NHRP и BGP. Филиальные шлюзы, которые являются основной нодой VRRP кластера, одновременно регистрируется по протоколу NHRP на центральных шлюзах Hub1‑dc1 и Hub1‑dc2, а филиальные шлюзы, которые являются резервной нодой VRRP кластера, регистрируется на центральных шлюзах Hub2‑dc1 и Hub2‑dc2. Филиальные шлюзы получают маршрутную информацию обо всех защищаемых подсетях с центральных шлюзов через соответствующие mGRE-интерфейсы.

В силу некоторых особенностей открытой реализации протокола NHRP в пакете OpenNHRP необходимо придерживаться следующего принципа на филиальных шлюзах: одна mGRE-подсеть на один шлюз в одном ЦОДе. То есть в данной инструкции на каждом шлюзе в филиале должно быть две mGRE подсети, отличающиеся от mGRE подсетей смежного шлюза в филиале. Суммарно в филиале необходимо четыре mGRE-подсети на двух шлюзах шлюзах - две для подключения к шлюзам Hub1 ЦОД1 и ЦОД2 и и две для подключения к шлюзам Hub2 ЦОД1 и ЦОД2.

Отказоустойчивость филиала. Отказоустойчивость филиала реализована протоколом VRRP, работающим со стороны защищаемой подсети. Переключение на резервную ноду происходит только при отказе master-ноды. В рамках настоящей инструкции контроль внешнего интерфейса master-ноды VRRP кластера и доступности внешнего интерфейса ЦОДа отключен в отличии от инструкции «Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP».

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

Ограничения

Данная инструкция написана с учетом следующих ограничений:

¾      Организация связи между ЦОДами выходит за рамки данной инструкции и должна производиться внешними средствами. Организация защиты взаимодействия между ЦОДами с использованием шлюзов безопасности «С-Терра Шлюз» 4.3, используемыми для связи с филиалами, в данной инструкции не рассматривалась и требует дополнительного согласования с Разработчиком шлюзов безопасности «С-Терра Шлюз» 4.3 (ООО «С‑Терра»);

¾      При необходимости настройки других приоритетов путей прохождения трафика между филиалами и ЦОДами это должно быть сделано внедряющим решение персоналом посредством настройки local-preference протокола BGP по аналогии с изложенными в данной инструкции настройками с добавлением дополнительных условий.

Для обеспечения симметричности путей прохождения пакетов между филиалами и ЦОДами должна быть обеспечена симметричность (зеркальность) схемы настройки приоритетов путей в направлениях от филиала к защищаемым подсетям ЦОДов и обратно.

Примечание. В данной инструкции сделано все возможное для устранения асимметрии трафика между филиалами и ЦОДами, но тестирование на всем множестве комбинаций отказов не проводилось. В случае выявления асимметрии маршрутов её устранение должно быть выполнено внедряющим решение персоналом путем настройки local-preference протокола BGP.

¾     Для обеспечения отказоустойчивости решения в рамках данной инструкции включен BGP пиринг на резервной ноде VRRP кластера в филиале в отличие от инструкции инструкции «Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP»;

¾     Данная инструкция разработана в соответствии с требованием о неизменности MASTER‑ноды VRRP кластера в филиале при отказе подключения к провайдеру. Поэтому в рамках настоящей инструкции отключен контроль внешнего интерфейса MASTER‑ноды VRRP кластера и доступности внешнего интерфейса ЦОДа, а также включена опция nopreempt, для отключения автоматического возврата на более приоритетный шлюз. Если это требование не является актуальным при внедрении решения, то пример настройки соответствующих функций приведен в инструкции «Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP». При этом BGP пиринг на резервной ноде VRRP кластера в филиале должен быть включен;

¾     Описанное в данной инструкции решение не позволяет получить доступ из защищаемой подсети филиала в подсети ЦОДа и смежного филиала при отказе провайдера и перемычки между шлюзами в филиале, если шлюз, подключенный к отказавшему провайдеру, находится в состоянии MASTER. Преодолеть это ограничение можно включив трекинг внешнего интерфейса MASTER‑ноды VRRP кластера и доступности внешнего интерфейса ЦОДа;

¾     Описанное в данной инструкции решение приводит к ассимитричности трафика между филиалами (прием и передач по сетям разных провайдеров), если резервная нода в филиале (Spoke1‑n2 или Spoke2‑n2) находится в состоянии MASTER и отказывает перемычка в этом филиале. Это событие маловероятное, но возможное. Преодолеть это ограничение можно следующими способами:

·         Отключить опцию nopreempt на шлюзах филиалов и обеспечить переход шлюза филиала, подключенного к более приоритетному провайдеру, в состояние MASTER. При этом на время переключения нод кластера будет наблюдаться ассиметрия трафика между филиалами;

·         Исключение перемычек между филиальными шлюзами и использование для обмена между ними по eBGP тех же связей, которые используются для подключения к защищаемой подсети филиала, на которых работает протокол VRRP;

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

¾     Построение прямого IPsec‑туннеля между филиалами невозможно, если отсутствует связь между филиалами через одного провайдера, например, при отказе в филиалах шлюзов, подключенных к разным провайдерам. В этом случае взаимодействие между филиалами возможно только через ЦОДы;

¾     В рамках данной инструкции не рассматривается подключение из филиалов или ЦОДов к сети Интернет или использование внешних сервисов, например, DNS-серверов провайдера и так далее.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.    Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

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

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

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

2.    Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

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

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

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

2.    Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

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

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

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

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

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

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

2.    Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

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

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

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

2.    Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).

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

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

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

2.    Динамическая маршрутизация. В приложении представлены настройки FRR.

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

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

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

2.    Динамическая маршрутизация. В приложении представлены настройки FRR.

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

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

Краткий план настройки:

1.    Базовые сетевые настройки.

2.    Настройка IPsec и Firewall.

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

4.    Настройка NHRP.

5.    Настройка BGP.

Базовые сетевые настройки

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

S-Terra administrative console

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

Пользователь и пароль по умолчанию: administrator, s-terra. Обязательно смените пароль для пользователя administrator при помощи команды change user password.

login as: administrator

administrator's password:

administrator@sterragate]

2.    Базовые сетевые настройки осуществляются из cisco-like консоли шлюза, чтобы попасть в нее выполните следующую команду в CLI разграничения доступа:

Пользователь и пароль по умолчанию: cscons, csp. Обязательно смените пароль для пользователя cscons и enable пароль. Под пользователем cscons можно осуществлять удаленное управление шлюзом по SSH.

administrator@sterragate] configure

sterragate login: cscons

Password:

S-Terra Gate 4.3.xxxxx (amd64)

sterragate#

3.    Настройте имя устройства, IP-адреса и маршрут по умолчанию в соответствии с общей схемой стенда (см. рисунок 1):

sterragate#configure terminal

sterragate(config)#hostname hub1-dc1

hub1-dc1(config)#interface GigabitEthernet0/0

hub1-dc1(config-if)# ip address 100.100.100.2 255.255.255.0

hub1-dc1(config-if)# no shutdown

hub1-dc1(config-if)#interface GigabitEthernet0/1

hub1-dc1(config-if)# ip address 192.168.250.10 255.255.255.0

hub1-dc1(config-if)# no shutdown

hub1-dc1(config-if)#interface GigabitEthernet0/2

hub1-dc1(config-if)# ip address 100.100.150.1 255.255.255.0

hub1-dc1(config-if)# no shutdown

hub1-dc1(config-if)#ip route 0.0.0.0 0.0.0.0 100.100.100.1

hub1-dc1(config)#end

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

hub1-dc1#ping 100.100.100.1

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

108 bytes from 100.100.100.1: icmp_req=1 ttl=64 time=0.404 ms

108 bytes from 100.100.100.1: icmp_req=2 ttl=64 time=0.216 ms

108 bytes from 100.100.100.1: icmp_req=3 ttl=64 time=0.232 ms

108 bytes from 100.100.100.1: icmp_req=4 ttl=64 time=0.212 ms

108 bytes from 100.100.100.1: icmp_req=5 ttl=64 time=0.230 ms

 

--- 100.100.100.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.212/0.258/0.404/0.075 ms

Настройка IPsec и Firewall

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

1.    Параметры IKE:

hub1-dc1#conf t

hub1-dc1(config)#crypto isakmp identity dn

hub1-dc1(config)#crypto isakmp fragmentation

hub1-dc1(config)#crypto isakmp keepalive 3 3

hub1-dc1(config)#crypto isakmp keepalive retry-count 3

hub1-dc1(config)#

hub1-dc1(config)#crypto isakmp policy 1

hub1-dc1(config-isakmp)# encr gost

hub1-dc1(config-isakmp)# hash gost341112-256-tc26

hub1-dc1(config-isakmp)# authentication gost-sig

hub1-dc1(config-isakmp)# group vko2

hub1-dc1(config-isakmp)#exit

2.    Параметры IPsec:

2.1.      Группы сетевых объектов:

hub1-dc1(config)#object-group network self

hub1-dc1(config-network-group)#description IP on WAN interface

hub1-dc1(config-network-group)#host 100.100.100.2

hub1-dc1(config-network-group)#exit

hub1-dc1(config)#object-group network private

hub1-dc1(config-network-group)#description private LANs

hub1-dc1(config-network-group)#100.64.0.0 255.192.0.0

hub1-dc1(config-network-group)#172.16.0.0 255.240.0.0

hub1-dc1(config-network-group)#192.168.0.0 255.255.0.0

hub1-dc1(config-network-group)#10.0.0.0 255.0.0.0

hub1-dc1(config-network-group)#exit

hub1-dc1(config)#object-group network multicast

hub1-dc1(config-network-group)#host 224.0.0.5

hub1-dc1(config-network-group)#host 224.0.0.6

hub1-dc1(config-network-group)#host 224.0.0.18

hub1-dc1(config-network-group)#exit

hub1-dc1(config)#object-group network protected_lan

hub1-dc1(config-network-group)#description LANs which must be protected by IPsec

hub1-dc1(config-network-group)#192.168.200.0 255.255.255.0

hub1-dc1(config-network-group)#192.168.210.0 255.255.255.0

hub1-dc1(config-network-group)#exit

2.2.      Список доступа для трафика:

Для работы DMVPN в списке доступа следует указать ключевое слово each, а не any (как в версиях 4.1/4.2; any в прошлых версиях совместимо с each в текущей):

permit ip object-group self each.

Ключевое слово each позволяет строить узкие IPsec туннели для любого адреса назначения (например, для каждого NBMA адреса шлюза).

При работе «С-Терра Шлюз» через NAT в транспортном IPsec режиме нельзя указывать в фильтрах для трафика, требующего шифрование, протоколы отличные от IP. То есть нельзя написать:

permit gre object-group self each.

hub1-dc1(config)#ip access-list extended IPSEC_DMVPN

hub1-dc1(config-ext-nacl)# deny   icmp object-group self any

hub1-dc1(config-ext-nacl)# deny   udp  object-group self any

hub1-dc1(config-ext-nacl)# deny   tcp  object-group self any

hub1-dc1(config-ext-nacl)# deny   ip   object-group self object-group multicast

hub1-dc1(config-ext-nacl)# remark special DMVPN filter

hub1-dc1(config-ext-nacl)# permit ip   object-group self each

hub1-dc1(config-ext-nacl)#exit

hub1-dc1(config)#

После исключения из шифрования (строки с deny) протоколов ICMP/UDP/TCP под фильтр permit ip object-group self each попадет как раз GRE трафик.

2.3.      Задайте комбинированный алгоритм шифрования с контролем целостности и режим работы IPsec:

hub1-dc1(config)#crypto ipsec transform-set GOST esp-gost28147-4m-imit

hub1-dc1(cfg-crypto-trans)# mode transport

hub1-dc1(cfg-crypto-trans)#exit

hub1-dc1(config)#

2.4.      Создайте динамическую крипто-карту и привяжите ее к статической:

hub1-dc1(config)#crypto dynamic-map DMAP 1

hub1-dc1(config-crypto-map)# match address IPSEC_DMVPN

hub1-dc1(config-crypto-map)# set transform-set GOST

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

hub1-dc1(config-crypto-map)#crypto map VPN 1 ipsec-isakmp dynamic DMAP

hub1-dc1(config)#

3.    Параметры Firewall:

3.1.      Список доступа для трафика:

Список доступа должен блокировать открытый трафик из защищаемой подсети шлюза в подсети RFC1918/RFC6598 (считаем, что трафик непубличных подсетей должен обязательно шифроваться), а также незашифрованный GRE.

hub1-dc1(config)#ip access-list extended FIREWALL_OUT

hub1-dc1(config-ext-nacl)# deny ip object-group protected_lan object-group private

hub1-dc1(config-ext-nacl)# deny gre any any

hub1-dc1(config-ext-nacl)# permit ip any any

hub1-dc1(config-ext-nacl)#exit

hub1-dc1(config)#

4.    Прикрепите крипто-карту и список доступа на внешний интерфейс:

hub1-dc1(config)#interface GigabitEthernet0/0

hub1-dc1(config-if)# ip access-group FIREWALL_OUT out

hub1-dc1(config-if)# crypto map VPN

hub1-dc1(config-if)#exit

5.    Отключите проверку списка отозванных сертификатов (CRL):

Если требуется проверка CRL (рекомендуется) - смотрите настройку в базовых сценариях.

hub1-dc1(config)#crypto pki trustpoint s-terra_technological_trustpoint

hub1-dc1(ca-trustpoint)# revocation-check none

hub1-dc1(ca-trustpoint)#exit

6.    Примените введенные настройки:

Настройки применяются по выходе из консоли при помощи команды end.

hub1-dc1(config)#end

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

hub1-dc1#ping 100.100.100.1

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

108 bytes from 100.100.100.1: icmp_req=1 ttl=64 time=0.465 ms

108 bytes from 100.100.100.1: icmp_req=2 ttl=64 time=0.231 ms

108 bytes from 100.100.100.1: icmp_req=3 ttl=64 time=0.213 ms

108 bytes from 100.100.100.1: icmp_req=4 ttl=64 time=0.239 ms

108 bytes from 100.100.100.1: icmp_req=5 ttl=64 time=0.255 ms

 

--- 100.100.100.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.213/0.280/0.465/0.094 ms

Параметры IPsec и Firewall приведены в приложении.

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

На шлюзах в ЦОД1 и ЦОД2 должно быть по одному mGRE-интерфейсу, а на филиальных - по два (по одному на каждый шлюз в ЦОДах, подключенных к соответствующему провайдеру).

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

hub1-dc1#exit

administrator@hub1-dc1] system

Entering system shell...

root@hub1-dc1:~#

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

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

auto mgre0

iface mgre0 inet static

address 10.10.10.100

netmask 255.255.255.0

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

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

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

root@hub1-dc1:~# ifup mgre0

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

root@hub1-dc1:~# ip tunnel show mgre0

mgre0: gre/ip  remote any  local any  ttl 64  tos inherit nopmtudisc key 1

root@hub1-dc1:~# ip address show dev mgre0

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

    link/gre 0.0.0.0 brd 0.0.0.0

    inet 10.10.10.100/24 brd 10.10.10.255 scope global mgre0

       valid_lft forever preferred_lft forever

Настройки mGRE-интерфейса приведены в приложении.

Настройка NHRP

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

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

Значение holding-time следует задавать в диапозоне от 30 до 150. Период отправки nhrp-пакетов равен трети от значения holding-time. При получении nhrp-пакета в log-файле создаются соответсвующие записи. При большом количестве криптомаршрутизаторов участвующих в DMVPN и малом значении holding-time, может произойти переполнение логов. При значении holding-time больше 150 время восстановления соединения между криптомаршрутизаторами может занимать больше минуты.

interface mgre0

 multicast dynamic

 holding-time 90

 cisco-authentication secret

 non-caching

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

root@hub1-dc1:~# systemctl enable opennhrp

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

root@hub1-dc1:~# systemctl start opennhrp

Настройки NHRP приведены в приложении.

Настройка BGP

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

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

root@hub1-dc1:~# systemctl enable frr

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

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

root@hub1-dc1:~# systemctl start frr

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

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] bgpd state -> down : initial connection attempt failed

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] ripd state -> down : initial connection attempt failed

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] ospfd state -> down : initial connection attempt failed

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] pbrd state -> down : initial connection attempt failedstaticd

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 268435467] zebra state -> down : initial connection attempt failed

Feb 14 14:59:17 hub1-dc1 watchfrr[831]: [EC 100663303] Forked background command [pid 832]: /usr/lib/frr/watchfrr.sh restart all

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop bgpd: pid file not found

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop ripd: pid file not found

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop zebra: pid file not found

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop ospfd: pid file not found

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop pbrd: pid file not found

Feb 14 14:59:17 hub1-dc1 watchfrr.sh: Cannot stop staticd: pid file not found

 

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

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

root@hub-dc11:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

hub1-dc1#

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

hub1-dc1# configure terminal

hub1-dc1(config)# router bgp 65001

hub1-dc1(config-router)# bgp router-id 10.10.10.100

hub1-dc1(config-router)# bgp log-neighbor-changes

hub1-dc1(config-router)# bgp network import-check

hub1-dc1(config-router)# timers bgp 3 9

hub1-dc1(config-router)# neighbor spokes-ibgp peer-group

hub1-dc1(config-router)# neighbor spokes-ibgp remote-as 65001

hub1-dc1(config-router)# neighbor 100.100.150.2 remote-as 65002

hub1-dc1(config-router)# neighbor 192.168.250.1 remote-as 65003

hub1-dc1(config-router)# bgp listen limit 5000

hub1-dc1(config-router)# bgp listen range 10.10.10.0/24 peer-group spokes-ibgp

hub1-dc1(config-router)# address-family ipv4 unicast

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

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

Команда «neighbor spokes-ibgp  next-hop-self» используется для изменения next-hop адреса маршрутов, полученных от eBGP соседей.

Чтобы изменять next-hop адреса маршрутов, полученных по iBGP, можно использовать команду «neighbor  spokes-ibgp  next-hop-self  all». В этом случае трафик между филиалами будет идти через центр (DMVPN phase 1).

hub1-dc1(config-router-af)# end

hub1-dc1# 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]

Настройки BGP приведены в приложении.

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

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

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

Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.

В приложении представлены соответствующие конфигурационные файлы.

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

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

Настройка устройства Hub2‑dc2 осуществляется аналогично устройству Hub1‑dc1 с учетом соответствующих IP-адресов (см. рисунок 1).

Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.

В приложении представлены соответствующие конфигурационные файлы.

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

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

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

Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.

В приложении представлены соответствующие конфигурационные файлы.

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

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

Краткий план настройки:

1.    Базовые сетевые настройки.

2.    Настройка IPsec и Firewall.

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

4.    Настройка NHRP.

5.    Настройка BGP.

6.    Настройка VRRP.

Базовые сетевые настройки

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

S-Terra administrative console

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

Пользователь и пароль по умолчанию: administrator, s-terra. Обязательно смените пароль для пользователя administrator при помощи команды change user password.

login as: administrator

administrator's password:

administrator@sterragate]

2.    Базовые сетевые настройки осуществляются из cisco-like консоли шлюза, чтобы попасть в нее выполните следующую команду в CLI разграничения доступа:

Пользователь и пароль по умолчанию: cscons, csp. Обязательно смените пароль для пользователя cscons и enable пароль. Под пользователем cscons можно осуществлять удаленное управление шлюзом по SSH.

administrator@sterragate] configure

sterragate login: cscons

Password:

S-Terra Gate 4.3.xxxxx (amd64)

sterragate#

3.    Настройте имя устройства, IP-адреса и маршрут по умолчанию в соответствии с общей схемой стенда (см. рисунок 1):

sterragate#configure terminal

sterragate(config)#hostname Spoke1-n1

Spoke1-n1(config)#interface GigabitEthernet0/0

Spoke1-n1(config-if)# ip address 100.100.1.2 255.255.255.0

Spoke1-n1(config-if)# no shutdown

Spoke1-n1(config-if)#interface GigabitEthernet0/1

Spoke1-n1(config-if)# ip address 192.168.1.10 255.255.255.0

Spoke1-n1(config-if)# no shutdown

Spoke1-n1(config-if)#interface GigabitEthernet0/2

Spoke1-n1(config-if)# ip address 100.101.2.1 255.255.255.0

Spoke1-n1(config-if)# no shutdown

Spoke1-n1(config-if)#ip route 0.0.0.0 0.0.0.0 100.100.1.1

Spoke1-n1(config)#end

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

Spoke1-n1#ping 100.100.1.1

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

108 bytes from 100.100.1.1: icmp_req=1 ttl=64 time=0.331 ms

108 bytes from 100.100.1.1: icmp_req=2 ttl=64 time=0.219 ms

108 bytes from 100.100.1.1: icmp_req=3 ttl=64 time=0.171 ms

108 bytes from 100.100.1.1: icmp_req=4 ttl=64 time=0.187 ms

108 bytes from 100.100.1.1: icmp_req=5 ttl=64 time=0.163 ms

 

--- 100.100.1.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.163/0.214/0.331/0.062 ms

Настройка IPsec и Firewall

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

1.    Параметры IKE:

Spoke1-n1#conf t

Spoke1-n1(config)#crypto isakmp identity dn

Spoke1-n1(config)#crypto isakmp fragmentation

Spoke1-n1(config)#crypto isakmp keepalive 3 3

Spoke1-n1(config)#crypto isakmp keepalive retry-count 3

Spoke1-n1(config)#

Spoke1-n1(config)#crypto isakmp policy 1

Spoke1-n1(config-isakmp)# encr gost

Spoke1-n1(config-isakmp)# hash gost341112-256-tc26

Spoke1-n1(config-isakmp)# authentication gost-sig

Spoke1-n1(config-isakmp)# group vko2

Spoke1-n1(config-isakmp)#

Spoke1-n1(config-isakmp)#exit

2.    Параметры IPsec:

2.1.      Группы сетевых объектов:

Spoke1-n1(config)#object-group network self

Spoke1-n1(config-network-group)#description IP on WAN interface

Spoke1-n1(config-network-group)#host 100.100.1.2

Spoke1-n1(config-network-group)#exit

Spoke1-n1(config)#object-group network private

Spoke1-n1(config-network-group)#description private LANs

Spoke1-n1(config-network-group)#100.64.0.0 255.192.0.0

Spoke1-n1(config-network-group)#172.16.0.0 255.240.0.0

Spoke1-n1(config-network-group)#192.168.0.0 255.255.0.0

Spoke1-n1(config-network-group)#10.0.0.0 255.0.0.0

Spoke1-n1(config-network-group)#exit

Spoke1-n1(config)#object-group network multicast

Spoke1-n1(config-network-group)#host 224.0.0.5

Spoke1-n1(config-network-group)#host 224.0.0.6

Spoke1-n1(config-network-group)#host 224.0.0.18

Spoke1-n1(config-network-group)#exit

Spoke1-n1(config)#object-group network protected_lan

Spoke1-n1(config-network-group)#description LANs which must be protected by IPsec

Spoke1-n1(config-network-group)#192.168.1.0 255.255.255.0

Spoke1-n1(config-network-group)#exit

2.2.      Список доступа для трафика:

Для работы DMVPN в списке доступа следует указать ключевое слово each, а не any:

permit ip object-group self each.

Ключевое слово each позволяет строить узкие IPsec туннели для любого адреса назначения (например, для каждого NBMA адреса шлюза).

При работе «С-Терра Шлюз» через NAT в транспортном IPsec режиме нельзя указывать в фильтрах для трафика, требующего шифрование, протоколы отличные от IP. То есть нельзя написать:

permit gre object-group self each.

Spoke1-n1(config)#ip access-list extended IPSEC_DMVPN

Spoke1-n1(config-ext-nacl)# deny   icmp object-group self any

Spoke1-n1(config-ext-nacl)# deny   udp  object-group self any

Spoke1-n1(config-ext-nacl)# deny   tcp  object-group self any

Spoke1-n1(config-ext-nacl)# deny   ip   object-group self object-group multicast

Spoke1-n1(config-ext-nacl)# remark special DMVPN filter

Spoke1-n1(config-ext-nacl)# permit ip   object-group self each

Spoke1-n1(config-ext-nacl)#exit

Spoke1-n1(config)#

После исключения из шифрования (строки с deny) протоколов ICMP/UDP/TCP под фильтр permit ip object-group self each попадет как раз GRE трафик.

2.3.      Задайте алгоритм шифрования и режим работы IPsec:

Spoke1-n1(config)#crypto ipsec transform-set GOST esp-gost28147-4m-imit

Spoke1-n1(cfg-crypto-trans)# mode transport

Spoke1-n1(cfg-crypto-trans)#exit

Spoke1-n1(config)#

2.4.      Создайте динамическую крипто-карту и привяжите ее к статической:

Spoke1-n1(config)#crypto dynamic-map DMAP 1

Spoke1-n1(config-crypto-map)# match address IPSEC_DMVPN

Spoke1-n1(config-crypto-map)# set transform-set GOST

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

Spoke1-n1(config-crypto-map)#crypto map VPN 1 ipsec-isakmp dynamic DMAP

Spoke1-n1(config)#

3.    Параметры Firewall:

3.1.      Список доступа для трафика:

Список доступа должен блокировать открытый трафик из защищаемой подсети шлюза в подсети RFC1918/RFC6598 (считаем, что трафик непубличных подсетей должен обязательно шифроваться), а также незашифрованный GRE.

Spoke1-n1(config)#ip access-list extended FIREWALL_OUT

Spoke1-n1(config-ext-nacl)# deny ip object-group protected_lan object-group private

Spoke1-n1(config-ext-nacl)# deny gre any any

Spoke1-n1(config-ext-nacl)# permit ip any any

Spoke1-n1(config-ext-nacl)#exit

Spoke1-n1(config)#

4.    Прикрепите крипто-карту и список доступа на внешний интерфейс:

Spoke1-n1(config)#interface GigabitEthernet0/0

Spoke1-n1(config-if)# ip access-group FIREWALL_OUT out

Spoke1-n1(config-if)# crypto map VPN

Spoke1-n1(config-if)#exit

5.    Отключите проверку списка отозванных сертификатов (CRL):

Если требуется проверка CRL (рекомендуется) - смотрите настройку в базовых сценариях.

Spoke1-n1(config)#crypto pki trustpoint s-terra_technological_trustpoint

Spoke1-n1(ca-trustpoint)#revocation-check none

Spoke1-n1(ca-trustpoint)#exit

Spoke1-n1(config)#

6.    Примените введенные настройки:

Настройки применяются по выходе из консоли при помощи команды end.

Spoke1-n1(config)#end

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

Spoke1-n1#ping 100.100.1.1

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

108 bytes from 100.100.1.1: icmp_req=1 ttl=64 time=0.409 ms

108 bytes from 100.100.1.1: icmp_req=2 ttl=64 time=0.247 ms

108 bytes from 100.100.1.1: icmp_req=3 ttl=64 time=0.183 ms

108 bytes from 100.100.1.1: icmp_req=4 ttl=64 time=0.183 ms

108 bytes from 100.100.1.1: icmp_req=5 ttl=64 time=0.212 ms

 

--- 100.100.1.1 ping statistics ---

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

rtt min/avg/max/mdev = 0.183/0.246/0.409/0.086 ms

Параметры IPsec и Firewall приведены в приложении.

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

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

Spoke1-n1#exit

administrator@Spoke1-n1] system

Entering system shell...

root@Spoke1-n1:~#

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

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

auto mgre0

iface mgre0 inet static

address 10.10.10.1

netmask 255.255.255.0

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

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

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

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

auto mgre1

iface mgre1 inet static

address 10.10.30.1

netmask 255.255.255.0

pre-up ip tunnel add mgre1 mode gre key 3 ttl 64 tos inherit

pre-up ethtool -K mgre1 tx off > /dev/null

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

pre-up ip link set mgre1 type gre nopmtudisc

pre-up ip link set mgre1 type gre ignore-df

post-down ip link del mgre1

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

root@Spoke1-n1:~# ifup mgre0

root@Spoke1-n1:~# ifup mgre1

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

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

mgre0: gre/ip  remote any  local any  ttl 64  tos inherit nopmtudisc key 1

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

mgre1: gre/ip remote any local any ttl 64 tos inherit nopmtudisc key 3

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

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

    link/gre 0.0.0.0 brd 0.0.0.0

    inet 10.10.10.1/24 brd 10.10.10.255 scope global mgre0

       valid_lft forever preferred_lft forever

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

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

    link/gre 0.0.0.0 brd 0.0.0.0

    inet 10.10.30.1/24 brd 10.10.30.255 scope global mgre1

       valid_lft forever preferred_lft forever

Настройки mGRE-интерфейсов приведены в приложении.

Настройка NHRP

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

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

Значение holding-time следует задавать в диапозоне от 30 до 150. Период отправки nhrp-пакетов равен трети от значения holding-time. При получении nhrp-пакета в log-файле создаются соответсвующие записи. При большом количестве криптомаршрутизаторов участвующих в DMVPN и малом значении holding-time, может произойти переполнение логов. При значении holding-time больше 150 время восстановления соединения между криптомаршрутизаторами может занимать больше минуты.

interface mgre0

 map 10.10.10.100/24 172.16.100.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

interface mgre1

 map 10.10.30.100/24 172.16.110.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

2.    Добавьте сервис 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

3.    Через некоторое время проверьте, что между Spoke1-n1 и шлюзами Hub1-dc1 и Hub1-dc2 поднялись IPsec туннели (если туннели не поднялись - проверьте настройки сети/IPsec/Firewall/NHRP, лог-файл /var/log/cspvpngate.log):

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 5 (100.100.1.2,4500)-(172.16.100.2,4500) active 3904 3664

2 6 (100.100.1.2,4500)-(172.16.110.2,4500) active 3904 3664

 

IPsec connections:

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

1 7 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 95136 140144

2 8 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 132920 120312

Настройки NHRP приведены в приложении.

Настройка BGP

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

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

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

root@Spoke1-n1:~# vtysh

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke1-n1#

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

Spoke1-n1# conf t

Spoke1-n1(config)# router bgp 65001

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

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

Spoke1-n1(config-router)# bgp network import-check

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

Spoke1-n1(config-router)# neighbor 10.10.10.100 remote-as 65001

Spoke1-n1(config-router)# neighbor 10.10.10.100 timers connect 30

Spoke1-n1(config-router)# neighbor 10.10.30.100 remote-as 65001

Spoke1-n1(config-router)# neighbor 10.10.30.100 timers connect 30

Spoke1-n1(config-router)# neighbor 100.101.2.2 remote-as 65002

Spoke1-n1(config-router)# neighbor 100.101.2.2 timers connect 30

По умолчанию, время, через которое будет совершена повторная попытка построения BGP соседства составляет две минуты. Чтобы уменьшить данное время до 30 секунд используется команда «neighbor 10.10.10.100 timers  connect 30».

Spoke1-n1(config-router)# address-family ipv4 unicast

Spoke1-n1(config-router-af)# network 192.168.1.0/24

Spoke1-n1(config-router-af)# neighbor 10.10.10.100 route-map FROM-HUB1-DC1-IN in

Spoke1-n1(config-router-af)# neighbor 10.10.30.100 route-map FROM-HUB1-DC2-IN in

Spoke1-n1(config-router-af)# neighbor 100.101.2.2 route-map FROM-SPOKE2-IN in

Spoke1-n1(config-router-af)# exit-address-family

Spoke1-n1(config-router)# route-map FROM-HUB1-DC1-IN permit 1

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

Spoke1-n1(config-route-map)# route-map FROM-HUB1-DC2-IN permit 1

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

Spoke1-n1(config-route-map)# route-map FROM-SPOKE2-IN permit 1

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

Spoke1-n1(config-route-map)# end

Spoke1-n1# 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]

Настройки BGP приведены в приложении.

Настройка VRRP

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

1.    Выполните следующие команды в cisco-like консоли:

Spoke1-n1#configure terminal

Spoke1-n1(config)#interface GigabitEthernet0/0

Spoke1-n1(config-if)# vrrp 1 ip 192.168.1.1 255.255.255.0

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

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

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

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

Spoke1-n1(config-if)#exit

Spoke1-n1(config)#end

Spoke1-n1

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

Spoke1-n1#show vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Master

Spoke1-n1#exit

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

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

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

    link/ether 00:50:56:9e:8e:67 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

       valid_lft forever preferred_lft forever

    inet 192.168.1.1/24 scope global secondary eth1:900

       valid_lft forever preferred_lft forever

Настройки VRRP приведены в приложении.

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

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

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

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

Значение priority в VRRP у резервной ноды должно быть меньше, чем у основной ноды. Также отличаются настройки local-preference в настройках FRR.

В приложении представлены соответствующие конфигурационные файлы.

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

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

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

В приложении представлены соответствующие конфигурационные файлы.

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

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

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

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

Значение priority в VRRP у резервной ноды должно быть меньше, чем у основной ноды. Также отличаются настройки local-preference в настройках FRR.

В приложении представлены соответствующие конфигурационные файлы.


 

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

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

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

2.    Проблема на основном шлюзе в ЦОД1: отказ центрального шлюза, отказ внешнего сетевого интерфейса, отказ связи между шлюзами в ЦОД1.

3.    Проблема связи между ЦОДами (отказ inter data center link).

4.    Проблема у основного провайдера ISP1.

5.    Проблема на основной ноде кластера в филиале: отказ основной ноды кластера, недоступность провайдера, недоступность сервиса opennhrp, отказ связи между шлюзами филиала.

6.    Проблемы на основном и резервном шлюзах ЦОД1: отказ шлюзов, отказ внешнего сетевого интерфейса, отказ связи между шлюзами.

7.    Проблемы на шлюзах в двух филиалах, подключенных к разным провайдерам.

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

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

root@hub1-dc1:~# 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 (100.100.100.2,4500)-(172.16.1.2,4500) active 8684 10604

2 27 (100.100.100.2,4500)-(172.16.2.2,4500) active 8684 10604

 

IPsec connections:

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

1 344 (100.100.100.2,*)-(172.16.2.2,*) * ESP nat-t-trans 86120 84160

2 345 (100.100.100.2,*)-(172.16.1.2,*) * ESP nat-t-trans 234408 232408

root@hub2-dc1:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

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

1 13 (100.100.200.2,4500)-(172.17.1.2,4500) active 8684 10604

2 14 (100.100.200.2,4500)-(172.17.2.2,4500) active 8684 10604

 

IPsec connections:

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

1 337 (100.100.200.2,*)-(172.17.2.2,*) * ESP nat-t-trans 74976 73256

2 338 (100.100.200.2,*)-(172.17.1.2,*) * ESP nat-t-trans 74672 72952

root@hub1-dc2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

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

1 21 (100.100.110.2,4500)-(172.16.1.2,4500) active 2204 1964

2 22 (100.100.110.2,4500)-(172.16.2.2,4500) active 2204 1964

 

IPsec connections:

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

1 389 (100.100.110.2,*)-(172.16.1.2,*) * ESP nat-t-trans 18248 28640

2 390 (100.100.110.2,*)-(172.16.2.2,*) * ESP nat-t-trans 29320 28640

root@hub2-dc2:~# sa_mgr show

ISAKMP sessions: 0 initiated, 0 responded

 

ISAKMP connections:

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

1 25 (100.100.210.2,4500)-(172.17.2.2,4500) active 9020 11024

2 26 (100.100.210.2,4500)-(172.17.1.2,4500) active 2636 3044

 

IPsec connections:

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

1 444 (100.100.210.2,*)-(172.17.1.2,*) * ESP nat-t-trans 23608 23024

2 445 (100.100.210.2,*)-(172.17.2.2,*) * ESP nat-t-trans 2088 2520

Видно, что на каждом шлюзе в ЦОДах установлено по два IPsec-туннеля со шлюзами в филиалах, подключенных к тому же провайдеру, например, на Hub1-dc1 установлены два IPsec‑туннеля со шлюзами Spoke1-n1 и Spoke2-n1 (IP-адреса 172.16.1.2 и 172.17.2.2), подключенными к провайдеру ISP1. Строка «ESP nat-t-trans» свидетельствует о том, что IPsec-туннель работает в транспортном режиме через NAT.

2.    Убедитесь, что на шлюзах ЦОДов протокол NHRP верно отображает информацию о филиальных шлюзах, для этого в linux bash выполните следующие команды:

root@hub1-dc1:~# opennhrpctl show

Status: ok

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.10.255/32

Alias-Address: 10.10.10.100

Flags: up

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.10.100/32

Flags: up

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.10.1/32

NBMA-Address: 172.16.1.2

NBMA-NAT-OA-Address: 100.100.1.2

Flags: up

Expires-In: 1:21

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.10.2/32

NBMA-Address: 172.16.2.2

NBMA-NAT-OA-Address: 100.102.1.2

Flags: up

Expires-In: 1:10

 

root@hub2-dc1:~# opennhrpctl show

Status: ok

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.20.255/32

Alias-Address: 10.10.20.200

Flags: up

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.20.200/32

Flags: up

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.20.2/32

NBMA-Address: 172.17.2.2

NBMA-NAT-OA-Address: 100.103.1.2

Flags: up

Expires-In: 1:01

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.20.1/32

NBMA-Address: 172.17.1.2

NBMA-NAT-OA-Address: 100.101.1.2

Flags: up

Expires-In: 1:01

root@hub1-dc2:~# opennhrpctl show

Status: ok

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.30.255/32

Alias-Address: 10.10.30.100

Flags: up

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.30.100/32

Flags: up

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.30.2/32

NBMA-Address: 172.16.2.2

NBMA-NAT-OA-Address: 100.102.1.2

Flags: up

Expires-In: 1:18

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.30.1/32

NBMA-Address: 172.16.1.2

NBMA-NAT-OA-Address: 100.100.1.2

Flags: up

Expires-In: 0:59

root@hub2-dc2:~# opennhrpctl show

Status: ok

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.40.255/32

Alias-Address: 10.10.40.200

Flags: up

 

Interface: mgre0

Type: local

Protocol-Address: 10.10.40.200/32

Flags: up

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.40.2/32

NBMA-Address: 172.17.2.2

NBMA-NAT-OA-Address: 100.103.1.2

Flags: up

Expires-In: 1:28

 

Interface: mgre0

Type: dynamic

Protocol-Address: 10.10.40.1/32

NBMA-Address: 172.17.1.2

NBMA-NAT-OA-Address: 100.101.1.2

Flags: up

Expires-In: 1:28

Видно, что на каждом шлюзе в ЦОДах протокол NHRP корректно отображает информацию о филиальных шлюзах (записи с пометкой «Type: dynamic»), а именно mGRE-адрес (Protocol-Address) соответствует NBMA IP-адресу (NBMA-Address). Также правильно отображается информация об исходном IP-адресе до выполнения процедуры трансляции (NBMA-NAT-OA-Address) для тех шлюзов, которые находятся за устройствами, выполняющими функции NAT.

3.    Убедитесь, что на шлюзах в ЦОДах подсистема ip neighbor ядра ОС Linux корректно отображает информацию о маппинге mGRE-адреса в NBMA-адрес филиальных шлюзов, для этого в linux bash выполните следующую команду:

root@hub1-dc1:~# ip neighbor show

10.10.10.2 dev mgre0 lladdr 172.16.2.2 REACHABLE

100.100.150.2 dev eth2 lladdr 00:50:56:9e:44:dd REACHABLE

100.100.100.1 dev eth0 lladdr 00:50:56:9e:54:cb REACHABLE

192.168.250.1 dev eth1 lladdr 00:50:56:9e:5a:bc REACHABLE

10.10.10.1 dev mgre0 lladdr 172.16.1.2 REACHABLE

 

root@hub2-dc1:~# ip neighbor show

10.10.20.1 dev mgre0 lladdr 172.17.1.2 REACHABLE

10.10.20.2 dev mgre0 lladdr 172.17.2.2 REACHABLE

100.100.150.1 dev eth2 lladdr 00:50:56:9e:98:91 REACHABLE

192.168.250.1 dev eth1 lladdr 00:50:56:9e:5a:bc REACHABLE

root@hub1-dc2:~# ip neighbor show

100.100.160.2 dev eth2 lladdr 00:50:56:9e:a9:27 REACHABLE

10.10.30.2 dev mgre0 lladdr 172.16.2.2 REACHABLE

192.168.255.1 dev eth1 lladdr 00:50:56:9e:af:4b REACHABLE

10.10.30.1 dev mgre0 lladdr 172.16.1.2 REACHABLE

root@hub2-dc2:~# ip neighbor show

10.10.40.1 dev mgre0 lladdr 172.17.1.2 REACHABLE

10.0.37.1 dev eth3 lladdr 70:85:c2:a4:1b:5c DELAY

100.100.160.1 dev eth2 lladdr 00:50:56:9e:d5:d5 REACHABLE

100.100.210.1 dev eth0 lladdr 00:50:56:9e:74:fb DELAY

192.168.255.1 dev eth1 lladdr 00:50:56:9e:af:4b REACHABLE

10.10.40.2 dev mgre0 lladdr172.17.2.2 REACHABLE

Видно, что на каждом центральном шлюзе маппинг mGRE-адреса в NBMA-адрес филиальных шлюзов выполнен верно.

4.    Убедитесь, что на шлюзах в ЦОДах корректно работает протокол BGP, для этого зайдите в linux bash выполните следующие команды:

root@hub1-dc1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

hub1-dc1# show ip bgp summary

 

IPv4 Unicast Summary:

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

BGP table version 35

RIB entries 7, using 1288 bytes of memory

Peers 4, using 82 KiB of memory

Peer groups 1, using 64 bytes of memory

 

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

*10.10.10.1     4      65001  200205  200215        0    0    0 6d22h50m         1

*10.10.10.2     4      65001  200216  200226        0    0    0 6d22h51m         1

100.100.150.2   4      65002  203357  203367        0    0    0 6d22h47m         4

192.168.250.1   4      65003  203391  203386        0    0    0 6d23h43m         2

 

Total number of neighbors 4

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

hub1-dc1# show ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.10.1, mgre0, 6d22h50m

B>* 192.168.2.0/24 [200/0] via 10.10.10.2, mgre0, 6d22h51m

B>* 192.168.200.0/24 [20/0] via 192.168.250.1, eth1, 6d23h43m

B>* 192.168.210.0/24 [20/0] via 192.168.250.1, eth1, 20:36:16

root@hub2-dc1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

hub2-dc1# show ip bgp summary

 

IPv4 Unicast Summary:

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

BGP table version 14

RIB entries 7, using 1288 bytes of memory

Peers 4, using 82 KiB of memory

Peer groups 1, using 64 bytes of memory

 

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

*10.10.20.1     4      65002  200252  200256        0    0    0 6d22h52m         4

*10.10.20.2     4      65002  200253  200256        0    0    0 6d22h52m         4

100.100.150.1   4      65001  200259  200262        0    0    0 6d22h53m         4

192.168.250.1   4      65003  200258  200262        0    0    0 6d22h53m         4

 

Total number of neighbors 4

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

hub2-dc1# show ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.20.1, mgre0, 6d22h52m

B>* 192.168.2.0/24 [200/0] via 10.10.20.2, mgre0, 6d22h52m

B>* 192.168.200.0/24 [20/0] via 192.168.250.1, eth1, 6d22h53m

B>* 192.168.210.0/24 [20/0] via 192.168.250.1, eth1, 20:42:07

root@hub1-dc2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

hub1-dc2# show ip bgp summary

 

IPv4 Unicast Summary:

BGP router identifier 10.10.30.100, local AS number 65001 vrf-id 0

BGP table version 76

RIB entries 7, using 1288 bytes of memory

Peers 4, using 82 KiB of memory

Peer groups 1, using 64 bytes of memory

 

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

*10.10.30.1     4      65001  204452  204476        0    0    0 01w0d02h         1

*10.10.30.2     4      65001  204451  204476        0    0    0 01w0d02h         1

100.100.160.2   4      65002  227884  227887        0    0    0 01w0d21h         4

192.168.255.1   4      65003  227631  227606        0    0    0 6d23h48m         2

 

Total number of neighbors 4

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

hub1-dc2# show ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.30.1, mgre0, 01w0d02h

B>* 192.168.2.0/24 [200/0] via 10.10.30.2, mgre0, 01w0d02h

B>* 192.168.200.0/24 [20/0] via 192.168.255.1, eth1, 20:42:20

B>* 192.168.210.0/24 [20/0] via 192.168.255.1, eth1, 6d23h48m

root@hub2-dc2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

hub2-dc2# show ip bgp summary

 

IPv4 Unicast Summary:

BGP router identifier 10.10.40.200, local AS number 65002 vrf-id 0

BGP table version 79

RIB entries 7, using 1288 bytes of memory

Peers 4, using 82 KiB of memory

Peer groups 1, using 64 bytes of memory

 

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

*10.10.40.1     4      65002  206328  206336        0    0    0 01w0d03h         4

*10.10.40.2     4      65002  205930  205936        0    0    0 01w0d03h         4

100.100.160.1   4      65001  259789  259797        0    0    0 01w0d21h         4

192.168.255.1   4      65003  259991  259967        0    0    0 6d23h48m         4

 

Total number of neighbors 4

* - dynamic neighbor

2 dynamic neighbor(s), limit 5000

hub2-dc2# show ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.40.1, mgre0, 01w0d03h

B>* 192.168.2.0/24 [200/0] via 10.10.40.2, mgre0, 01w0d03h

B>* 192.168.200.0/24 [20/0] via 192.168.255.1, eth1, 20:42:28

B>* 192.168.210.0/24 [20/0] via 192.168.255.1, eth1, 6d23h48m

Видно, что на каждом шлюзе в ЦОДах по протоколу BGP установлено соседство с соответствующими шлюзами в филиалах №1 и №2, смежным шлюзом в ЦОДе и внутренним роутером Int_router1_Hub_dcX, где X - номер ЦОДа.

Маршруты до филиальных подсетей (192.168.1.0/24 и 192.168.2.0/24) и защищаемых подсетей ЦОДов (192.168.200.0/24 и 192.168.210.0/24) в таблице маршрутизации присутствуют.

5.    Убедитесь, что основные ноды кластеров в филиалах №1 и №2 находится в состоянии MASTER, для этого в linux bash выполните следующие команды:

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

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

    link/ether 00:50:56:9e:8e:67 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

       valid_lft forever preferred_lft forever

    inet 192.168.1.1/24 scope global secondary eth1:900

       valid_lft forever preferred_lft forever

 

root@Spoke1-n1:~# tcpdump -i eth1 -n -c 4 vrrp

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

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

13:52:04.922858 IP 192.168.1.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:52:07.923014 IP 192.168.1.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:52:10.923433 IP 192.168.1.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:52:13.923671 IP 192.168.1.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

4 packets captured

4 packets received by filter

0 packets dropped by kernel

root@Spoke2-n1:~# ip address show dev eth1

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

    link/ether 00:50:56:9e:95:a7 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.10/24 brd 192.168.2.255 scope global eth1

       valid_lft forever preferred_lft forever

    inet 192.168.2.1/24 scope global secondary eth1:900

       valid_lft forever preferred_lft forever

 

root@Spoke2-n1:~# tcpdump -i eth1 -n -c 4 vrrp

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

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

13:56:47.485838 IP 192.168.2.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:56:50.486210 IP 192.168.2.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:56:53.486345 IP 192.168.2.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

13:56:56.486553 IP 192.168.2.10 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype none, intvl 3s, length 20

4 packets captured

4 packets received by filter

0 packets dropped by kernel

Видно, что на внутреннем интерфейсе eth1 имеется VIP-адрес 192.168.1.1 у Spoke1-n1 и 192.168.2.1 у Spoke2-n1, а также с данного интерфейса (с IP-адреса 192.168.1.10 у Spoke1-n1 и 192.168.2.10 у Spoke2-n1) отсылаются VRRP пакеты.

Также в cisco-like консоли шлюза можно увидеть состояние VRRP:

Spoke1-n1#sh vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Master

 

Spoke2-n1#sh vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Master

 

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

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

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=3.77 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.86 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=1.72 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=1.74 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.720/2.274/3.775/0.868 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 1 (100.100.1.2,4500)-(172.16.100.2,4500) active 1764 1692

2 2 (100.100.1.2,4500)-(172.16.110.2,4500) active 1764 1692

3 3 (100.100.1.2,4500)-(172.16.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 1 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 67576 112576

2 2 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 300440 270080

3 3 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 288 288

Видно, что пакеты успешно дошли от host_behind_spoke1 до host_behind_spoke2, а также построился IPsec‑туннель между основной нодой кластера в филиале №1 и основной нодой кластера в филиале №2.

Проблема на основном шлюзе в ЦОД1

Смоделируем два вида отказов на основном шлюзе в ЦОД1: внешнего сетевого интерфейса eth0 на основном шлюзе Hub1 ЦОД1 и отказ связи между Hub1‑dc1 и Hub2‑dc1. Для каждого из этих случаев проверим работоспособность стенда.

1.    Отказ внешнего сетевого интерфейса основного шлюза ЦОД1 Hub1-dc1.

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

root@hub1-dc1:~# ip link set dev eth0 down

1.2.      Подождите некоторое время и убедитесь в том, что на основных нодах кластера в филиалах №1 и №2 IPsec-туннель с Hub1‑dc1 отсутствует и маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre1, для этого в 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 2 (100.100.1.2,4500)-(172.16.110.2,4500) active 2184 2028

2 3 (100.100.1.2,4500)-(172.16.2.2,4500) active 2184 2028

3 6 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

1 5 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 111768 122160

2 6 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 0 0

 

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.30.2, mgre1, 00:04:25

B>* 192.168.200.0/24 [200/0] via 10.10.30.100, mgre1, 00:04:25

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:04:25

root@Spoke2-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 4 (100.102.1.2,4500)-(172.16.110.2,4500) active 2184 2028

2 5 (100.102.1.2,4500)-(172.16.1.2,4500) active 2028 2184

3 12 (100.102.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

1 6 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 190488 156480

2 8 (100.102.1.2,*)-(172.16.1.2,*) * ESP nat-t-trans 0 0

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n1# sh ip route bgp

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.30.1, mgre1, 00:08:46

B>* 192.168.200.0/24 [200/0] via 10.10.30.100, mgre1, 00:08:46

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:08:46

1.3.      Убедитесь, что трафик между защищаемым подсетями филиала №1 и подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc1 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

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

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=5.43 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=2.60 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.18 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.45 ms

 

--- 192.168.2.100 ping statistics ---

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

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 2 (100.100.1.2,4500)-(172.16.110.2,4500) active 2604 2364

2 3 (100.100.1.2,4500)-(172.16.2.2,4500) active 2184 2028

3 23 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

1 6 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 576 576

2 7 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 4544 4696

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

root@hub1-dc1:~# ip link set dev eth0 up

1.6.      Подождите некоторое время и убедитесь в том, что на основной ноде кластера в филиале №1 и на основной ноде кластера в филиале №2 IPsec‑туннель с Hub1‑dc1 создан и маршруты в защищаемые подсети вновь доступны через mGRE-интерфейс mgre0, для этого в 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 2 (100.100.1.2,4500)-(172.16.110.2,4500) active 2604 2364

2 3 (100.100.1.2,4500)-(172.16.2.2,4500) active 2184 2028

3 26 (100.100.1.2,4500)-(172.16.100.2,4500) active 2064 1992

 

IPsec connections:

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

1 6 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 576 576

2 7 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 39896 33016

3 8 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 18464 24640

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.10.2, mgre0, 00:07:47

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 00:07:59

B>* 192.168.210.0/24 [200/0] via 10.10.10.100, mgre0, 00:07:59

root@Spoke2-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 4 (100.102.1.2,4500)-(172.16.110.2,4500) active 2604 2364

2 5 (100.102.1.2,4500)-(172.16.1.2,4500) active 2028 2184

3 28 (100.102.1.2,4500)-(172.16.100.2,4500) active 2464 2392

 

IPsec connections:

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

1 8 (100.102.1.2,*)-(172.16.1.2,*) * ESP nat-t-trans 576 576

2 9 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 89360 69400

3 10 (100.102.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 24736 33952

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.10.1, mgre0, 00:09:39

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 00:09:39

B>* 192.168.210.0/24 [200/0] via 10.10.10.100, mgre0, 00:09:39

Видно, что в случае отказа внешнего сетевого интерфейса eth0 основного шлюза Hub1-dc1 в ЦОД1 динамическое построение защищенных соединений продолжает функционировать, защищаемые подсети ЦОДов доступны с филиальных шлюзов.

При восстановлении внешнего сетевого интерфейса eth0 все также корректно отрабатывает. Проверку с полным отключением Hub1‑dc1 повторите по аналогии.

2.    Отказ связи между шлюзами ЦОД1 - Hub1-dc1 и Hub2-dc1.

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

root@hub1-dc1:~# ip link set dev eth2 down

Выполненная команда приводит к отключению связи между Hub1‑dc1 и Hub2‑dc1 через подсеть 100.100.150.0/24, используемая для обмена между шлюзами по eBGP. Связь шлюзов с Int_switch1_Hub_dc1 сохраняется.

2.2.      Подождите некоторое время и убедитесь в том, что на основных нодах кластера в филиалах №1 и №2 IPsec-туннель с Hub1‑dc1 присутствует и маршруты в защищаемые подсети доступны через mGRE-интерфейс mgre0, для этого в 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 30 (100.100.1.2,4500)-(172.16.100.2,4500) active 2028 2100

2 31 (100.100.1.2,4500)-(172.16.110.2,4500) active 2028 2100

 

IPsec connections:

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

1 17 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 240 152

2 18 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 240 152

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.10.2, mgre0, 01:03:46

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 01:03:58

B>* 192.168.210.0/24 [200/0] via 10.10.10.100, mgre0, 01:03:58

root@Spoke2-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 4 (100.102.1.2,4500)-(172.16.110.2,4500) active 3024 2700

2 29 (100.102.1.2,4500)-(172.16.100.2,4500) active 2100 2028

 

IPsec connections:

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

1 12 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 45400 75896

2 13 (100.102.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 21136 33288

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.10.1, mgre0, 01:06:41

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 01:06:41

B>* 192.168.210.0/24 [200/0] via 10.10.10.100, mgre0, 01:06:41

2.3.      Убедитесь, что трафик между защищаемым подсетями филиала №1 и подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc1 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

2.4.      Убедитесь, что трафик между защищаемым подсетями филиала №1 и подсетями ЦОД1 и ЦОД2 проходит через Hub1‑dc1, для этого запустите traceroute с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc1 и проверьте маршрут прохождения пакетов:

root@host_behind_spoke1:~# traceroute 192.168.200.100

traceroute to 192.168.200.100 (192.168.200.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.300 ms  0.301 ms  0.298 ms

 2  10.10.10.100 (10.10.10.100)  2.097 ms  2.201 ms  2.229 ms

 3  192.168.250.1 (192.168.250.1)  2.240 ms  2.269 ms  2.298 ms

 4  192.168.200.100 (192.168.200.100)  2.413 ms  2.427 ms  2.453 ms

root@host_behind_spoke1:~# traceroute 192.168.210.100

traceroute to 192.168.210.100 (192.168.210.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.199 ms  0.180 ms  0.167 ms

 2  10.10.10.100 (10.10.10.100)  1.595 ms  1.640 ms  1.659 ms

 3  192.168.250.1 (192.168.250.1)  1.720 ms  1.710 ms  1.661 ms

 4  192.168.252.2 (192.168.252.2)  1.894 ms  1.976 ms  2.401 ms

 5  192.168.210.100 (192.168.210.100)  2.382 ms  2.375 ms  2.397 ms

Видно, что маршрут пакетов из подсети филиала №1 в защищаемые подсети ЦОД1 и ЦОД2 проходит через Hub1‑dc1 (IP-адес mgre интерфейса 10.10.10.100), как и в исходном состоянии, несмотря на отключение связи между Hub1‑dc1 и Hub2‑dc1.

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

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

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=3.77 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.86 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=1.72 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=1.74 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.720/2.274/3.775/0.868 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 1 (100.100.1.2,4500)-(172.16.100.2,4500) active 1764 1692

2 2 (100.100.1.2,4500)-(172.16.110.2,4500) active 1764 1692

3 3 (100.100.1.2,4500)-(172.16.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 1 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 67576 112576

2 2 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 300440 270080

3 3 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 288 288

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

2.6.      Переведите внешний сетевой интерфейс eth2 на основном центральном шлюзе Hub1‑dc1 в состояние UP, для этого в linux bash выполните следующую команду:

root@hub1-dc1:~# ip link set dev eth2 up

2.7.      Через некоторое время убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны.

Проблема связи между ЦОДами

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

root@Int_router1_Hub_dc1:~# ip link set dev ens224 down

2.    Убедитесь, что связь между ЦОД1 и ЦОД2 отсутствует после отключения связи inter data center link (ens224 на предыдущем шаге). Для проверки выполните в linux bash следующие команды:

root@host_behind_hub_dc1:~# ping 192.168.210.100 -c4

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

From 192.168.200.1 icmp_seq=1 Destination Net Unreachable

From 192.168.200.1 icmp_seq=2 Destination Net Unreachable

From 192.168.200.1 icmp_seq=3 Destination Net Unreachable

From 192.168.200.1 icmp_seq=4 Destination Net Unreachable

 

--- 192.168.210.100 ping statistics ---

4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3036ms

 

3.    Подождите некоторое время и убедитесь в том, что на основных нодах кластеров в филиалах №1 и №2 IPsec-туннели с Hub1‑dc1 и Hub1‑dc2 по-прежнему присутствуют, но защищаемые подсети ЦОД1 и ЦОД2 доступны через разные mGRE-интерфейсы, подключенные к Hub1‑dc1 и Hub1‑dc2, - 192.168.200.0/24 через Hub1‑dc1 (mgre0), а 192.168.210.0/24 через Hub1‑dc2 (mgre1). При этом до отключения связи между ЦОДами обе защищаемые подсети 192.168.200.0/24 и 192.168.210.0/24 были доступны через Hub1‑dc1, подключенный через mgre0. Для проверки выполните в 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 34 (100.100.1.2,4500)-(172.16.110.2,4500) active 8852 7412

2 35 (100.100.1.2,4500)-(172.16.100.2,4500) active 8852 7412

3 36 (100.100.1.2,4500)-(172.16.2.2,4500) active 2184 2028

 

IPsec connections:

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

1 152 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 91512 93704

2 153 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 91576 93832

3 154 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 0 0

 

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.10.2, mgre0, 2d18h28m

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 2d18h28m

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:12:38

root@Spoke2-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 32 (100.102.1.2,4500)-(172.16.110.2,4500) active 10604 8684

2 33 (100.102.1.2,4500)-(172.16.100.2,4500) active 7748 9272

3 34 (100.102.1.2,4500)-(172.16.1.2,4500) active 2028 2184

 

IPsec connections:

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

1 148 (100.102.1.2,*)-(172.16.1.2,*) * ESP nat-t-trans 0 0

2 149 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 96976 99256

3 150 (100.102.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 55880 57176

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.10.1, mgre0, 2d18h59m

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 2d18h59m

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:43:26

4.    Убедитесь, что трафик между защищаемым подсетями филиала №1 и защищаемыми подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc2 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

5.    Убедитесь, что трафик между защищаемой подсетью филиала №1 и защищаемой подсетью ЦОД1 проходит через Hub1‑dc1, а трафик между защищаемой подсетью филиала №1 и защищаемой подсетью ЦОД2 проходит через Hub1‑dc2. Для этого запустите traceroute с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc2 и проверьте маршрут прохождения пакетов:

root@host_behind_spoke1:~# traceroute 192.168.200.100

traceroute to 192.168.200.100 (192.168.200.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.300 ms  0.301 ms  0.298 ms

 2  10.10.10.100 (10.10.10.100)  2.097 ms  2.201 ms  2.229 ms

 3  192.168.250.1 (192.168.250.1)  2.240 ms  2.269 ms  2.298 ms

 4  192.168.200.100 (192.168.200.100)  2.413 ms  2.427 ms  2.453 ms

root@host_behind_spoke1:~# traceroute 192.168.210.100

traceroute to 192.168.210.100 (192.168.210.100), 30 hops max, 60 byte packets

traceroute to 192.168.210.100 (192.168.210.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.224 ms  0.207 ms  0.204 ms

 2  10.10.30.100 (10.10.30.100)  1.979 ms  1.999 ms  1.991 ms

 3  192.168.255.1 (192.168.255.1)  1.989 ms  1.982 ms  1.980 ms

 4  192.168.210.100 (192.168.210.100)  2.003 ms  2.010 ms *

Видно, что маршрут пакетов из подсети филиала №1 в защищаемую подсеть ЦОД1 проходит через Hub1‑dc1, а в защищаемую подсеть ЦОД2 проходит через Hub1‑dc2.

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=5.03 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=689 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.45 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.38 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.387/174.897/689.719/297.234 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 34 (100.100.1.2,4500)-(172.16.110.2,4500) active 9272 7748

2 35 (100.100.1.2,4500)-(172.16.100.2,4500) active 9272 7748

3 36 (100.100.1.2,4500)-(172.16.2.2,4500) active 2520 2364

 

IPsec connections:

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

1 155 (100.100.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 112728 115400

2 156 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 112256 114920

3 157 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 288 288

7.    Переведите сетевой интерфейс ens224 на внутреннем маршрутизаторе ЦОД1 Int_router1_Hub_dc1 в состояние UP, для этого в linux bash выполните следующую команду:

root@Int_router1_Hub_dc1:~# ip link set dev ens224 up

8.    Через некоторое время убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны.

Проблема у основного провайдера ISP1

1.    Смоделируем полный отказ основного провайдера ISP1 и проверим работоспособность стенда. Для этого в linux bash устройства Core_router_ISP1 выполните следующую команду:

root@Core_router_ISP1:~# poweroff

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

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 36 (100.100.1.2,4500)-(172.16.2.2,4500) active 2520 2364

2 47 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

3 48 (100.100.1.2,500)-(172.16.110.2,500) incompleted 376 0

 

IPsec connections:

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

1 157 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 288 288

 

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [20/0] via 100.101.2.2, eth2, 00:07:13

B>* 192.168.200.0/24 [20/0] via 100.101.2.2, eth2, 00:07:13

B>* 192.168.210.0/24 [20/0] via 100.101.2.2, eth2, 00:07:13

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 5 (100.101.1.2,4500)-(172.17.200.2,4500) active 11444 9356

2 6 (100.101.1.2,4500)-(172.17.210.2,4500) active 11444 9356

3 7 (100.101.1.2,4500)-(172.17.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 145 (100.101.1.2,*)-(172.17.2.2,*) * ESP nat-t-trans 288 288

2 146 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 41152 42152

3 147 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 35264 38632

root@Spoke1-n2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke1-n2# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [20/0] via 10.10.20.2, mgre0, 00:05:35

B>* 192.168.200.0/24 [200/0] via 10.10.20.200, mgre0, 01:07:15

B>* 192.168.210.0/24 [200/0] via 10.10.20.200, mgre0, 01:07:15

Видно, что на основной ноде кластера филиала №1 сохраняется IPsec‑туннель с основной нодой кластера филиала №2, который был построен ранее (это состояние временное и при отсутствии трафика этот туннель будет уничтожен), но все маршруты в защищаемые подсети ЦОД1, ЦОД2 и филиала №2 идут через смежную ноду кластера, которая подключена к оставшемуся исправному провайдеру ISP2. При этом на смежной ноде кластера присутствуют IPsec‑туннели с Hub2‑dc1 и Hub2‑dc2 и IPsec‑туннель с резервной нодой кластера в филиале №2.

3.    Убедитесь, что трафик между защищаемым подсетями филиала №1 и подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc2 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

4.    Убедитесь, что трафик между защищаемой подсетью филиала №1 и защищаемыми подсетями ЦОД1 и ЦОД2 проходит через резервную ноду кластера, подключенную к доступному провайдеру ISP2. Для этого запустите traceroute с устройства host_behind_spoke1 на устройствa host_behind_hub_dc1 и host_behind_hub_dc2 и проверьте маршрут прохождения пакетов:

root@host_behind_spoke1:~# traceroute 192.168.200.100

traceroute to 192.168.200.100 (192.168.200.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.440 ms  0.404 ms  0.386 ms

 2  192.168.1.20 (192.168.1.20)  2.526 ms  0.412 ms  0.454 ms

 3  10.10.20.200 (10.10.20.200)  2.530 ms  2.549 ms  2.500 ms

 4  192.168.252.1 (192.168.252.1)  2.949 ms  2.932 ms  2.921 ms

 5  192.168.200.100 (192.168.200.100)  2.900 ms  3.015 ms  2.993 ms

root@host_behind_spoke1:~# traceroute 192.168.210.100

traceroute to 192.168.210.100 (192.168.210.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.192 ms  0.153 ms  0.127 ms

 2  192.168.1.20 (192.168.1.20)  0.300 ms  0.310 ms  0.327 ms

 3  10.10.20.200 (10.10.20.200)  1.819 ms  1.824 ms  1.806 ms

 4  192.168.252.1 (192.168.252.1)  2.788 ms  3.132 ms  3.141 ms

 5  192.168.255.1 (192.168.255.1)  3.150 ms  3.161 ms  3.176 ms

 6  192.168.210.100 (192.168.210.100)  3.168 ms  1.711 ms  1.727 ms

Видно, что маршрут пакетов из подсети филиала №1 в защищаемые подсети ЦОД1 и ЦОД2 проходит через основную ноду кластера в филиале (192.168.1.10) и затем через смежную ноду кластера (192.168.1.20) и Hub2‑dc1.

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=5.03 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=689 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.45 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.38 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.387/174.897/689.719/297.234 ms

root@Spoke2-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 5 (100.101.1.2,4500)-(172.17.200.2,4500) active 11444 9356

2 6 (100.101.1.2,4500)-(172.17.210.2,4500) active 11444 9356

3 7 (100.101.1.2,4500)-(172.17.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 145 (100.101.1.2,*)-(172.17.2.2,*) * ESP nat-t-trans 288 288

2 146 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 41152 42152

3 147 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 35264 38632

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 176 (100.100.1.2,500)-(172.16.110.2,500) incompleted 376 0

2 177 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

root@host_behind_spoke1:~# traceroute 192.168.2.100

traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.289 ms  0.400 ms  0.394 ms

 2  192.168.1.20 (192.168.1.20)  0.494 ms  0.507 ms  0.513 ms

 3  10.10.20.2 (10.10.20.2)  2.232 ms  2.242 ms  2.231 ms

 4  192.168.2.100 (192.168.2.100)  2.290 ms * *

Видно, что на резервной ноде кластера в филиале №1 построен IPsec‑туннель с резервной нодой кластера в филиале №2, на основной ноде кластера в филиале №1 IPsec‑туннели отсутствуют, а маршрут пакетов из подсети филиала №1 в защищаемую подсеть филиала №2 проходит через резервные ноды кластеров в филиалах №1 и №2.

6.    Включите устройство Core_router_ISP1.

7.    Через некоторое время убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны.

Проблема на основной ноде кластера в филиале

Смоделируем полный отказ основной ноды кластера в филиале №1.

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

root@Spoke1-n1:~# poweroff

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

root@Spoke1-n2:~# ip address show dev eth1

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

    link/ether 00:50:56:9e:15:75 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.20/24 brd 192.168.1.255 scope global eth1

       valid_lft forever preferred_lft forever

    inet 192.168.1.1/24 scope global secondary eth1:900

       valid_lft forever preferred_lft forever

Spoke1-n2#sh vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Master

Видно, что кластерный VIP-адрес (192.168.1.1) присутствует на внутреннем интерфейсе eth1 и VRRP находится в состоянии MASTER.

3.    Убедитесь, что на резервной ноде по протоколу BGP установлено соседство со шлюзами в ЦОД1 и ЦОД2 и получены маршруты в защищаемые подсети, для этого в linux bash выполните следующие команды:

root@Spoke1-n2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n2# sh ip bgp summary

 

IPv4 Unicast Summary:

BGP router identifier 192.168.1.20, local AS number 65002 vrf-id 0

BGP table version 15

RIB entries 7, using 1288 bytes of memory

Peers 3, using 61 KiB of memory

 

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

10.10.20.200    4      65002   86144   86146        0    0    0 2d23h46m            3

10.10.40.200    4      65002   86145   86146        0    0    0 2d23h46m            3

 

Total number of neighbors 3

Spoke1-n2# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.20.2, mgre0, 00:06:58

B>* 192.168.200.0/24 [200/0] via 10.10.20.200, mgre0, 00:06:58

B>* 192.168.210.0/24 [200/0] via 10.10.20.200, mgre0, 00:06:58

4.    Убедитесь, что защищенное соединение между резервными нодами кластеров в филиалах №1 и №2 успешно строится, для этого запустите ping с устройства host_behind_spoke1 на устройство host_behind_spoke2 и проверьте наличие IPsec-туннеля на резервной ноде кластера в филиале №1:

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

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

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=1.96 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=455 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=0.792 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=0.784 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 0.784/114.653/455.074/196.542 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 8 (100.101.1.2,4500)-(172.17.200.2,4500) active 1764 1692

2 9 (100.101.1.2,4500)-(172.17.210.2,4500) active 2164 2092

3 10 (100.101.1.2,4500)-(172.17.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 151 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 35064 35832

2 152 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 0 32320

3 153 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 34808 0

4 154 (100.101.1.2,*)-(172.17.2.2,*) * ESP nat-t-trans 288 0

5.    Запустите основную ноду кластера, дождитесь ее полной загрузки и убедитесь, что она перешла в состояние BACKUP (основная нода не перехватит роль MASTER, так как в настройках VRRP стоит опция nopreempt), для этого проверьте отсутсвие VIP адреса на внутреннем интерфейсе, и состояние VRRP в cisco-like консоли шлюза:

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

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

    link/ether 00:50:56:9e:8e:67 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

       valid_lft forever preferred_lft forever

Spoke1-n1#sh vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Backup

Видно, что основная нода находится в состоянии BACKUP.

6.    Восстановите исходное состояние кластера переведя основную ноду филиала в состояние MASTER. Для этого в linux bash резервной ноды кластера выполните следующую команду:

root@Spoke1-n2:~# reboot

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

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

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

    link/ether 00:50:56:9e:8e:67 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

       valid_lft forever preferred_lft forever

    inet 192.168.1.1/24 scope global secondary eth1:900

       valid_lft forever preferred_lft forever

Spoke1-n1#sh vrrp

Interface                      VRID  State

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

GigabitEthernet0/1             1     Master

Видно, что кластерный VIP-адрес (192.168.1.1) присутствует на внутреннем интерфейсе eth1 и VRRP находится в состоянии MASTER.

Проблемы на основном и резервном шлюзах ЦОД1

1.    Смоделируем полный отказ всех шлюзов в ЦОД1 и проверим работоспособность стенда. Для этого в linux bash устройствах Hub1‑dc1 и Hub2‑dc1 выполните следующую команды:

root@Hub1-dc1:~# poweroff

root@Hub2-dc1:~# poweroff

2.    Подождите некоторое время и убедитесь в том, что на основных нодах кластеров в филиалах №1 и №2 IPsec-туннели с Hub1-dc1 отсутствуют, на резервных нодах кластеров в филиалах №1 и №2 IPsec-туннели с Hub2-dc1 отсутствуют, но маршруты в защищаемые подсети ЦОД1 и ЦОД2 доступны. Для этого в 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 4 (100.100.1.2,4500)-(172.16.110.2,4500) active 2100 2028

2 10 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

1 5 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 272 312

2 6 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 88216 66616

 

root@Spoke1-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.30.2, mgre1, 00:07:33

B>* 192.168.200.0/24 [200/0] via 10.10.30.100, mgre1, 00:07:33

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:07:33

root@Spoke2-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 227 (100.102.1.2,4500)-(172.16.110.2,4500) active 1764 1692

2 236 (100.102.1.2,500)-(172.16.100.2,500) incompleted 376 0

 

IPsec connections:

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

1 155 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 143144 169752

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.30.1, mgre1, 00:09:46

B>* 192.168.200.0/24 [200/0] via 10.10.30.100, mgre1, 00:09:46

B>* 192.168.210.0/24 [200/0] via 10.10.30.100, mgre1, 00:09:46

root@Spoke1-n2:~# sa_mgr show

ISAKMP sessions: 1 initiated, 0 responded

 

ISAKMP connections:

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

1 1 (100.101.1.2,4500)-(172.17.200.2,4500) disabled 8548 9588

2 3 (100.101.1.2,4500)-(172.17.210.2,4500) active 9324 7740

3 4 (100.101.1.2,500)-(172.17.200.2,500) incompleted 376 0

 

IPsec connections:

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

1 38 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 156624 160344

root@Spoke1-n2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke1-n2# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [20/0] via 100.101.2.1, eth2, 18:29:19

B>* 192.168.200.0/24 [20/0] via 100.101.2.1, eth2, 18:29:19

B>* 192.168.210.0/24 [20/0] via 100.101.2.1, eth2, 18:29:19

root@Spoke2-n2:~# sa_mgr show

ISAKMP sessions: 1 initiated, 0 responded

 

ISAKMP connections:

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

1 2 (100.103.1.2,4500)-(172.17.210.2,4500) active 11004 9084

2 6 (100.103.1.2,500)-(172.17.200.2,500) incompleted 376 0

 

IPsec connections:

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

1 48 (100.103.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 79208 81088

root@Spoke2-n2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

Spoke2-n2# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [20/0] via 100.103.2.1, eth2, 20:02:17

B>* 192.168.200.0/24 [20/0] via 100.103.2.1, eth2, 21:59:07

B>* 192.168.210.0/24 [20/0] via 100.103.2.1, eth2, 21:59:07

Видно, что на основных нодах кластеров отсутствуют IPsec-туннели с отключенным Hub1‑dc1, но присутствуют IPsec‑туннели с Hub1‑dc2. Также видно, что на резервных нодах кластеров отсутствуют IPsec-туннели с отключенным Hub2‑dc1, но присутствуют IPsec‑туннели с Hub2‑dc2. Все маршруты в защищаемые подсети ЦОД1, ЦОД2 и филиала №2 идут через идут через Hub1‑dc2 для основных нод кластеров и через основные ноды кластеров для резервных нод.

3.    Убедитесь, что трафик между защищаемым подсетями филиала №1 и подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройства host_behind_spoke1 на устройства host_behind_hub_dc1 и host_behind_hub_dc2 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

4.    Убедитесь, что трафик между защищаемой подсетью филиала №1 и защищаемыми подсетями ЦОД1 и ЦОД2 проходит через шлюз Hub1‑dc2. Для этого запустите traceroute с устройства host_behind_spoke1 на устройства host_behind_hub_dc1 и host_behind_hub_dc2 и проверьте маршрут прохождения пакетов:

root@host_behind_spoke1:~# traceroute 192.168.200.100

traceroute to 192.168.200.100 (192.168.200.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.186 ms  0.174 ms  0.158 ms

 2  10.10.30.100 (10.10.30.100)  1.694 ms  1.710 ms  1.698 ms

 3  192.168.255.1 (192.168.255.1)  1.710 ms  1.712 ms  1.733 ms

 4  192.168.252.1 (192.168.252.1)  1.888 ms  1.907 ms  1.910 ms

 5  192.168.200.100 (192.168.200.100)  1.931 ms * *

root@host_behind_spoke1:~# traceroute 192.168.210.100

traceroute to 192.168.210.100 (192.168.210.100), 30 hops max, 60 byte packets

 1  192.168.1.10 (192.168.1.10)  0.329 ms  0.320 ms  0.324 ms

 2  10.10.30.100 (10.10.30.100)  1.927 ms  1.958 ms  2.075 ms

 3  192.168.255.1 (192.168.255.1)  2.203 ms  2.172 ms  2.180 ms

 4  192.168.210.100 (192.168.210.100)  2.177 ms  2.186 ms *

Видно, что маршрут пакетов из подсети филиала №1 в защищаемые подсети ЦОД1 и ЦОД2 проходит через Hub2‑dc1 (10.10.30.100).

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

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=5.03 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=689 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.45 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.38 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.387/174.897/689.719/297.234 ms

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 4 (100.100.1.2,4500)-(172.16.110.2,4500) active 2436 2448

2 43 (100.100.1.2,500)-(172.16.100.2,500) incompleted 376 0

3 44 (100.100.1.2,4500)-(172.16.2.2,4500) active 1764 1692

 

IPsec connections:

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

1 7 (100.100.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 12048 12320

2 8 (100.100.1.2,*)-(172.16.2.2,*) * ESP nat-t-trans 288 288

 

Видно, что на основной ноде кластера в филиале №1 построен IPsec‑туннель с основной нодой кластера в филиале №2.

6.    Включите устройства Hub1‑dc1 и Hub2‑dc1.

7.    Через некоторое время (около 5 минут) убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны.

Проблемы на шлюзах двух филиалов, подключенных к разным провайдерам

Смоделируем одновременный полный отказ шлюзов в филиалах №1 и №2, подключенных к разным провайдерам, и проверим работоспособность стенда.

1.    Для моделирования отказов выполните в linux bash устройств Spoke1‑n1 и Spoke2‑n2 выполните следующие команды:

root@Spoke1-n1:~# poweroff

root@Spoke2-n2:~# poweroff

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

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 9 (100.101.1.2,4500)-(172.17.210.2,4500) active 2028 2100

2 10 (100.101.1.2,4500)-(172.17.200.2,4500) active 2028 2100

 

IPsec connections:

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

1 13 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 48440 60144

2 14 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 49656 62104

 

root@Spoke1-n2:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke1-n2# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.2.0/24 [200/0] via 10.10.20.200, mgre0, 00:26:36

B>* 192.168.200.0/24 [200/0] via 10.10.20.200, mgre0, 00:46:14

B>* 192.168.210.0/24 [200/0] via 10.10.20.200, mgre0, 00:46:14

root@Spoke2-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 227 (100.102.1.2,4500)-(172.16.110.2,4500) active 3024 2700

2 326 (100.102.1.2,4500)-(172.16.100.2,4500) active 2464 2392

 

IPsec connections:

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

1 162 (100.102.1.2,*)-(172.16.100.2,*) * ESP nat-t-trans 58752 93776

2 163 (100.102.1.2,*)-(172.16.110.2,*) * ESP nat-t-trans 49080 33984

 

root@Spoke2-n1:~# vtysh

 

Hello, this is FRRouting (version 7.3).

Copyright 1996-2005 Kunihiro Ishiguro, et al.

Spoke2-n1# sh ip route bgp

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

       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,

       F - PBR, f - OpenFabric,

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

 

B>* 192.168.1.0/24 [200/0] via 10.10.10.100, mgre0, 00:28:32

B>* 192.168.200.0/24 [200/0] via 10.10.10.100, mgre0, 00:28:32

B>* 192.168.210.0/24 [200/0] via 10.10.10.100, mgre0, 00:28:32

Видно, что на резервной ноде кластера в филиале №1 IPsec‑туннели с Hub2‑dc1 и Hub2‑dc2 присутствуют, на основной ноде кластера в филиале №2 IPsec‑туннели с Hub1‑dc1 и Hub1‑dc2 присутствуют, а маршруты в защищаемые подсети ЦОД1 и ЦОД2 доступны через шлюз Hub2‑dc1 для филиала №1 и через Hub1‑dc1 для филиала №2.

3.    Убедитесь, что трафик между защищаемыми подсетями филиалов №1 и №2 и подсетями в ЦОД1 и ЦОД2 шифруется, для этого запустите ping с устройств host_behind_spoke1 и host_behind_spoke2 на устройства host_behind_hub_dc1 и host_behind_hub_dc2 и удостоверьтесь в прохождении пакетов:

root@host_behind_spoke1:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke1:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

root@host_behind_spoke2:~# ping 192.168.200.100 -c 4

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

64 bytes from 192.168.200.100: icmp_seq=1 ttl=60 time=2.36 ms

64 bytes from 192.168.200.100: icmp_seq=2 ttl=60 time=2.40 ms

64 bytes from 192.168.200.100: icmp_seq=3 ttl=60 time=2.27 ms

64 bytes from 192.168.200.100: icmp_seq=4 ttl=60 time=2.60 ms

 

--- 192.168.200.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.274/2.412/2.605/0.135 ms

root@host_behind_spoke2:~# ping 192.168.210.100 -c 4

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

64 bytes from 192.168.210.100: icmp_seq=1 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=2 ttl=61 time=1.93 ms

64 bytes from 192.168.210.100: icmp_seq=3 ttl=61 time=2.24 ms

64 bytes from 192.168.210.100: icmp_seq=4 ttl=61 time=3.01 ms

 

--- 192.168.210.100 ping statistics ---

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

rtt min/avg/max/mdev = 1.937/2.360/3.015/0.401 ms

4.    Убедитесь, что защищенное соединение между резервной нодой кластера в филиале №1 и основной нодой кластера в филиале №2 напрямую невозможно, но возможно взаимодействие через шлюзы в ЦОД1, для этого запустите ping с устройства host_behind_spoke1 на устройство host_behind_spoke2:

root@host_behind_spoke1:~# ping 192.168.2.100 -c 4

64 bytes from 192.168.2.100: icmp_seq=1 ttl=61 time=5.03 ms

64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=689 ms

64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.45 ms

64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.38 ms

 

--- 192.168.2.100 ping statistics ---

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

rtt min/avg/max/mdev = 2.387/174.897/689.719/297.234 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 13 (100.101.1.2,4500)-(172.17.200.2,4500) active 2028 2100

2 14 (100.101.1.2,4500)-(172.17.210.2,4500) active 2164 2092

 

IPsec connections:

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

1 19 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 240 152

2 20 (100.101.1.2,*)-(172.17.200.2,*) * ESP nat-t-trans 25392 37344

3 21 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 0 36256

4 22 (100.101.1.2,*)-(172.17.210.2,*) * ESP nat-t-trans 30360 0

 

root@host_behind_spoke1:~# traceroute 192.168.2.100

traceroute to 192.168.2.100 (192.168.2.100), 30 hops max, 60 byte packets

 1  192.168.1.20 (192.168.1.20)  0.225 ms  0.242 ms  0.234 ms

 2  10.10.20.200 (10.10.20.200)  1.919 ms  1.874 ms  1.857 ms

 3  100.100.150.1 (100.100.150.1)  1.857 ms  1.819 ms  1.803 ms

 4  10.10.10.2 (10.10.10.2)  3.766 ms  3.762 ms  3.782 ms

 5  192.168.2.100 (192.168.2.100)  3.762 ms  3.767 ms  3.720 ms

Видно, что прямой IPsec‑туннель между шлюзами в филиалах №1 и №2 отсутствуют, но при этом взаимодействие между защищаемыми подсетями в филиалах №1 и №2 возможно через связь между Hub1‑dc1 и Hub2‑dc1.

5.    Включите устройство Spoke1‑n1 и Spoke2‑n2.

6.    Через некоторое время убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны, но MASTER-ноды будут разные.


 

Особые случаи поведения

Ошибки

1.    Если в качестве протокола динамической маршрутизации используется OSPF, то при добавлении в систему GRE интерфейса может произойти следующее. В настройки FRR для данного GRE интерфейса будет добавлена команда “ip ospf network broadcast”. Также проблема может возникать при перезапуске сервисов networking и vpndrv, а также при перезагрузке шлюза.

Чтобы избежать проблемы нужно, после добавления нового GRE интерфейса, а также при перезапуске сервисов networking и vpndrv, перезапустить сервис FRR, чтобы использовались сохраненные в FRR настройки.

root@Hub1:~# systemctl restart frr.service

Чтобы после перезагрузки шлюза GRE интерфейс не переходил в broadcast, следует настроить запуск FRR сервиса после сервиса networking. Настройка осуществляется через linux bash:

1.1.      Создайте директорию /etc/systemd/system/frr.service.d/:

root@Hub1-n1:~# mkdir -p /etc/systemd/system/frr.service.d

1.2.      Создайте файл /etc/systemd/system/frr.service.d/add_dependency.conf с содержимым:

[Unit]

After=networking.service 

1.3.      Выполните пересчет хешей при выполнении любого из следущих условий:

¾     для любого класса СКЗИ, если доверенная загрузка Шлюза обеспечивается программными средствами (СофтМДЗ, см. файл /etc/image_version);

¾     для классов СКЗИ КС2 и КС3, если доверенная загрузка Шлюза обеспечивается аппаратными средствами.

root@Hub1:~# systemctl reload links_verify

1.4.      Перезапустите шлюз:

root@Hub1:~# reboot 

Примечание: в процессе включения шлюза службы запускаются в следующем порядке: сначала загружается vpndrv, затем networking, затем frr, и последним запускается vpngate. При выключении шлюза службы завершаются в обратном порядке. В то время, когда vpngate.service не работает, действует политика Default Driver Policy (DDP), и в случае, если политика установлена в dropall, то FRR не сможет отправлять и получать обновления по протоколам динамической маршрутизации от других сетевых устройств.

Приложение

Устройство Core_router_ISP1

Сетевые настройки

Содержимое файла /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_router1_Hub1_dc1

auto ens160

iface ens160 inet static

address 172.16.100.1

netmask 255.255.255.0

 

# To Ext_router1_Hub1_DC2

auto ens192

iface ens192 inet static

address 172.16.110.1

netmask 255.255.255.0

 

# To Ext_router1_Spoke1_Br1

auto ens224

iface ens224 inet static

address 172.16.1.1

netmask 255.255.255.0

 

# To Ext_router1_Spoke1_Br2

auto ens256

iface ens256 inet static

address 172.16.2.1

netmask 255.255.255.0

Устройство Core_router_ISP2

Сетевые настройки

Содержимое файла /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_router2_Hub2_dc1

auto ens160

iface ens160 inet static

address 172.17.200.1

netmask 255.255.255.0

 

# To Ext_router2_Hub2_DC2

auto ens192

iface ens192 inet static

address 172.17.210.1

netmask 255.255.255.0

 

# To Ext_router2_Spoke2_Br1

auto ens224

iface ens224 inet static

address 172.17.1.1

netmask 255.255.255.0

 

# To Ext_router2_Spoke2_Br2

auto ens256

iface ens256 inet static

address 172.17.2.1

netmask 255.255.255.0

Устройство Ext_router1_Hub1_dc1

Сетевые настройки

Содержимое файла /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_ISP1

auto ens160

iface ens160 inet static

address 172.16.100.2

netmask 255.255.255.0

gateway 172.16.100.1

 

# To Hub1_dc1

auto ens192

iface ens192 inet static

address 100.100.100.1

netmask 255.255.255.0

post-up ip route add 192.168.200.0/24 via 100.100.100.2

post-up ip route add 192.168.210.0/24 via 100.100.100.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.100.100.0/24"

INET_IP1="172.16.100.2"

IPSECGW="100.100.100.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство Ext_router2_Hub2_dc1

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 172.17.200.2

netmask 255.255.255.0

gateway 172.17.200.1

 

# To Hub2

auto ens192

iface ens192 inet static

address 100.100.200.1

netmask 255.255.255.0

post-up ip route add 192.168.200.0/24 via 100.100.200.2

post-up ip route add 192.168.210.0/24 via 100.100.200.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.100.200.0/24"

INET_IP1="172.17.200.2"

IPSECGW="100.100.200.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство Ext_router1_Hub1_dc2

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 172.16.110.2

netmask 255.255.255.0

gateway 172.16.110.1

 

# To Hub1

auto ens192

iface ens192 inet static

address 100.100.110.1

netmask 255.255.255.0

post-up ip route add 192.168.200.0/24 via 100.100.110.2

post-up ip route add 192.168.210.0/24 via 100.100.110.2

 

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.100.110.0/24"

INET_IP1="172.16.110.2"

IPSECGW="100.100.110.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство Ext_router2_Hub2_dc2

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 172.17.210.2

netmask 255.255.255.0

gateway 172.17.210.1

 

# To Hub2

auto ens192

iface ens192 inet static

address 100.100.210.1

netmask 255.255.255.0

post-up ip route add 192.168.200.0/24 via 100.100.210.2

post-up ip route add 192.168.210.0/24 via 100.100.210.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.100.210.0/24"

INET_IP1="172.17.210.2"

IPSECGW="100.100.210.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство 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_ISP1

auto ens160

iface ens160 inet static

address 172.16.1.2

netmask 255.255.255.0

gateway 172.16.1.1

 

# To Spoke1_n1

auto ens192

iface ens192 inet static

address 100.100.1.1

netmask 255.255.255.0

post-up ip route add 192.168.1.0/24 via 100.100.1.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.100.1.0/24"

INET_IP1="172.16.1.2"

IPSECGW="100.100.1.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство 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_couter_ISP2

auto ens160

iface ens160 inet static

address 172.17.1.2

netmask 255.255.255.0

gateway 172.17.1.1

 

# To Spoke1_n2

auto ens192

iface ens192 inet static

address 100.101.1.1

netmask 255.255.255.0

post-up ip route add 192.168.1.0/24 via 100.101.1.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.101.1.0/24"

INET_IP1="172.17.1.2"

IPSECGW="100.101.1.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство Ext_router1_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

# To Core_router_ISP1

auto ens160

iface ens160 inet static

address 172.16.2.2

netmask 255.255.255.0

gateway 172.16.2.1

 

# To Spoke1_Br2

auto ens192

iface ens192 inet static

address 100.102.1.1

netmask 255.255.255.0

post-up ip route add 192.168.2.0/24 via 100.102.1.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.102.1.0/24"

INET_IP1="172.16.2.2"

IPSECGW="100.102.1.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство Ext_router2_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

# To Core_couter_ISP2

auto ens160

iface ens160 inet static

address 172.17.2.2

netmask 255.255.255.0

gateway 172.17.2.1

 

# To Spoke2_Br2

auto ens192

iface ens192 inet static

address 100.103.1.1

netmask 255.255.255.0

post-up ip route add 192.168.2.0/24 via 100.103.1.2

Настройки iptables

Содержимое файла /etc/iptables.rules:

EXTIF="ens160"

INTIF="ens192"

LAN_RANGE="100.103.1.0/24"

INET_IP1="172.17.2.2"

IPSECGW="100.103.1.2"

 

# Flush previous rules, delete chains and reset counters

iptables -F -t filter

iptables -F -t nat

iptables -F -t mangle

iptables -F

 

# Default policies

iptables -P INPUT   DROP

iptables -P OUTPUT  DROP

iptables -P FORWARD DROP

 

# Enable loopback traffic

iptables -A INPUT  -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

# Enable statefull rules (after that, only need to allow NEW conections)

iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate DNAT -j ACCEPT

 

# Drop invalid state packets

iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP

iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP

iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

 

 

### INPUT ###

# SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### OUTPUT ###

# SSH

iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

# ICMP

iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT

 

### FORWARD ###

iptables -A FORWARD -i $INTIF -o $EXTIF -m conntrack --ctstate NEW -j ACCEPT

 

### SNAT ###

iptables -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $INET_IP1

 

### DNAT ###

# IKE/500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 500 -j DNAT --to-destination $IPSECGW:500

# NAT-T/4500

iptables -t nat -A PREROUTING --dst $INET_IP1 -p udp --dport 4500 -j DNAT --to-destination $IPSECGW:4500

 

 

### LOGGING ###

iptables -A INPUT    -j LOG --log-level debug --log-prefix '[FW INPUT]:    '

iptables -A OUTPUT   -j LOG --log-level debug --log-prefix '[FW OUTPUT]:   '

iptables -A FORWARD  -j LOG --log-level debug --log-prefix '[FW FORWARD]:  '

 

Устройство host_behind_Hub_dc1

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 192.168.200.100

netmask 255.255.255.0

gateway 192.168.200.1

Устройство host_behind_Hub_dc2

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 192.168.210.100

netmask 255.255.255.0

gateway 192.168.210.1

 

Устройство host_behind_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 ens160

iface ens160 inet static

address 192.168.1.100

netmask 255.255.255.0

gateway 192.168.1.1

Устройство host_behind_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 ens160

iface ens160 inet static

address 192.168.2.100

netmask 255.255.255.0

gateway 192.168.2.1

Устройство Int_router1_Hub_dc1

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 192.168.250.1

netmask 255.255.255.0

 

# To LAN

auto ens192

iface ens192 inet static

address 192.168.200.1

netmask 255.255.255.0

 

# To DC2

auto ens224

iface ens224 inet static

address 192.168.252.1

netmask 255.255.255.0

post-up ip route add 192.168.255.0/24 via 192.168.252.2

Настройки динамической маршрутизации

Настройки сервиса FRR (vtysh):

frr version 7.1

frr defaults traditional

hostname int-router1-hub

log syslog informational

no ipv6 informational

service integrated-vtysh-config

!

router bgp 65003

 bgp router-id 192.168.200.1

 coalesce-time 1000

 timers bgp 3 9

 neighbor 192.168.250.10 remote-as 65001

 neighbor 192.168.250.20 remote-as 65002

 neighbor 192.168.252.2 remote-as 65003

 !

 address-family ipv4 unicast

  network 192.168.200.0/24

  neighbor 192.168.250.10 route-map FROM-HUB1-DC1-IN in

  neighbor 192.168.250.20 route-map FROM-HUB2-DC1-IN in

  neighbor 192.168.252.2 route-map FROM-DC2-IN in

 exit-address-family

!

bgp as-path access-list HUB1-DC2 permit _65001_

bgp as-path access-list HUB2-DC2 permit _65002_

bgp as-path access-list HUB1-DC1 deny _65002_

bgp as-path access-list HUB1-DC1 permit .*

!

route-map FROM-HUB1-DC1-IN permit 1

 set local-preference 100

!

route-map FROM-HUB2-DC1-IN permit 1

 set local-preference 50

!

route-map FROM-DC2-IN permit 10

 match as-path HUB1-DC2

 set local-preference 75

!

route-map FROM-DC2-IN permit 20

 match as-path HUB2-DC2

 set local-preference 25

!

route-map FROM-DC2-IN permit 30

 set local-preference 100

!

line vty

!

 

Устройство Int_router1_Hub_dc2

Сетевые настройки

Содержимое файла /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 ens160

iface ens160 inet static

address 192.168.250.1

netmask 255.255.255.0

 

# To LAN

auto ens192

iface ens192 inet static

address 192.168.200.1

netmask 255.255.255.0

 

# To DC2

auto ens224

iface ens224 inet static

address 192.168.252.1

netmask 255.255.255.0

post-up ip route add 192.168.255.0/24 via 192.168.252.2

Настройки динамической маршрутизации

Настройки сервиса FRR (vtysh):

frr version 7.1

frr defaults traditional

hostname int-router1-hub

log syslog informational

no ipv6 informational

service integrated-vtysh-config

!

router bgp 65003

 bgp router-id 192.168.255.1

 coalesce-time 1000

 timers bgp 3 9

 neighbor 192.168.255.10 remote-as 65001

 neighbor 192.168.255.20 remote-as 65002

 neighbor 192.168.252.1 remote-as 65003

 !

 address-family ipv4 unicast

  network 192.168.210.0/24

  neighbor 192.168.255.10 route-map FROM-HUB1-DC2-IN in

  neighbor 192.168.255.20 route-map FROM-HUB2-DC2-IN in

  neighbor 192.168.252.1 route-map FROM-DC1-IN in

 exit-address-family

!

bgp as-path access-list HUB1-DC1 permit _65001_

bgp as-path access-list HUB2-DC1 permit _65002_

!

route-map FROM-HUB1-DC2-IN permit 1

 set local-preference 75

!

route-map FROM-HUB2-DC2-IN permit 1

 set local-preference 25

!

route-map FROM-DC1-IN permit 10

 match as-path HUB1-DC1

 set local-preference 100

!

route-map FROM-DC1-IN permit 20

 match as-path HUB2-DC1

 set local-preference 50

!

route-map FROM-DC1-IN permit 30

 set local-preference 100

!

line vty

!

Устройство Hub1-dc1

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname hub1-dc1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.100.100.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

192.168.200.0 255.255.255.0

192.168.210.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.100.100.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.250.10 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.100.150.1 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.6 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.100.100.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.10.100

netmask 255.255.255.0

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

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

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 7.3

frr defaults traditional

hostname hub1-dc1

log syslog informational

service integrated-vtysh-config

!

router bgp 65001

 bgp router-id 10.10.10.100

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor spokes-ibgp peer-group

 neighbor spokes-ibgp remote-as 65001

 neighbor 100.100.150.2 remote-as 65002

 neighbor 192.168.250.1 remote-as 65003

 bgp listen limit 5000

 bgp listen range 10.10.10.0/24 peer-group spokes-ibgp

 !

 address-family ipv4 unicast

  neighbor spokes-ibgp route-reflector-client

  neighbor spokes-ibgp next-hop-self

 exit-address-family

!

line vty

!

Устройство Hub2-dc1

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname hub2-dc1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.100.200.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LAN which must be protected by IPsec

 192.168.200.0 255.255.255.0

 192.168.210.0 255.255.255.0

 

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.100.200.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.250.20 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.100.150.2 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.7 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.100.200.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.20.200

netmask 255.255.255.0

pre-up ip tunnel add mgre0 mode gre key 2 ttl 64 tos inherit

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

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 7.3

frr defaults traditional

hostname hub2-dc1

log syslog informational

service integrated-vtysh-config

!

router bgp 65002

 bgp router-id 10.10.20.200

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor spokes-ibgp peer-group

 neighbor spokes-ibgp remote-as 65002

 neighbor 100.100.150.1 remote-as 65001

 neighbor 192.168.250.1 remote-as 65003

 bgp listen limit 5000

 bgp listen range 10.10.20.0/24 peer-group spokes-ibgp

 !

 address-family ipv4 unicast

  neighbor spokes-ibgp route-reflector-client

  neighbor spokes-ibgp next-hop-self

 exit-address-family

!

line vty

!

Устройство Hub1-dc2

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname hub1-dc2

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.100.110.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

 192.168.210.0 255.255.255.0

 192.168.200.0 255.255.255.0

 

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.100.110.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.255.10 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.100.160.1 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.12 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.100.110.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.30.100

netmask 255.255.255.0

pre-up ip tunnel add mgre0 mode gre key 3 ttl 64 tos inherit

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

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 7.3

frr defaults traditional

hostname hub1-dc2

log syslog informational

service integrated-vtysh-config

!

router bgp 65001

 bgp router-id 10.10.30.100

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor spokes-ibgp peer-group

 neighbor spokes-ibgp remote-as 65001

 neighbor 100.100.160.2 remote-as 65002

 neighbor 192.168.255.1 remote-as 65003

 bgp listen limit 5000

 bgp listen range 10.10.30.0/24 peer-group spokes-ibgp

 !

 address-family ipv4 unicast

  neighbor spokes-ibgp route-reflector-client

  neighbor spokes-ibgp next-hop-self

 exit-address-family

!

line vty

!

Устройство Hub2-dc2

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname hub2-dc2

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.100.210.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LAN which must be protected by IPsec

 192.168.210.0 255.255.255.0

 192.168.200.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.100.210.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.255.20 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.100.160.2 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.13 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.100.210.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.40.200

netmask 255.255.255.0

pre-up ip tunnel add mgre0 mode gre key 4 ttl 64 tos inherit

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

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 7.3

frr defaults traditional

hostname HUB2

log syslog informational

service integrated-vtysh-config

!

router bgp 65002

 bgp router-id 10.10.40.200

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor spokes-ibgp peer-group

 neighbor spokes-ibgp remote-as 65002

 neighbor 100.100.160.1 remote-as 65001

 neighbor 192.168.255.1 remote-as 65003

 bgp listen limit 5000

 bgp listen range 10.10.40.0/24 peer-group spokes-ibgp

 !

 address-family ipv4 unicast

  neighbor spokes-ibgp route-reflector-client

  neighbor spokes-ibgp next-hop-self

 exit-address-family

!

line vty

!

Устройство Spoke1-n1

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname Spoke1-n1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.100.1.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

 192.168.1.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.100.1.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.1.10 255.255.255.0

 vrrp 1 ip 192.168.1.1 255.255.255.0

 vrrp 1 timers advertise 3

 vrrp 1 timers garp 5

 no vrrp 1 preempt

!

interface GigabitEthernet0/2

 ip address 100.101.2.1 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.22 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.100.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.10.1

netmask 255.255.255.0

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

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet static

address 10.10.30.1

netmask 255.255.255.0

pre-up ip tunnel add mgre1 mode gre key 3 ttl 64 tos inherit

pre-up ethtool -K mgre1 tx off > /dev/null

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

pre-up ip link set mgre1 type gre nopmtudisc

pre-up ip link set mgre1 type gre ignore-df

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

 map 10.10.10.100/24 172.16.100.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

interface mgre1

 map 10.10.30.100/24 172.16.110.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

Настройки BGP

frr version 7.3

frr defaults traditional

hostname Spoke1-n1

log syslog informational

service integrated-vtysh-config

!

router bgp 65001

 bgp router-id 192.168.1.10

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor 10.10.10.100 remote-as 65001

 neighbor 10.10.10.100 timers connect 30

 neighbor 10.10.30.100 remote-as 65001

 neighbor 10.10.30.100 timers connect 30

 neighbor 100.101.2.2 remote-as 65002

 neighbor 100.101.2.2 timers connect 30

 !

 address-family ipv4 unicast

  network 192.168.1.0/24

  neighbor 10.10.10.100 route-map FROM-HUB1-DC1-IN in

  neighbor 10.10.30.100 route-map FROM-HUB1-DC2-IN in

  neighbor 100.101.2.2 route-map FROM-SPOKE2-IN in

 exit-address-family

!

route-map FROM-HUB1-DC1-IN permit 1

 set local-preference 100

!

route-map FROM-HUB1-DC2-IN permit 1

 set local-preference 75

!

route-map FROM-SPOKE2-IN permit 1

 set local-preference 50

!

line vty

!

Настройки VRRP

Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

  enable_dbus

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  interface eth1

  virtual_ipaddress {

    192.168.1.1/24 label eth1:900

  }

  nopreempt

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Устройство Spoke1-n2

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname Spoke1-n2

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.101.1.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

 192.168.1.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.101.1.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.1.20 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.101.2.2 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.23 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.101.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.20.1

netmask 255.255.255.0

pre-up ip tunnel add mgre0 mode gre key 2 ttl 64 tos inherit

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet static

address 10.10.40.1

netmask 255.255.255.0

pre-up ip tunnel add mgre1 mode gre key 4 ttl 64 tos inherit

pre-up ethtool -K mgre1 tx off > /dev/null

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

pre-up ip link set mgre1 type gre nopmtudisc

pre-up ip link set mgre1 type gre ignore-df

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

 map 10.10.20.200/24 172.17.200.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

interface mgre1

 map 10.10.40.200/24 172.17.210.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

Настройки BGP

frr version 7.3

frr defaults traditional

hostname Spoke1-n2

log syslog informational

service integrated-vtysh-config

!

router bgp 65002

 bgp router-id 192.168.1.20

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor 10.10.20.200 remote-as 65002

 neighbor 10.10.20.200 timers connect 30

 neighbor 10.10.40.200 remote-as 65002

 neighbor 10.10.40.200 timers connect 30

 neighbor 100.101.2.1 remote-as 65001

 neighbor 100.101.2.1 timers connect 30

 !

 address-family ipv4 unicast

  network 192.168.1.0/24

  neighbor 10.10.20.200 route-map FROM-HUB2-DC1-IN in

  neighbor 10.10.40.200 route-map FROM-HUB2-DC2-IN in

  neighbor 100.101.2.1 route-map FROM-SPOKE1-IN in

 exit-address-family

!

route-map FROM-HUB2-DC1-IN permit 1

 set local-preference 75

!

route-map FROM-HUB2-DC2-IN permit 1

 set local-preference 50

!

route-map FROM-SPOKE1-IN permit 1

 set local-preference 100

!

line vty

!

Настройки VRRP

Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

  enable_dbus

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  interface eth1

  virtual_ipaddress {

    192.168.1.1/24 label eth1:900

  }

  nopreempt

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Устройство Spoke2-n1

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname Spoke2-n1

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.102.1.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

 192.168.2.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.102.1.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.2.10 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.103.2.1 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.27 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.102.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.10.2

netmask 255.255.255.0

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

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet static

address 10.10.30.2

netmask 255.255.255.0

pre-up ip tunnel add mgre1 mode gre key 3 ttl 64 tos inherit

pre-up ethtool -K mgre1 tx off > /dev/null

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

pre-up ip link set mgre1 type gre nopmtudisc

pre-up ip link set mgre1 type gre ignore-df

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

 map 10.10.10.100/24 172.16.100.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

interface mgre1

 map 10.10.30.100/24 172.16.110.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

Настройки BGP

frr version 7.3

frr defaults traditional

hostname Spoke2-n1

log syslog informational

service integrated-vtysh-config

!

router bgp 65001

 bgp router-id 192.168.2.10

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor 10.10.10.100 remote-as 65001

 neighbor 10.10.10.100 timers connect 30

 neighbor 10.10.30.100 remote-as 65001

 neighbor 10.10.30.100 timers connect 30

 neighbor 100.103.2.2 remote-as 65002

 neighbor 100.103.2.2 timers connect 30

 !

 address-family ipv4 unicast

  network 192.168.2.0/24

  neighbor 10.10.10.100 route-map FROM-HUB1-DC1-IN in

  neighbor 10.10.30.100 route-map FROM-HUB1-DC2-IN in

  neighbor 100.103.2.2 route-map FROM-SPOKE2-IN in

 exit-address-family

!

route-map FROM-HUB1-DC1-IN permit 1

 set local-preference 100

!

route-map FROM-HUB1-DC2-IN permit 1

 set local-preference 75

!

route-map FROM-SPOKE2-IN permit 1

 set local-preference 50

!

line vty

!

Настройки VRRP

Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

  enable_dbus

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  interface eth1

  virtual_ipaddress {

    192.168.2.1/24 label eth1:900

  }

  nopreempt

  priority 100

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}

Устройство Spoke2-n2

Параметры IPsec и Firewall

!

version 12.4

no service password-encryption

!

crypto ipsec df-bit copy

crypto isakmp identity dn

crypto isakmp fragmentation

crypto isakmp keepalive 3 3

crypto isakmp keepalive retry-count 3

username cscons privilege 15 password 0 csp

aaa new-model

!

!

hostname Spoke2-n2

enable password csp

!

!

!

!

!

crypto isakmp policy 1

 encr gost

 hash gost341112-256-tc26

 authentication gost-sig

 group vko2

!

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

 mode transport

!

object-group network self

 description IP on WAN interface

 host 100.103.1.2

!

object-group network private

 description private LANs

 100.64.0.0 255.192.0.0

 172.16.0.0 255.240.0.0

 192.168.0.0 255.255.0.0

 10.0.0.0 255.0.0.0

!

object-group network multicast

 host 224.0.0.5

 host 224.0.0.6

 host 224.0.0.18

!

object-group network protected_lan

 description LANs which must be protected by IPsec

 192.168.2.0 255.255.255.0

!

ip access-list extended FIREWALL_OUT

 deny   ip object-group protected_lan object-group private

 deny   gre any any

 permit ip any any

!

ip access-list extended IPSEC_DMVPN

 deny   icmp object-group self any

 deny   udp object-group self any

 deny   tcp object-group self any

 deny   ip object-group self object-group multicast

 remark special DMVPN filter

 permit ip object-group self each

!

!

crypto dynamic-map DMAP 1

 match address IPSEC_DMVPN

 set transform-set GOST

 set dead-connection history off

!

crypto map VPN 1 ipsec-isakmp dynamic DMAP

!

interface GigabitEthernet0/0

 ip address 100.103.1.2 255.255.255.0

 ip access-group FIREWALL_OUT out

 crypto map VPN

!

interface GigabitEthernet0/1

 ip address 192.168.2.20 255.255.255.0

!

interface GigabitEthernet0/2

 ip address 100.103.2.2 255.255.255.0

!

interface GigabitEthernet0/3

 ip address 10.0.230.28 255.255.0.0

!

!

ip route 0.0.0.0 0.0.0.0 100.103.1.1

!

crypto pki trustpoint s-terra_technological_trustpoint

 revocation-check none

crypto pki certificate chain s-terra_technological_trustpoint

certificate 58E026BFD6D625BE4582C16C6189C183

30820227308201D4A003020102021058E026BFD6D625BE4582C16C6189C18330

...

AD4F8901771632E0A0AF83

 

quit

!

end

Настройки mGRE

Содержимое файла /etc/network/interfaces.d/mgre0:

auto mgre0

iface mgre0 inet static

address 10.10.20.2

netmask 255.255.255.0

pre-up ip tunnel add mgre0 mode gre key 2 ttl 64 tos inherit

pre-up ethtool -K mgre0 tx off > /dev/null

pre-up ip link set mgre0 mtu 1400

pre-up ip link set mgre0 multicast on

pre-up ip link set mgre0 type gre nopmtudisc

pre-up ip link set mgre0 type gre ignore-df

post-down ip link del mgre0

Содержимое файла /etc/network/interfaces.d/mgre1:

auto mgre1

iface mgre1 inet static

address 10.10.40.2

netmask 255.255.255.0

pre-up ip tunnel add mgre1 mode gre key 4 ttl 64 tos inherit

pre-up ethtool -K mgre1 tx off > /dev/null

pre-up ip link set mgre1 mtu 1400

pre-up ip link set mgre1 multicast on

pre-up ip link set mgre1 type gre nopmtudisc

pre-up ip link set mgre1 type gre ignore-df

post-down ip link del mgre1

Настройки NHRP

Содержимое файла /etc/opennhrp/opennhrp.conf:

interface mgre0

 map 10.10.20.200/24 172.17.200.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

interface mgre1

 map 10.10.40.200/24 172.17.210.2 register

 multicast nhs

 holding-time 90

 cisco-authentication secret

 non-caching

Настройки BGP

frr version 7.3

frr defaults traditional

hostname Spoke2-n2

log syslog informational

service integrated-vtysh-config

!

router bgp 65002

 bgp router-id 192.168.2.20

 bgp log-neighbor-changes

 bgp network import-check

 timers bgp 3 9

 neighbor 10.10.20.200 remote-as 65002

 neighbor 10.10.20.200 timers connect 30

 neighbor 10.10.40.200 remote-as 65002

 neighbor 10.10.40.200 timers connect 30

 neighbor 100.103.2.1 remote-as 65001

 neighbor 100.103.2.1 timers connect 30

 !

 address-family ipv4 unicast

  network 192.168.2.0/24

  neighbor 10.10.20.200 route-map FROM-HUB2-DC1-IN in

  neighbor 10.10.40.200 route-map FROM-HUB2-DC2-IN in

  neighbor 100.103.2.1 route-map FROM-SPOKE1-IN in

 exit-address-family

!

route-map FROM-HUB2-DC1-IN permit 1

 set local-preference 75

!

route-map FROM-HUB2-DC2-IN permit 1

 set local-preference 50

!

route-map FROM-SPOKE1-IN permit 1

 set local-preference 100

!

line vty

!

Настройки VRRP

Содержимое файла /etc/keepalived/keepalived.conf:

global_defs {

  enable_dbus

}

vrrp_sync_group 0 {

  group {

    eth1_1

  }

}

vrrp_instance eth1_1 {

  interface eth1

  virtual_ipaddress {

    192.168.2.1/24 label eth1:900

  }

  nopreempt

  priority 50

  advert_int 3

  garp_master_refresh 5

  virtual_router_id 1

}