Настройка DMVPN (phase 2) с протоколом динамической маршрутизации iBGP для двух ЦОД
Данная инструкция описывает настройку DMVPN в схеме с двумя центрами обработки данных (далее ЦОД) в головном офисе компании. Инструкция предназначена для сетевых инженеров, знакомых с технологией DMVPN по оборудованию Cisco, а также разбирающихся в базовых настройках «С-Терра Шлюз».
Технология 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-серверов провайдера и так далее.
Перед настройкой стенда необходимо выполнить предварительные требования к начальному состоянию «С-Терра Шлюз», которые описаны в главе «Требования к начальному состоянию «С-Терра Шлюз».
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве сетевые интерфейсы, коммутирующие шлюзы Hub1‑dc1, Hub2‑dc1 и роутер Int_router1_Hub_dc1, должны быть в одном VLAN и в режиме portfast.
На данном устройстве сетевые интерфейсы, коммутирующие шлюзы Hub1‑dc2, Hub2‑dc2 и роутер Int_router1_Hub_dc2, должны быть в одном VLAN и в режиме portfast.
На данном устройстве сетевые интерфейсы, коммутирующие шлюзы Spoke1-n1, Spoke1-n2 и персональный компьютер host_behind_spoke1, должны быть в одном VLAN и в режиме portfast.
На данном устройстве сетевые интерфейсы, коммутирующие шлюзы Spoke2-n1, Spoke2-n2 и персональный компьютер host_behind_spoke1, должны быть в одном VLAN и в режиме portfast.
На данном устройстве должны быть настроены IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT. В приложении представлены настройки iptables (содержимое файла /etc/iptables.rules).
На данном устройстве должно быть настроено:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На данном устройстве должно быть настроено:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Краткий план настройки:
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 осуществляются из 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 приведены в приложении.
На шлюзах в ЦОД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 осуществляются из 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 приведены в приложении.
Динамическая маршрутизация настраивается через консоль сервиса 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 осуществляется аналогично устройству Hub1‑dc1 с учетом соответствующих IP-адресов (см. рисунок 1).
Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Настройка устройства Hub2‑dc2 осуществляется аналогично устройству Hub1‑dc1 с учетом соответствующих IP-адресов (см. рисунок 1).
Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Настройка устройства Hub2 осуществляется аналогично устройству Hub1‑dc1 с учетом соответствующих IP-адресов (см. рисунок 1).
Значение mGRE key на Hub1‑dc1, Hub2‑dc1, Hub1‑dc2 и Hub2‑dc2 должно быть различным.
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Краткий план настройки:
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 осуществляются из 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 приведены в приложении.
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 осуществляются из 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 приведены в приложении.
Динамическая маршрутизация настраивается через консоль сервиса 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 осуществляются из 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-n1 с учетом соответствующих IP-адресов (см. рисунок 1).
Значение bgp router-id у резервной ноды должно отличаться от значения основной ноды (Spoke1-n1).
Значение priority в VRRP у резервной ноды должно быть меньше, чем у основной ноды. Также отличаются настройки local-preference в настройках FRR.
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Настройка устройства Spoke2-n1 осуществляется аналогично устройству Spoke1-n1 с учетом соответствующих IP-адресов (см. рисунок 1).
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что былы выполнены шаги, описанные в главе «Требования к начальному состоянию «С-Терра Шлюз».
Настройка устройства 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: внешнего сетевого интерфейса 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. Через некоторое время убедитесь, что функционирование стенда восстановилось в полном объеме в соответствии с методикой, изложенной в пункте Все узлы в центральном офисе и филиалах функционируют и исправны.
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 и проверим работоспособность стенда. Для этого в 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 не сможет отправлять и получать обновления по протоколам динамической маршрутизации от других сетевых устройств.
Содержимое файла /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
Содержимое файла /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
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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]: '
Содержимое файла /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
Содержимое файла /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
Содержимое файла /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
Содержимое файла /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
Содержимое файла /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
!
Содержимое файла /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
!
!
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
Содержимое файла /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
Содержимое файла /etc/opennhrp/opennhrp.conf:
interface mgre0
multicast dynamic
holding-time 90
cisco-authentication secret
non-caching
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
!
!
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
Содержимое файла /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
Содержимое файла /etc/opennhrp/opennhrp.conf:
interface mgre0
multicast dynamic
holding-time 90
cisco-authentication secret
non-caching
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
!
!
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
Содержимое файла /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
Содержимое файла /etc/opennhrp/opennhrp.conf:
interface mgre0
multicast dynamic
holding-time 90
cisco-authentication secret
non-caching
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
!
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
Содержимое файла /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
Содержимое файла /etc/opennhrp/opennhrp.conf:
interface mgre0
multicast dynamic
holding-time 90
cisco-authentication secret
non-caching
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
!
!
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
Содержимое файла /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
Содержимое файла /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
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
!
Содержимое файла /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
}
!
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
Содержимое файла /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
Содержимое файла /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
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
!
Содержимое файла /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
}
!
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
Содержимое файла /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
Содержимое файла /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
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
!
Содержимое файла /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
}
!
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
Содержимое файла /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
Содержимое файла /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
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
!
Содержимое файла /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
}