Настройка отказоустойчивого решения для доступа сети филиала к Интернет сети через центральный офис
Инструкция применима только к шлюзам, имеющим класс сертификации КС1-КС2 и архитектуру x64.
Данная инструкция описывает настройку шлюзов для обеспечения досутупа к сети Интернет для филиалов через центральный офис. Обмен данных между филиалом и центральным офисом происходит через публичную сеть с помощью двух провайдеров на каждой стороне. Один из провайдеров выполняет роль основного, через который идет весь трафик. В случае отказа основного провайдера трафик отправляется через запасного провайдера. В центральном офисе и в филиале используется по два шлюза. С помощью протокола VRRP обеспечивается отказоустойчивость работы шлюзов и ругулируется какой из шлюзов является основным. С помощью протоколов агрегации канала обеспечивается отказоустойчивость работы интерфейсов. С помощью BGP происходит обмен условно публичными адресами. С помощью протокола GRE и OSPF происходит получение маршрутов защищаемой сети филиала, получение маршрута по умолчанию для филиала и регулирование прохождение трафика через провайдеров.
Инженер должен свободно ориентироваться в настройке базовых сценариев (например, site-to-site IPsec) продукта «С-Терра Шлюз», а также должен знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall, GRE, OSPF, BGP, VRRP.
Перед настройкой должно быть выполнено следующее:
1. Шлюзы должны быть инициализированы.
2. На шлюзах должны быть установлены корневой сертификат и сертификат устройства.
Исключительно для тестовых целей можно использовать тестовый УЦ от «КриптоПро», веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp.
Рисунок 1. Коммутационная схема
Рисунок 2. Схемы прохождений gre-тунелей
Данная инструкция описывает настройку технологии LACP, VRRP, BGP, GRE и OSPF на шлюзах безопасности «С-Терра Шлюз 4.2».
Стенд состоит из 14 устройств:
· «С-Терра Шлюз 4.2»: GW1, GW2, GW3, GW4.
· Роутеры на базе ОС Debian 9: Router1, Router2, Router3, Router4, Internet_router, Core_Router.
· Управляемые коммутаторы на базе ОС Debian 9: Central_switch, Branch_switch.
· Персональные компьютеры: Central_host, Branch_host.
Коммутаторы на базе ОС Debian 9 выбраны в качестве примера. В общем случае могут быть использованы любые устройства, поддерживающие функции коммутации и агрегации пакетов (в ОС Debian 9 будет реализован при помощи openvswitch).
Роутеры на базе ОС Debian 9 выбраны в качестве примера. В общем случае могут быть использованы любые маршрутизаторы, поддерживающие функции NAT и динамической маршрутизации (NAT в ОС Debian 9 будет реализован при помощи iptables, а динамическая маршрутизация при помощи пакета FRR).
Шлюзы GW1 и GW2 будут объединены в кластер № 1, GW3 и GW4 – в кластер № 2. При использовании протокола VRRP шлюзы каждого кластера имеют разделяемый виртуальный адрес в защищаемом сегменте сети (SN1 для центральных шлюзов, SN2 для шлюзов филиала) и публичном (PUB1 для связи центральных шлюзов с Router1, PUB2 для связи центральных шлюзов с Router2, PUB3 для связи шлюзов филиала с Router3, PUB4 для связи шлюзов филиала с Router4), также шлюзы подключенны к техническим подсетям (шлюзы GW1 и GW2 к подсетям 172.16.1.0/24 и 172.16.2.0/24, а шлюзы GW3 и GW4 к подсетям 172.16.3.0/24 и 172.16.4.0/24). Один из шлюзов является главным (MASTER), а второй – второстепенным (BACKUP). В один момент времени виртуальный адрес может быть только на шлюзе, который находится в состоянии MASTER. Трафик, идущий на виртуальный адрес, обрабатывает MASTER. Если по причинам, описанным ниже, главный шлюз становится недоступным, его состояние меняется с MASTER на FAULT, состояние второстепенного шлюза меняется с BACKUP на MASTER, и второстепенный шлюз продолжает заниматься обработкой трафика. На шлюзах настроенна nopreemt, которая позволяет, при возвращении в строй главного шлюза, перевести главный шлюз в состояние BACKUP. Шлюз будет дожидаться недоступности резервного шлюза. Обнаружение недоступности шлюза, находящегося в состоянии MASTER, происходит благодаря обмену служебными пакетами протокола VRRP (VRRP Advertisement messages). Обмен служебных пакетов происходит во внутреней подсети и в технических подсетях.
Стенд обрабатывает следующие типы отказов:
· отключение питания;
· выход из строя аппаратной платформы;
· отказ внешнего интерфейса;
· отказ агрегированного канала;
· отказ порта на коммутационном оборудовании;
· отказ демона, отвечающего за динамическую маршрутизацию трафика;
· отказ демона, отвечающего за шифрование трафика.
Отказоустойчивость связи между шлюзами и настраевыми коммутаторами обеспечивается с помощью агрегирования каналов. Физические интерфейсы GigabitEthernet0/0(eth0) и GigabitEthernet0/1(eth1) шлюзов будут объединены в один логический интерфейс GigabitEthernet1/0(bond0). На шлюзе будет настроен режим агрегирования сетевых интерфейсов по стандарту 802.3ad с использованием балансировки трафика. Данный протокол позволяет обеспечить отказоустойчивость физических интерфейсов. Балансировка трафика позволяет распределять его между интерфейсами. При отказе одного интерфейса в агрегированном канале, весь трафик будет передаваться через другой интерфейс агрегированного канала. На коммутаторе также должны быть настроены два агрегированных канала для связи со шлюзами.
В рамках данного решения резервируются провайдеры (каналы связи). Это достигается следующим образом: между шлюзами безопасности строится 4 GRE-туннеля с использованием виртуальных адресов (см. рисунок 2). На каждом шлюзе настроенны GRE-туннели, но GRE-тунели будут строиться между шлюзами находящихся в состоянии MASTER. Первый GRE-тунель строится между основными интефейсами шлюзов. Второй GRE-тунель строится между основным интерфейсом центрального шлюза и запасным интерфейсом филиала. Третий GRE-тунель строится между запасным интерфейсом центрального шлюза и основным интерфейсом филиала. Четвертый GRE-тунель строится между запасными интерфейсами шлюзов. Регулировка обмена трафика по GRE-тунелям происходит с помощью протокола OSPF. Трафик в GRE-туннелях инкапсулируются в IPSec. Внутри GRE-туннелей пропускается защищаемый трафик, а также пакеты динамической маршрутизации OSPF.
Шлюзы GW1 и GW2 будут подключены к Router1 и Router2, GW3 и GW4 – к Router3 и Router4.
Динамическая маршрутизация условно публичных подсетей (172.16.11.0/24, 172.16.12.0/24, 172.16.13.0/24, 172.16.14.0/24), расположенных между шлюзом и роутером, обеспечивается протоколом External BGP, а маршрутизация защищаемой подсети филиала и маршрута по умолчанию для филиала обеспечивается протоколом OSPF.
Роутеры подключеные к центральному офису (Router1 и Router2) транслируют центральному шлюзу только маршруты до шлюза филиала. Роутеры подключеные к филиалу (Router3 и Router4) транслируют шлюзу филиала только маршруты до центрального шлюза. Маршруты, полученные от Router1 и Router3, имеют больший вес. Также включенна фильтрация всех маршрутов, передаваемых шлюзами. Это необходимо для того, чтобы при наличии проблем на основном роутере, мы не получали маршруты через нашу автономную систему. Шлюзы безопасности, расположенные в центральном офисе, находятся в одной автономной системе №65001. Шлюзы безопасности, расположенные в филиале, находятся в одной автономной системе №65002. Роутеры, расположенные публичной сети, находятся в одной автономной системе №12389.
Для обмена информации о защищаемой подсети филиала и маршрута по умолчанию для филиала используется OSPF. Шлюз филиала транслирует через OSPF GRE-подсети и маршрут до защищаемой сети филиала. Центральный шлюз транслирует через OSPF GRE-подсети и маршрут по умолчанию. Для каждого GRE-интерфейса задается стоймость в зависимости от приоритета. Это позволяет контролировать маршрут через который будет проходить трафик. Наболее приоритетными маршрутами являются маршруты, полученные через первый GRE-тунель. Наименее приоритетными маршрутами являются маршруты, полученные через четвертый GRE-тунель.
В случае сбоя работы Router1, центральный шлюз перестает получать BGP через Router1. GRE-тунели через основной интерфейс не строятся и обмена OSPF трафиком через первый и третий GRE-тунели нет. Маршруты, полученные через третий GRE-тунель полчают больший приоритет и прописываются в таблицу маршрутизации.
Между шлюзами в филиалах и центральным офисом устанавливаются статические IPsec туннели. Инициатором построения туннелей является служебный трафик протоколов OSPF.
Параметры протокола IKE:
· Аутентификация при помощи цифровых сертификатов, алгоритм подписи – ГОСТ Р 34.10-2012 (ключ 256 бит);
· Алгоритм шифрования – ГОСТ 28147-89 (ключ 256 бит);
· Алгоритм вычисления хеш-функции – ГОСТ Р 34.11-2012 ТК26 (ключ 256 бит);
· Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) – VKO2 ГОСТ R 34.10-2012 (ключ 256 бит).
Параметры протокола ESP:
· Комбинированный алгоритм шифрования и контроля целостности – ESP_GOST-4M-IMIT (ключ 256 бит).
Чтобы не допустить трафик, предназначенный для другого внешнего интерфейса, или незашифрованный трафик, который следует защищать, на шлюзе настраивается списки доступа, блокирующий прохождение трафика с IP адресом соседнего интерфейса и открытого трафика защищенный сети филилиала. Из-за наличия статического маршрута по умолчанию на центральных шлюзах, следует добавить список доступа на агрегированный канал, который будет блокировать трафик, предназначенный для шлюзов филиала или в защищаемую подсеть филиала.
Перед настройкой стенда необходимо выполнить предварительные требования к начальному состоянию «С-Терра Шлюз», которые описаны в главе «Требования к начальному состоянию «С-Терра Шлюз».
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с коммутационной схемой (см. рисунок 1). В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с коммутационной схемой (см. рисунок 1). В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены:
1. IP-адреса и маршрутизация в соответствии с коммутационной схемой (см. рисунок 1). В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
2. Source NAT/Destination NAT для передачи пакетов в сеть интернет:
root@Central_switch:~# iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE
На данном устройстве должны быть настроена коммутация пакетов и агрегация каналов в соответствии коммутационной схемой. Для настройки для ОС Debian используется пакет openvswitch.
Добавляем виртуальный коммутатор:
root@Central_switch:~# ovs-vsctl add-br brswitch0
Добавляем одиночные порты, подключенные с Internet_router и Central_host, к вирутальному коммутатору:
root@Central_switch:~# ovs-vsctl add-port brswitch0 ens32
root@Central_switch:~# ovs-vsctl add-port brswitch0 ens34
Объединяем порты, подключенные к шлюзам. Указываем имя агрегированного канала, какие порты объединяем и в каком режиме будет работать:
root@Central_switch:~# ovs-vsctl add-bond brswitch0 bond0 ens35 ens36 bond_mode=balance-tcp lacp=active
root@Central_switch:~# ovs-vsctl add-bond brswitch0 bond1 ens37 ens38 bond_mode=balance-tcp lacp=active
Также следует изменить файл /etc/network/interfaces, чтобы порты были подняты при включении устройства. В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроена коммутация и агрегация пакетов в соответствии коммутационной схемой. Для настройки для ОС Debian используется пакет openvswitch.
Добавляем виртуальный коммутатор:
root@Branch_switch:~# ovs-vsctl add-br brswitch0
Добавляем одиночный порт, подключенный с Branch_host, к вирутальному коммутатору:
root@Branch_switch:~# ovs-vsctl add-port brswitch0 ens32
Объединяем порты, подключенные к шлюзам. Указываем имя агрегированного канала, какие порты объединяем и в каком режиме будет работать:
root@Branch_switch:~# ovs-vsctl add-bond brswitch0 bond0 ens34 ens35 bond_mode=balance-tcp lacp=active
root@Branch_switch:~# ovs-vsctl add-bond brswitch0 bond1 ens36 ens37 bond_mode=balance-tcp lacp=active
Также следует изменить файл /etc/network/interfaces, чтобы порты были подняты при включении устройства. В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На данном устройстве должны быть настроены:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На данном устройстве должны быть настроены:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На данном устройстве должны быть настроены:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На данном устройстве должны быть настроены:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На данном устройстве должны быть настроены:
1. IP-адреса в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки (содержимое файла /etc/network/interfaces).
2. Динамическая маршрутизация. В приложении представлены настройки FRR.
На всех шлюзах (GW1, GW2, GW3, GW4) нужно выполнить первоначальную подготовку. Подготовка включает в себя обновление предыдущих версий пакетов и установку новых. Для подготовки понадобится USB-flash накопитель.
Если у Вас устройство «С-Терра Шлюз» без SPDS (см. значение параметра PLATFORM в файле /etc/image_version), то до полного выполнения всех шагов инструкции не перезагружайте устройство.
Обновление пакета keepalived на устройства «С-Терра Шлюз» на базе SPDS и «С-Терра Шлюз» без SPDS производится по-разному.
1. .Перейдите в linux bash (команда system в консоли разграничения доступа S-Terra administrative console):
administrator@sterragate] system
Entering system shell...
2. Проверьте текущую версию пакета keepalived:
root@sterragate:~# dpkg -l | grep keepalived
ii keepalived 1.2.24~sterra~rc006 amd64 Open source implementation of VRRP protocol
Если версия 1.2.24~sterra~rc006 или 1.2.24~sterra-4, то рекомендуется обновить пакет keepalived, реализующий протокол VRRP, до версии keepalived_1.2.24~sterra-5 (получить пакет можно на портале документации http://doc.s-terra.ru ->Типовые сценарии применения -> Версия 4.2).
3. Загрузите пакет keepalived_1.2.24_sterra-5_amd64.deb в директорию /root.
Если сеть еще не настроена, то доставить пакет на шлюз можно при помощи USB Flash накопителя. При подключении USB Flash накопителя он будет автоматически смонтирован в директорию /media/<ID>.
4. Установите пакет:
4.1. Если у Вас «С-Терра Шлюз» на базе SPDS, то установка выполняется следующим образом:
root@sterragate:~# dpkg-deb -x keepalived_1.2.24~sterra-5_amd64.deb /
root@sterragate:~# chmod u+x /etc/keepalived/scripts/*
4.2. Если у Вас «С-Терра Шлюз» без SPDS, то установка выполняется следующим образом:
root@sterragate:~# dpkg -i keepalived_1.2.24~sterra-5_amd64.deb
(Reading database ... 18014 files and directories currently installed.)
Preparing to replace keepalived 1.2.24~sterra~rc006 (using keepalived_1.2.24~sterra-5_amd64.deb) ...
Unpacking replacement keepalived ...
Setting up keepalived (1.2.24~sterra-5) ...
Installing new version of config file /etc/init.d/keepalived ...
Installing new version of config file /etc/default/keepalived ...
Installing new version of config file /etc/keepalived/scripts/for_cs_console ...
Предварительно получите следующие файлы в личном кабинете партнера (https://www.s-terra.ru/auth/):
· пакет libjson-c2_0.11-3~bpo7+1_amd64.deb,
· пакет frr_4.1-dev-31032018_sterra-2_amd64.deb.
Перед установко пакета frr проверьте, осутсвие пакета frr:
root@sterragate:~# dpkg -l | grep frr
ii frr 4.1-dev-31032018~sterra-2 amd64 BGP/OSPF/RIP/RIPng/ISIS/PIM/LDP routing daemon forked from Quagga
Если версия 4.1-dev-31032018~sterra-2,
устанавливать пакет frr, не требуется.
Чтобы осуществить установку пакета frr выполните следующие шаги:
1. Проверьте текущую версию пакета libjson-c2:
root@sterragate:~# dpkg -l | grep libjson-c2
ii libjson-c2:amd64 0.11-3~bpo7+1 amd64 JSON manipulation library - shared library
Если версия 0.11-3~bpo7+1, то устанавливать пакет libjson-c2, не требуется.
1.1. Если libjson-c2 отсутствует, загрузите пакет libjson-c2_0.11-3~bpo7+1_amd64.deb в директорию /root.
Если сеть еще не настроена, то доставить пакет на шлюз можно при помощи USB Flash накопителя. При подключении USB Flash накопителя он будет автоматически смонтирован в директорию /media/<ID>.
Установите пакет:
root@sterragate:~# dpkg -i libjson-c2_0.11-3~bpo7+1_amd64.deb
Selecting previously unselected package libjson-c2:amd64.
(Reading database ... 18014 files and directories currently installed.)
Unpacking libjson-c2:amd64 (from libjson-c2_0.11-3~bpo7+1_amd64.deb) ...
Setting up libjson-c2:amd64 (0.11-3~bpo7+1) ...
2. Проверьте наличие пакета quagga:
root@sterragate:~# dpkg -l | grep quagga
ii quagga 1.0.20160315-1~sterra~rc001 amd64 BGP/OSPF/RIP routing daemon
2.1. Если пакет установлен, удалите пакет quagga:
root@sterragate:~# dpkg -P quagga
(Reading database ... 18022 files and directories currently installed.)
Removing quagga ...
Stopping Quagga monitor daemon: (watchquagga).
Stopping Quagga daemons (prio:0): (zebra) (bgpd) (ripd) (ripngd) (ospfd) (ospf6d) (isisd).
Removing all routes made by zebra.
Purging configuration files for quagga ...
3. Загрузите пакет frr_4.1-dev-31032018_sterra-2_amd64.deb в директорию /root.
Если сеть еще не настроена, то доставить пакет на шлюз можно при помощи USB Flash накопителя. При подключении USB Flash накопителя он будет автоматически смонтирован в директорию /media/<ID>.
4. Установите пакет:
root@sterragate:~# dpkg -i frr_4.1-dev-31032018_sterra-2_amd64.deb
(Reading database ... 17899 files and directories currently installed.)
Unpacking frr (from frr_4.1-dev-31032018_sterra-2_amd64.deb) ...
Setting up frr (4.1-dev-31032018~sterra-2) ...
Loading capability module if not yet done.
Starting Frr daemons (prio:10):. zebra. bgpd. ripd. ospfd.
Starting Frr monitor daemon: watchfrr.
Exiting from the script
5. Если у Вас «С-Терра Шлюз» без SPDS, то перед перезагрузкой устройства необходимо осуществить пересчёт хэш-сумм:
root@sterragate:~# /opt/VPNagent/bin/links_verify.sh update
6. Перезагрузите устройство:
root@sterragate:~# reboot
7. Повторите предыдущие пункты на всех оставшихся шлюзах.
Перед началом настроек убедитесь в том, что была выполнена процедура подготовки шлюзов, описанная в главе «Подготовка устройств «С-Терра Шлюз».
Краткий план настройки:
1. Настройка LACP.
2. Базовые настройки.
3. Настройка VRRP.
4. Настройка GRE-интерфейсов.
5. Настройка протоколов динамической маршрутизации.
6. Настройка IPsec и Firewall.
1. Настройки LACP осуществляется из linux bash. Внесите следующие настройки для агрегированного канала в файл /etc/network/interfaces:
Важно! Предполагается, что изменения IP-адреса, маски подсети и значения MTU для интерфейса bond0 будут происходить через файл /etc/network/interfaces, а не через cisco-like консоль, поэтому необходимо прописать настройки до строки ###netifcfg-begin###.
Если в данном файле присутствуют строки с настройками для интерфейсов eth0 и eth1, необходимо их удалить.
root@sterragate:~# vim.tiny /etc/network/interfaces
auto bond0
iface bond0 inet static
address 192.168.1.11
netmask 255.255.255.0
slaves eth0 eth1
bond_mode 802.3ad
bond_miimon 100
bond_xmit_hash_policy layer2+3
где:
· address <IP-адрес> – IP-адрес логического интерфейса (bond0);
· slaves <интерфейс> – имена физических интерфейсов, объединяемых в агрегированный канал;
· bond_mode – настройка, отвечающая за протокол, который обеспечивает работу агрегации каналов (в данном примере – это LACP, который основан на стандарте 802.3ad);
· bond_miimon <интервал> – параметр, определяющий интервал времени в миллисекундах. Через заданное время будет происходить проверка физических интерфейсов на их доступность;
· bond_xmit_hash_policy – параметр, определяющий уровень (эталонная модель OSI), на котором будет происходить вычисление хеш-функции для последующей балансировки трафика;
· mtu <значение> – параметр для задания MTU интерфейса; значение по умолчанию – 1500; при изменении MTU интерфейса bond0 меняется MTU и объединяемых интерфейсов eth0 и eth1.
Более полное описание настроек, относящихся к агрегированным каналам для ОС Linux смотрите в соответствующем документе.
2. Для применения настроек выполните перезапуск сетевого сервиса:
root@sterragate:~# service networking restart
3. Проверьте логический и физические интерфейсы:
root@sterragate:~# ip address show | grep bond0
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
4. Для отображения интерфейса bond0 в cisco-like чтобы применить настройки Firewall, необходимо прописать данный интерфейс в файл /etc/ifaliases.cf. Строки с интерфейсами eth0 и eth1 необходимо удалить.
root@sterragate:~# vim.tiny /etc/ifaliases.cf
interface (name="GigabitEthernet0/2" pattern="eth2")
interface (name="GigabitEthernet0/3" pattern="eth3")
interface (name="GigabitEthernet1/0" pattern="bond0")
5. Пересчитайте контрольную сумму измененного файла:
root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf
SUCCESS: Operation was successful.
6. Перезапустите сервис VPN агента:
root@sterragate:~# service vpngate restart
Stopping IPsec daemon.... done.
Starting IPsec daemon.. done.
7. Проверьте работоспособность:
На шлюзе безопасности GW1 выполните команду:
root@sterragate:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 33
Partner Key: 7
Partner Mac Address: 00:50:56:9e:54:f6
Slave Interface: eth0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:9e:ce:4a
Aggregator ID: 1
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:9e:44:e7
Aggregator ID: 1
Slave queue ID: 0
На коммутаторе Central_switch выполните:
root@Central_switch:~# ovs-appctl lacp/show bond0
---- bond0 ----
Status: active negotiated
sys_id: 00:50:56:9e:54:f6
sys_priority: 65534
aggregation key: 7
lacp_time: slow
slave: ens35: current attached
port_id: 8
prot_priority: 65535
may_enable: true
actor sys_id: 00:50:56:9e:54:f6
actor sys_priority: 65534
actor prot_id: 8
actor prot_priority: 65535
actor key: 7
actor state: activity aggregation synchronized collecting distributing
partner sys_id: 00:50:56:9e:ce:4a
partner sys_priority: 65535
partner prot_id: 1
partner prot_priority: 255
partner key: 33
partner state: activity aggregation synchronized collecting distributing
slave: ens36: current attached
port_id: 7
prot_priority: 65535
may_enable: true
actor sys_id: 00:50:56:9e:54:f6
actor sys_priority: 65534
actor prot_id: 7
actor prot_priority: 65535
actor key: 7
actor state: activity aggregation synchronized collecting distributing
partner sys_id: 00:50:56:9e:ce:4a
partner sys_priority: 65535
partner prot_id: 2
partner prot_priority: 255
partner key: 33
partner state: activity aggregation synchronized collecting distributing
Partner Mac Address на шлюзе совпадает с sys_id на коммутаторе Central_switch.
1. Для входа в консоль запустите cs_console:
root@sterragate:~# cs_console
sterragate>enable
Password:
Пароль по умолчанию – csp.
Важно! Пароль по умолчанию необходимо сменить.
2. Перейдите в режим настройки:
sterragate#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
3. Смените пароль по умолчанию:
sterragate(config)#username cscons password <пароль>
4. Настройте имя устройства, IP-адреса и маршрут по умолчанию в соответствии с общей схемой стенда (см. рисунок 1):
sterragate#configure terminal
sterragate(config)#hostname GW1
GW1(config)#interface GigabitEthernet0/2
GW1(config-if)# ip address 172.16.1.1 255.255.255.0
GW1(config-if)# no shutdown
GW1(config-if)#interface GigabitEthernet0/3
GW1(config-if)# ip address 172.16.2.1 255.255.255.0
GW1(config-if)# no shutdown
GW1(config-if)# exit
GW1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
GW1(config)#end
5. Проверьте доступность маршрутизатора по умолчанию:
GW1#ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 100(128) bytes of data.
108 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.36 ms
108 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.398 ms
108 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=0.721 ms
108 bytes from 192.168.1.1: icmp_req=4 ttl=64 time=0.503 ms
108 bytes from 192.168.1.1: icmp_req=5 ttl=64 time=0.538 ms
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.398/0.705/1.368/0.348 ms
6. Выйдите из cisco-like консоли:
GW1#exit
1. Поддержку протокола VRRP обеспечивает пакет keepalived. Настройка осуществляется через конфигурационный файл VRRP-демона /etc/keeaplived/keepalived.conf:
root@GW1:~# vim.tiny /etc/keepalived/keepalived.conf
Данный файл разбит на блоки, каждый блок отвечает за свою часть настроек. Ниже описаны параметры каждого блока в отдельности.
2. Блоки проверки работоспособности сервисов:
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
Проверяют запущены ли сервисы vpnsvc, ospfd, bgpd, zebra и, если какой-либо из них не запущен, то шлюз переводится в состояние FAULT. После восстановления работы всех сервисов, состояние шлюза изменится с FAULT на BACKUP|MASTER.
3. Синхронизация состояния трех VRRP-процессов (VRRP-instances) на шлюзе и выполнение соответствующих скриптов при переходе в какое-либо состояние:
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
В случае отказа одного из VRRP-процессов, для всей группы будет происходить смена состояния.
4. Параметры первого VRRP-процесса. Указывается, какой виртуальный адрес использовать, на каком интерфейсе, когда шлюз находится в состоянии MASTER:
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
5. Аналогично задайте параметры второго и третьего VRRP-процесса, изменив IP-адреса, интерфейс и значение параметра virtual_router_id. Структуру track_script достаточно прописать только для одного VRRP-процесса в группе.
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.11.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.12.10/24
}
}
· Основные параметры:
· interface ethN – интерфейс к которому происходит привязка VRRP-процесса;
· advert_int <n> – интервал отправки advertisement-пакета в секундах; значение по умолчанию – 1;
· priority <n> – приоритет маршрутизатора, шлюз с более высоким приоритетом переходит в состояние MASTER;
· garp_master_delay <n> – задержка в n секунд перед повторной отправкой gratuitous ARP после перехода в состояние MASTER; значение по умолчанию – 5;
· Дополнительные параметры:
· preempt_delay <n> – после перезагрузки шлюза или демона keepalived будет пауза в n секунд (0 до 1000) перед переходом в состояние MASTER; прописывать параметр необходимо у каждого VRRP-процесса; значение по умолчанию – 0;
· nopreempt – не позволяет шлюзу брать роль MASTER, если есть MASTER с меньшим приорететом; прописывать параметр необходимо у каждого VRRP-процесса;
· garp_master_refresh <n> – интервал между посылками gratuitous ARP; действует на шлюз в состоянии MASTER; прописывать параметр необходимо у каждого VRRP-процесса; по умолчанию – отключен.
6. Добавьте сервис Keepalived в автозагрузку и запустите его:
root@GW1:~# update-rc.d keepalived enable
update-rc.d: using dependency based boot sequencing
root@GW1:~# service keepalived start
Starting keepalived: keepalived.
В приложении представлены настройка VRRP для шлюза GW1.
1. Проверьте наличие строки “source /etc/network/interfaces.d/*” в файле /etc/network/interfaces. В случае отсутствия строки добавьте её в начало файла.
2. Создайте файл /etc/network/interfaces.d/gre1 и добавьте в него следующее содержимое:
Имя GRE-интерфейса должно соответствовать шаблону: greN, где N – целое число. При необходимости создайте директорию /etc/network/interfaces.d/.
auto gre1
iface gre1 inet static
address 10.0.10.1
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.13.10 local 172.16.11.10
pre-up ip link set gre1 mtu 1400
3. Создайте файл /etc/network/interfaces.d/gre2 и добавьте в него следующее содержимое:
auto gre2
iface gre2 inet static
address 10.0.20.1
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.14.10 local 172.16.11.10
pre-up ip link set gre2 mtu 1400
4. Создайте файл /etc/network/interfaces.d/gre3 и добавьте в него следующее содержимое:
auto gre3
iface gre3 inet static
address 10.0.30.1
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.13.10 local 172.16.12.10
pre-up ip link set gre3 mtu 1400
5. Создайте файл /etc/network/interfaces.d/gre4 и добавьте в него следующее содержимое:
auto gre4
iface gre4 inet static
address 10.0.40.1
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.14.10 local 172.16.12.10
pre-up ip link set gre4 mtu 1400
6. Поднимите GRE-интерфейсы:
root@GW1:~# ifup gre1
root@GW1:~# ifup gre2
root@GW1:~# ifup gre3
root@GW1:~# ifup gre4
7. Убедитесь, что GRE-интерфейсы созданы с нужными параметрами:
root@GW1:~# ip tunnel show gre1
gre1: gre/ip remote 172.16.13.10 local 172.16.11.10 ttl 255 tos inherit key 1
root@GW1:~# ip tunnel show gre2
gre2: gre/ip remote 172.16.14.10 local 172.16.11.10 ttl 255 tos inherit key 2
root@GW1:~# ip tunnel show gre3
gre3: gre/ip remote 172.16.13.10 local 172.16.12.10 ttl 255 tos inherit key 3
root@GW1:~# ip tunnel show gre4
gre4: gre/ip remote 172.16.14.10 local 172.16.12.10 ttl 255 tos inherit key 4
root@GW1:~# ip address show dev gre1
8: gre1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.11.10 peer 172.16.13.10
inet 10.0.10.1/30 brd 10.0.10.3 scope global gre1
root@GW1:~# ip address show dev gre2
9: gre2: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.11.10 peer 172.16.14.10
inet 10.0.20.1/30 brd 10.0.20.3 scope global gre2
root@GW1:~# ip address show dev gre3
10: gre3: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.12.10 peer 172.16.13.10
inet 10.0.30.1/30 brd 10.0.30.3 scope global gre3
root@GW1:~# ip address show dev gre4
11: gre4: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.12.10 peer 172.16.14.10
inet 10.0.40.1/30 brd 10.0.40.3 scope global gre4
Настройки GRE-интерфейсов приведены в приложении.
1. Проверьте что сервисы zebra, bgpd, ospfd будут запущены при старте:
root@GW1:~# cat /etc/frr/daemons | grep =yes
zebra=yes
bgpd=yes
ospfd=yes
ripd=yes
Если сервисы отсутствуют, следует их добавить, изменив соответсвующие параметры в файле /etc/frr/daemons.
2. Войдите в консоль сервиса FRR, для этого нужно из linux bash набрать следующую команду:
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1#
3. Перейдите в режим настройки:
GW1# configure terminal
4. Настройте OSPF (см. описание http://docs.frrouting.org/en/latest/ospfd.html):
4.1. Настройте выходную стоимость интерфейсов. Чем больше параметр, тем меньше приоритет при выборе интерфейса для одинаковых маршрутов.
GW1(config)# interface gre1
GW1(config-if)# ip ospf cost 100
GW1(config-if)# interface gre2
GW1(config-if)# ip ospf cost 200
GW1(config-if)# interface gre3
GW1(config-if)# ip ospf cost 200
GW1(config-if)# interface gre4
GW1(config-if)# ip ospf cost 400
4.2. Войдите в режим настройки OSPF:
GW1(config-if)# router ospf
4.3. Настройте OSPF индетификатор:
Значение ospf router-id на GW1, GW2, GW3 и GW4 должно быть различным.
GW1(config-router)# ospf router-id 10.10.10.10
4.4. Добавьте транслируемые сети:
GW1(config-router)# network 10.0.10.0/30 area 0.0.0.0
GW1(config-router)# network 10.0.20.0/30 area 0.0.0.0
GW1(config-router)# network 10.0.30.0/30 area 0.0.0.0
GW1(config-router)# network 10.0.40.0/30 area 0.0.0.0
GW1(config-router)# default-information originate
4.5. Отключите отправку обновлений протокола OSPF, для интерфейсов, не участвующих в OSPF:
GW1(config-router)# passive-interface bond0
GW1(config-router)# passive-interface eth0
GW1(config-router)# passive-interface eth1
GW1(config-router)# passive-interface eth2
GW1(config-router)# passive-interface eth3
GW1(config-router)# passive-interface gre0
GW1(config-router)# exit
5. Настройте BGP (см. описание http://docs.frrouting.org/en/latest/bgp.html):
5.1. Войдите в режим настройки BGP указав нужный номер автономной системы:
GW1(config)# router bgp 65001
5.2. Добавьте соседей, с которыми будет происходит обмен маршрутами и номер их автономной системы:
GW1(config-router)# neighbor 172.16.11.1 remote-as 12389
GW1(config-router)# neighbor 172.16.12.1 remote-as 12389
5.3. Добавьте веса к соседям и префикс-листы на обмен трафика:
Router1(172.16.11.1) является основным провайдером для криптошлюза GW1, поэтому для маршрутов полученных от Router1 следует задать значение веса больше, чем для маршрутов полученных от Router2(172.16.12.1).
В данном сценарии криптошлюзы не объявляют маршруты через протокол BGP устройствам Router1 и Router2, поэтому передача маршрутов роутерам провайдеров отключена. По умолчанию в списке доступа прописано deny ip any any, поэтому достаточно добавить пустой список доступа на передачу для каждого роутера провайдера.
GW1(config-router)# address-family ipv4 unicast
GW1(config-router-af)# neighbor 172.16.11.1 weight 100
GW1(config-router-af)# neighbor 172.16.11.1 prefix-list NONE out
GW1(config-router-af)# neighbor 172.16.12.1 weight 50
GW1(config-router-af)# neighbor 172.16.12.1 prefix-list NONE out
GW1(config-router-af)# end
6. Сохраните настройки:
GW1# write
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
Настройки протоколов динамической маршрутизации приведены в приложении.
Настройки IPsec и Firewall осуществляются из cisco-like консоли шлюза.
1. Параметры IKE:
GW1#conf t
GW1(config)#crypto isakmp identity dn
GW1(config)#crypto isakmp session-time-max 10
GW1(config)#crypto isakmp keepalive 1 3
GW1(config)#crypto isakmp keepalive retry-count 3
GW1(config)#
GW1(config)#crypto isakmp policy 1
GW1(config-isakmp)#encr gost
GW1(config-isakmp)#hash gost341112-256-tc26
GW1(config-isakmp)#authentication gost-sig
GW1(config-isakmp)#group vko2
GW1(config-isakmp)#exit
2. Задайте параметры для IPsec:
GW1(config)#crypto ipsec transform-set TSET esp-gost28147-4m-imit
GW1(cfg-crypto-trans)#exit
3. Опишите трафик, который планируется защищать. Для этого создайте четыре расширенных списка доступа. Каждый будет защищать трафик своего gre-тунеля:
GW1(config)#ip access-list extended IPSEC_MAIN_MAIN
GW1(config-ext-nacl)#permit gre host 172.16.11.10 host 172.16.13.10
GW1(config-ext-nacl)#exit
GW1(config)#ip access-list extended IPSEC_MAIN_BACKUP
GW1(config-ext-nacl)#permit gre host 172.16.11.10 host 172.16.14.10
GW1(config-ext-nacl)#exit
GW1(config)#ip access-list extended IPSEC_BACKUP_MAIN
GW1(config-ext-nacl)#permit gre host 172.16.12.10 host 172.16.13.10
GW1(config-ext-nacl)#exit
GW1(config)#ip access-list extended IPSEC_BACKUP_BACKUP
GW1(config-ext-nacl)#permit gre host 172.16.12.10 host 172.16.14.10
GW1(config-ext-nacl)#exit
4. Создайте две крипто-карты. Первая крипто-карта служит для построения туннелей через Router1, вторая – через Router2. В каждой криптокарте две секции. Первая секция каждой крипто-карты служит для построения туннелей через основной интерфейс соседа, вторая секция через запасной интерфейс. В каждой секции свой список доступа:
GW1(config)#crypto map CMAP 1 ipsec-isakmp
GW1(config-crypto-map)#match address IPSEC_MAIN_MAIN
GW1(config-crypto-map)#set transform-set TSET
GW1(config-crypto-map)#set local-address 172.16.11.10
GW1(config-crypto-map)#set peer 172.16.13.10
GW1(config-crypto-map)#exit
GW1(config)#crypto map CMAP 2 ipsec-isakmp
GW1(config-crypto-map)#match address IPSEC_MAIN_BACKUP
GW1(config-crypto-map)#set transform-set TSET
GW1(config-crypto-map)#set local-address 172.16.11.10
GW1(config-crypto-map)#set peer 172.16.14.10
GW1(config-crypto-map)#exit
GW1(config)#crypto map CMAP2 1 ipsec-isakmp
GW1(config-crypto-map)#match address IPSEC_BACKUP_MAIN
GW1(config-crypto-map)#set transform-set TSET
GW1(config-crypto-map)#set local-address 172.16.12.10
GW1(config-crypto-map)#set peer 172.16.13.10
GW1(config-crypto-map)#exit
GW1(config)#crypto map CMAP2 2 ipsec-isakmp
GW1(config-crypto-map)#match address IPSEC_BACKUP_BACKUP
GW1(config-crypto-map)#set transform-set TSET
GW1(config-crypto-map)#set local-address 172.16.12.10
GW1(config-crypto-map)#set peer 172.16.14.10
GW1(config-crypto-map)#exit
5. Параметры Firewall:
5.1. Списки доступа для внешних интерфейсов:
Списки доступа не должны пропускать gre-трафик, предназначенный для отправки с другого внешнего интерфейса и защищщаемый трафик не шифрованым.
GW1(config)#ip access-list extended FIREWALL_ACL_MAIN
GW1(config-ext-nacl)#deny gre host 172.16.12.10 any
GW1(config-ext-nacl)#deny ip any 192.168.2.0 0.0.0.255
GW1(config-ext-nacl)#permit ip any any
GW1(config-ext-nacl)#exit
GW1(config)#ip access-list extended FIREWALL_ACL_BACKUP
GW1(config-ext-nacl)#deny gre host 172.16.11.10 any
GW1(config-ext-nacl)#deny ip any 192.168.2.0 0.0.0.255
GW1(config-ext-nacl)#permit ip any any
GW1(config-ext-nacl)#exit
5.2. Список доступа для агрегированного интерфейса:
Из-за наличия маршрута по умолчанию для агрегированного канала следует задать список доступа в случае отказа обоих роутеров провайдера. Список доступа должен блокировать трафик до шлюзов филиала, так же не должен пропускать защищаемый трафик до сети филиала.
GW1(config)#ip access-list extended FIREWALL_ACL_BOND
GW1(config-ext-nacl)#deny ip any 172.16.13.0 0.0.0.255
GW1(config-ext-nacl)#deny ip any 172.16.14.0 0.0.0.255
GW1(config-ext-nacl)#deny ip any 192.168.2.0 0.0.0.255
GW1(config-ext-nacl)#permit ip any any
GW1(config-ext-nacl)#exit
GW1(config)#
6. Прикрепите крипто-карты и списки доступа на интерфейсы:
GW1(config)#interface GigabitEthernet0/2
GW1(config-if)#ip access-group FIREWALL_ACL_MAIN out
GW1(config-if)#crypto map CMAP
GW1(config-if)#exit
GW1(config)#interface GigabitEthernet0/3
GW1(config-if)#ip access-group FIREWALL_ACL_BACKUP out
GW1(config-if)#crypto map CMAP2
GW1(config-if)#exit
GW1(config)#interface GigabitEthernet1/0
GW1(config-if)#ip access-group FIREWALL_ACL_BOND out
GW1(config-if)#exit
7. Отключите проверку списка отозванных сертификатов (CRL):
Если требуется проверка CRL (рекомендуется) – смотрите настройку в базовых сценариях.
GW1(config)#crypto pki trustpoint s-terra_technological_trustpoint
GW1(ca-trustpoint)#revocation-check none
GW1(ca-trustpoint)#exit
GW1(config)#
8. Примените введенные настройки:
Настройки применяются при выходе из консоли при помощи команды end.
GW1(config)#end
9. Проверьте доступность маршрутизатора по умолчанию:
GW1#ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 100(128) bytes of data.
108 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=0.465 ms
108 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.231 ms
108 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=0.213 ms
108 bytes from 192.168.1.1: icmp_req=4 ttl=64 time=0.239 ms
108 bytes from 192.168.1.1: icmp_req=5 ttl=64 time=0.255 ms
--- 192.168.1.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 приведены в приложении.
Перед началом настроек убедитесь в том, что была выполнена процедура подготовки шлюзов, описанная в главе «Подготовка устройств «С-Терра Шлюз».
Настройка устройства GW2 осуществляется аналогично устройству GW1 с учетом соответствующих IP-адресов (см. рисунок 1) и приоритета в VRRP.
В приложении представлены соответствующие конфигурационные файлы.
Перед началом настроек убедитесь в том, что была выполнена процедура подготовки шлюзов, описанная в главе «Подготовка устройств «С-Терра Шлюз».
Краткий план настройки:
1. Настройка LACP.
2. Базовые настройки.
3. Настройка VRRP.
4. Настройка GRE-интерфейсов.
5. Настройка протоколов динамической маршрутизации.
6. Настройка IPsec и Firewall.
1. Настройки LACP осуществляется из linux bash. Внесите следующие настройки для агрегированного канала в файл /etc/network/interfaces:
Важно! Предполагается, что изменения IP-адреса, маски подсети и значения MTU для интерфейса bond0 будут происходить через файл /etc/network/interfaces, а не через cisco-like консоль, поэтому необходимо прописать настройки до строки ###netifcfg-begin###.
Если в данном файле присутствуют строки с настройками для интерфейсов eth0 и eth1, необходимо их удалить.
root@sterragate:~# vim.tiny /etc/network/interfaces
auto bond0
iface bond0 inet static
address 192.168.2.11
netmask 255.255.255.0
slaves eth0 eth1
bond_mode 802.3ad
bond_miimon 100
bond_xmit_hash_policy layer2+3
где:
· address <IP-адрес> – IP-адрес логического интерфейса (bond0);
· slaves <интерфейс> – имена физических интерфейсов, объединяемых в агрегированный канал;
· bond_mode – настройка, отвечающая за протокол, который обеспечивает работу агрегации каналов (в данном примере – это LACP, который основан на стандарте 802.3ad);
· bond_miimon <интервал> – параметр, определяющий интервал времени в миллисекундах. Через заданное время будет происходить проверка физических интерфейсов на их доступность;
· bond_xmit_hash_policy – параметр, определяющий уровень (эталонная модель OSI), на котором будет происходить вычисление хеш-функции для последующей балансировки трафика;
· mtu <значение> – параметр для задания MTU интерфейса; значение по умолчанию – 1500; при изменении MTU интерфейса bond0 меняется MTU и объединяемых интерфейсов eth0 и eth1.
Более полное описание настроек, относящихся к агрегированным каналам для ОС Linux смотрите в соответствующем документе.
2. Для применения настроек выполните перезапуск сетевого сервиса:
root@sterragate:~# service networking restart
3. Проверьте логический и физические интерфейсы:
root@sterragate:~# ip address show | grep bond0
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
inet 192.168.2.11/24 brd 192.168.2.255 scope global bond0
4. Для отображения интерфейса bond0 в cisco-like чтобы применить настройки Firewall, необходимо прописать данный интерфейс в файл /etc/ifaliases.cf. Строки с интерфейсами eth0 и eth1 необходимо удалить.
root@sterragate:~# vim.tiny /etc/ifaliases.cf
interface (name="GigabitEthernet0/2" pattern="eth2")
interface (name="GigabitEthernet0/3" pattern="eth3")
interface (name="GigabitEthernet1/0" pattern="bond0")
5. Пересчитайте контрольную сумму измененного файла:
root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf
SUCCESS: Operation was successful.
6. Перезапустите сервис VPN агента:
root@sterragate:~# service vpngate restart
Stopping IPsec daemon.... done.
Starting IPsec daemon.. done.
7. Проверьте работоспособность:
На шлюзе безопасности GW3 выполните команду:
root@sterragate:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 3
Number of ports: 2
Actor Key: 33
Partner Key: 2
Partner Mac Address: 00:50:56:9e:29:58
Slave Interface: eth0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:9e:b9:96
Aggregator ID: 3
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:9e:4a:45
Aggregator ID: 3
Slave queue ID: 0
На коммутаторе Branch_switch выполните:
root@Branch_switch:~# ovs-appctl lacp/show bond0
---- bond0 ----
Status: active negotiated
sys_id: 00:50:56:9e:29:58
sys_priority: 65535
aggregation key: 2
lacp_time: slow
slave: ens34: current attached
port_id: 3
prot_priority: 65535
may_enable: true
actor sys_id: 00:50:56:9e:29:58
actor sys_priority: 65534
actor prot_id: 3
actor prot_priority: 65535
actor key: 2
actor state: activity aggregation synchronized collecting distributing
partner sys_id: 00:50:56:9e:29:58
partner sys_priority: 65535
partner prot_id: 1
partner prot_priority: 255
partner key: 33
partner state: activity aggregation synchronized collecting distributing
slave: ens35: current attached
port_id: 2
prot_priority: 65535
may_enable: true
actor sys_id: 00:50:56:9e:29:58
actor sys_priority: 65534
actor prot_id: 2
actor prot_priority: 65535
actor key: 2
actor state: activity aggregation synchronized collecting distributing
partner sys_id: 00:50:56:9e:29:58
partner sys_priority: 65535
partner prot_id: 2
partner prot_priority: 255
partner key: 33
partner state: activity aggregation synchronized collecting distributing
Partner Mac Address на шлюзе GW3 совпадает с sys_id на коммутаторе Branch_switch.
1. Для входа в консоль запустите cs_console:
root@sterragate:~# cs_console
sterragate>enable
Password:
Пароль по умолчанию – csp.
Важно! Пароль по умолчанию необходимо сменить.
2. Перейдите в режим настройки:
sterragate#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
3. Смените пароль по умолчанию:
sterragate(config)#username cscons password <пароль>
4. Настройте имя устройства,IP-адреса и маршрут по умолчанию в соответствии с общей схемой стенда (см. рисунок 1):
sterragate#configure terminal
sterragate(config)#hostname GW3
GW3(config)#interface GigabitEthernet0/2
GW3(config-if)# ip address 172.16.3.1 255.255.255.0
GW3(config-if)# no shutdown
GW3(config-if)#interface GigabitEthernet0/3
GW3(config-if)# ip address 172.16.4.1 255.255.255.0
GW3(config-if)# no shutdown
GW3(config-if)# exit
5. Выйдите из cisco-like консоли:
GW3(config)#end
GW3#exit
1. Поддержку протокола VRRP обеспечивает пакет keepalived. Настройка осуществляется через конфигурационный файл VRRP-демона /etc/keeaplived/keepalived.conf:
root@GW3:~# vim.tiny /etc/keepalived/keepalived.conf
Данный файл разбит на блоки, каждый блок отвечает за свою часть настроек. Ниже описаны параметры каждого блока в отдельности.
2. Блоки проверки работоспособности сервисов:
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
Gроверяют запущены ли сервисы vpnsvc, ospfd, bgpd, zebra и, если какой-либо из них не запущен, то шлюз переводится в состояние FAULT. После восстановления работы всех сервисов, состояние шлюза изменится с FAULT на BACKUP|MASTER.
3. Синхронизация состояния трех VRRP-процессов (VRRP-instances) на шлюзе и выполнение соответствующих скриптов при переходе в какое-либо состояние:
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
В случае отказа одного из VRRP-процессов, для всей группы будет происходить смена состояния.
4. Параметры первого VRRP-процесса. Указывается, какой виртуальный адрес использовать, на каком интерфейсе, когда шлюз находится в состоянии MASTER:
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.2.1/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
5. Аналогично задайте параметры второго и третьего VRRP-процесса, изменив IP-адреса, интерфейс и значение параметра virtual_router_id. Структуру track_script достаточно прописать только для одного VRRP-процесса в группе.
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.13.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.14.10/24
}
}
· Основные параметры:
· interface ethN – интерфейс к которому происходит привязка VRRP-процесса;
· advert_int <n> – интервал отправки advertisement-пакета в секундах; значение по умолчанию – 1;
· priority <n> – приоритет маршрутизатора, шлюз с более высоким приоритетом переходит в состояние MASTER;
· garp_master_delay <n> – задержка в n секунд перед повторной отправкой gratuitous ARP после перехода в состояние MASTER; значение по умолчанию – 5;
· Дополнительные параметры:
· preempt_delay <n> – после перезагрузки шлюза или демона keepalived будет пауза в n секунд (0 до 1000) перед переходом в состояние MASTER; прописывать параметр необходимо у каждого VRRP-процесса; значение по умолчанию – 0;
· garp_master_refresh <n> – интервал между посылками gratuitous ARP; действует на шлюз в состоянии MASTER; прописывать параметр необходимо у каждого VRRP-процесса; по умолчанию – отключен;
· nopreempt – не позволяет шлюзу брать роль MASTER, если есть MASTER с меньшим приорететом; прописывать параметр необходимо у каждого VRRP-процесса.
6. Добавьте сервис Keepalived в автозагрузку и запустите его:
root@GW3:~# update-rc.d keepalived enable
update-rc.d: using dependency based boot sequencing
root@GW3:~# service keepalived start
Starting keepalived: keepalived.
В приложении представлены настройка VRRP для шлюза GW3.
1. Проверьте наличие строки “source /etc/network/interfaces.d/*” в файле /etc/network/interfaces. В случае отсутствия строки добавьте её в начало файла.
2. Создайте файл /etc/network/interfaces.d/gre1 и добавьте в него следующее содержимое:
Имя GRE-интерфейса должно соответствовать шаблону: greN, где N – целое число. При необходимости создайте директорию /etc/network/interfaces.d/.
auto gre1
iface gre1 inet static
address 10.0.10.2
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.11.10 local 172.16.13.10
pre-up ip link set gre1 mtu 1400
3. Создайте файл /etc/network/interfaces.d/gre2 и добавьте в него следующее содержимое:
auto gre2
iface gre2 inet static
address 10.0.20.2
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.11.10 local 172.16.14.10
pre-up ip link set gre2 mtu 1400
4. Создайте файл /etc/network/interfaces.d/gre3 и добавьте в него следующее содержимое:
auto gre3
iface gre3 inet static
address 10.0.30.2
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.12.10 local 172.16.13.10
pre-up ip link set gre3 mtu 1400
5. Создайте файл /etc/network/interfaces.d/gre4 и добавьте в него следующее содержимое:
auto gre4
iface gre4 inet static
address 10.0.40.2
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.12.10 local 172.16.14.10
pre-up ip link set gre4 mtu 1400
6. Поднимите GRE-интерфейсы:
root@GW3:~# ifup gre1
root@GW3:~# ifup gre2
root@GW3:~# ifup gre3
root@GW3:~# ifup gre4
7. Убедитесь, что GRE-интерфейсы созданы с нужными параметрами:
root@GW3:~# ip tunnel show gre1
gre1: gre/ip remote 172.16.11.10 local 172.16.13.10 ttl 255 tos inherit key 1
root@GW3:~# ip tunnel show gre2
gre2: gre/ip remote 172.16.11.10 local 172.16.14.10 ttl 255 tos inherit key 2
root@GW3:~# ip tunnel show gre3
gre3: gre/ip remote 172.16.12.10 local 172.16.13.10 ttl 255 tos inherit key 3
root@GW3:~# ip tunnel show gre4
gre4: gre/ip remote 172.16.12.10 local 172.16.14.10 ttl 255 tos inherit key 4
root@GW3:~# ip address show dev gre1
8: gre1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.13.10 peer 172.16.11.10
inet 10.0.10.2/30 brd 10.0.10.3 scope global gre1
root@GW3:~# ip address show dev gre2
9: gre2: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.14.10 peer 172.16.11.10
inet 10.0.20.2/30 brd 10.0.20.3 scope global gre2
root@GW3:~# ip address show dev gre3
10: gre3: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.13.10 peer 172.16.12.10
inet 10.0.30.2/30 brd 10.0.30.3 scope global gre3
root@GW3:~# ip address show dev gre4
11: gre4: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN
link/gre 172.16.14.10 peer 172.16.12.10
inet 10.0.40.2/30 brd 10.0.40.3 scope global gre4
Настройки GRE-интерфейса приведены в приложении.
1. Проверьте что сервисы zebra, bgpd, ospfd будут запущены при старте:
root@GW3:~# cat /etc/frr/daemons | grep =yes
zebra=yes
bgpd=yes
ospfd=yes
ripd=yes
Если сервисы отсутствуют, следует их добавить, изменив соответсвующие параметры в файле /etc/frr/daemons.
2. Войдите в консоль сервиса FRR, для этого нужно из linux bash набрать следующую команду:
root@GW3:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW3#
3. Перейдите в режим настройки:
GW3# configure terminal
4. Настройте OSPF (см. описание http://docs.frrouting.org/en/latest/ospfd.html):
4.1. Настройте выходную стоимость интерфейсов. Чем больше параметр, тем меньше приоритет выбора интерфейса.
GW3(config)# interface gre1
GW3(config-if)# ip ospf cost 100
GW3(config-if)# interface gre2
GW3(config-if)# ip ospf cost 200
GW3(config-if)# interface gre3
GW3(config-if)# ip ospf cost 200
GW3(config-if)# interface gre4
GW3(config-if)# ip ospf cost 400
4.2. Войдите в режим настройки OSPF:
GW3(config-if)# router ospf
4.3. Настройте OSPF индетификатор:
Значение ospf router-id на GW1, GW2, GW3 и GW4 должно быть различным.
GW3(config-router)# ospf router-id 30.30.30.30
4.4. Добавьте транслируемые сети:
GW3(config-router)# network 10.0.10.0/30 area 0.0.0.0
GW3(config-router)# network 10.0.20.0/30 area 0.0.0.0
GW3(config-router)# network 10.0.30.0/30 area 0.0.0.0
GW3(config-router)# network 10.0.40.0/30 area 0.0.0.0
GW3(config-router)# network 192.168.2.0/24 area 0.0.0.0
4.5. Отключите отправку обновлений протокола OSPF, для интерфейсов, не участвующих в OSPF:
GW3(config-router)# passive-interface bond0
GW3(config-router)# passive-interface eth0
GW3(config-router)# passive-interface eth1
GW3(config-router)# passive-interface eth2
GW3(config-router)# passive-interface eth3
GW3(config-router)# passive-interface gre0
GW3(config-router)# exit
5. Настройте BGP (см. описание http://docs.frrouting.org/en/latest/bgp.html):
5.1. Войдите в режим настройки BGP указав нужный номер автономной системы:
GW3(config)# router bgp 65002
5.2. Добавьте соседей, с которыми будет происходит обмен маршрутами и номер их автономной системы:
GW3(config-router)# neighbor 172.16.13.1 remote-as 12389
GW3(config-router)# neighbor 172.16.14.1 remote-as 12389
5.3. Добавьте веса к соседям и префикс-листы на обмен трафика:
Router3(172.16.13.1) является основным провайдером для криптошлюза GW3, поэтому для маршрутов полученных от Router3 следует задать значение веса больше, чем для маршрутов полученных от Router4(172.16.14.1).
В данном сценарии криптошлюзы не объявляют маршруты через протокол BGP устройствам Router3 и Router4, поэтому передача маршрутов роутерам провайдеров отключена. По умолчанию в списке доступа прописано deny ip any any, поэтому достаточно добавить пустой список доступа на передачу для каждого роутера провайдера..
GW1(config-router)# address-family ipv4 unicast
GW1(config-router-af)# neighbor 172.16.13.1 weight 100
GW1(config-router-af)# neighbor 172.16.13.1 prefix-list NONE out
GW1(config-router-af)# neighbor 172.16.14.1 weight 50
GW1(config-router-af)# neighbor 172.16.14.1 prefix-list NONE out
GW1(config-router-af)# end
6. Сохраните настройки:
GW3# write
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
Настройки протоколов динамической маршрутизации приведены в приложении.
Настройки IPsec и Firewall осуществляются из cisco-like консоли шлюза.
1. Параметры IKE:
GW3#conf t
GW3(config)#crypto isakmp identity dn
GW3(config)#crypto isakmp session-time-max 10
GW3(config)#crypto isakmp keepalive 1 3
GW3(config)#crypto isakmp keepalive retry-count 3
GW3(config)#crypto isakmp policy 1
GW3(config-isakmp)#encr gost
GW3(config-isakmp)#hash gost341112-256-tc26
GW3(config-isakmp)#authentication gost-sig
GW3(config-isakmp)#group vko2
GW3(config-isakmp)#exit
2. Задайте параметры для IPsec:
GW3(config)#crypto ipsec transform-set TSET esp-gost28147-4m-imit
GW3(cfg-crypto-trans)#exit
3. Опишите трафик, который планируется защищать. Для этого создайте четыре расширенных списка доступа. Каждый будет защищать трафик одного gre-тунеля:
GW3(config)#ip access-list extended IPSEC_MAIN_MAIN
GW3(config-ext-nacl)#permit gre host 172.16.13.10 host 172.16.11.10
GW3(config-ext-nacl)#exit
GW3(config)#ip access-list extended IPSEC_MAIN_BACKUP
GW3(config-ext-nacl)#permit gre host 172.16.13.10 host 172.16.12.10
GW3(config-ext-nacl)#exit
GW3(config)#ip access-list extended IPSEC_BACKUP_MAIN
GW3(config-ext-nacl)#permit gre host 172.16.14.10 host 172.16.11.10
GW3(config-ext-nacl)#exit
GW3(config)#ip access-list extended IPSEC_BACKUP_BACKUP
GW3(config-ext-nacl)#permit gre host 172.16.14.10 host 172.16.12.10
GW3(config-ext-nacl)#exit
4. Создайте две крипто-карты. Первая крипто-карта служит для построения туннелей через Router1, вторая – через Router2. В каждой криптокарте две секции. Первая секция каждой крипто-карты служит для построения туннелей через основной интерфейс соседа, вторая секция через запасной интерфейс. В каждой секции свой список доступа:
GW3(config)#crypto map CMAP 1 ipsec-isakmp
GW3(config-crypto-map)#match address IPSEC_MAIN_MAIN
GW3(config-crypto-map)#set transform-set TSET
GW3(config-crypto-map)#set local-address 172.16.13.10
GW3(config-crypto-map)#set peer 172.16.11.10
GW3(config-crypto-map)#exit
GW3(config)#crypto map CMAP 2 ipsec-isakmp
GW3(config-crypto-map)#match address IPSEC_MAIN_BACKUP
GW3(config-crypto-map)#set transform-set TSET
GW3(config-crypto-map)#set local-address 172.16.13.10
GW3(config-crypto-map)#set peer 172.16.12.10
GW3(config-crypto-map)#exit
GW3(config)#crypto map CMAP2 1 ipsec-isakmp
GW3(config-crypto-map)#match address IPSEC_BACKUP_MAIN
GW3(config-crypto-map)#set transform-set TSET
GW3(config-crypto-map)#set local-address 172.16.14.10
GW3(config-crypto-map)#set peer 172.16.11.10
GW3(config-crypto-map)#exit
GW3(config)#crypto map CMAP2 2 ipsec-isakmp
GW3(config-crypto-map)#match address IPSEC_BACKUP_BACKUP
GW3(config-crypto-map)#set transform-set TSET
GW3(config-crypto-map)#set local-address 172.16.14.10
GW3(config-crypto-map)#set peer 172.16.12.10
GW3(config-crypto-map)#exit
5. Параметры Firewall:
Списки доступа не должны пропускать gre-трафик, предназначенный для отправки с другого внешнего интерфейса и защищщаемый трафик не шифрованым.
GW3(config)#ip access-list extended FIREWALL_ACL_MAIN
GW3(config-ext-nacl)#deny gre host 172.16.14.10 any
GW3(config-ext-nacl)#deny ip 192.168.2.0 0.0.0.255 any
GW3(config-ext-nacl)#permit ip any any
GW3(config-ext-nacl)#exit
GW3(config)#ip access-list extended FIREWALL_ACL_BACKUP
GW3(config-ext-nacl)#deny gre host 172.16.13.10 any
GW3(config-ext-nacl)#deny ip 192.168.2.0 0.0.0.255 any
GW3(config-ext-nacl)#permit ip any any
GW3(config-ext-nacl)#exit
6. Прикрепите крипто-карты и списки доступа на интерфейсы:
GW3(config)#interface GigabitEthernet0/2
GW3(config-if)#ip access-group FIREWALL_ACL_MAIN out
GW3(config-if)#crypto map CMAP
GW3(config-if)#exit
GW3(config)#interface GigabitEthernet0/3
GW3(config-if)# ip access-group FIREWALL_ACL_BACKUP out
GW3(config-if)# crypto map CMAP2
GW3(config-if)#exit
7. Отключите проверку списка отозванных сертификатов (CRL):
Если требуется проверка CRL (рекомендуется) – смотрите настройку в базовых сценариях.
GW3(config)#crypto pki trustpoint s-terra_technological_trustpoint
GW3(ca-trustpoint)#revocation-check none
GW3(ca-trustpoint)#exit
GW3(config)#
8. Примените введенные настройки:
Настройки применяются при выходе из консоли при помощи команды end.
GW3(config)#end
Параметры IPsec и Firewall приведены в приложении.
Перед началом настроек убедитесь в том, что была выполнена процедура подготовки шлюзов, описанная в главе «Подготовка устройств «С-Терра Шлюз».
Настройка устройства GW4 осуществляется аналогично устройству GW3 с учетом соответствующих IP-адресов (см. рисунок 1) и приоритета в VRRP.
В приложении представлены соответствующие конфигурационные файлы.
Проверка работоспособности стенда проводится в четырех состояниях:
1. Все узлы функционируют и исправны.
2. Отказ основного шлюза: отказ шлюза центрального офиса, отказ шлюза филиала.
3. Отказ основного роутера.
4. Отказ одного из интерфейсов агрегированного канала.
1. Убедитесь, что основные шлюзы находится в состоянии MASTER, для этого в linux bash выполните следующие команды:
root@GW1:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ce:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
inet 192.168.1.10/24 scope global secondary bond0
root@GW1:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:a9:c3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth2
inet 172.16.11.10/24 scope global eth2
root@GW1:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ff:0a brd ff:ff:ff:ff:ff:ff
inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3
inet 172.16.12.10/24 scope global eth3
root@GW1:~# tcpdump -i bond0 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:49:18.625480 IP 192.168.1.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
14:49:19.626873 IP 192.168.1.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
14:49:20.628016 IP 192.168.1.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@GW1:~# tcpdump -i eth2 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
14:48:31.574801 IP 172.16.1.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
14:48:32.576000 IP 172.16.1.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
14:48:33.577041 IP 172.16.1.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@GW1:~# tcpdump -i eth3 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth3, link-type EN10MB (Ethernet), capture size 65535 bytes
14:49:36.646544 IP 172.16.2.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
14:49:37.647618 IP 172.16.2.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
14:49:38.649032 IP 172.16.2.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@GW3:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:b9:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.11/24 brd 192.168.2.255 scope global bond0
inet 192.168.2.1/24 scope global secondary bond0
root@GW3:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:f9:83 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.1/24 brd 172.16.3.255 scope global eth2
inet 172.16.13.10/24 scope global eth2
root@GW3:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e8:a8 brd ff:ff:ff:ff:ff:ff
inet 172.16.4.1/24 brd 172.16.4.255 scope global eth3
inet 172.16.14.10/24 scope global eth3
root@GW3:~# tcpdump -i bond0 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:50:26.718604 IP 192.168.2.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
14:50:27.719817 IP 192.168.2.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
14:50:28.720962 IP 192.168.2.11 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@GW3:~# tcpdump -i eth2 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
14:50:35.729287 IP 172.16.3.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
14:50:36.730609 IP 172.16.3.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
14:50:37.731658 IP 172.16.3.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 52, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@GW3:~# tcpdump -i eth3 -n -c 3 vrrp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth3, link-type EN10MB (Ethernet), capture size 65535 bytes
14:50:41.736495 IP 172.16.4.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
14:50:42.737516 IP 172.16.4.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
14:50:43.738537 IP 172.16.4.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 100, authtype none, intvl 1s, length 20
3 packets captured
3 packets received by filter
0 packets dropped by kernel
Видно, что на каждом шлюзе на интерфейсах bond0, eth2 и eth3 имеются VIP-адрес, а также с данных интерфейсов отсылаются служебные VRRP пакеты.
2. Убедитесь, что на основных шлюзах корректно работают протоколы динамической маршрутизации, для этого зайдите в linux bash выполните следующие команды:
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.1.11, local AS number 65001 vrf-id 0
BGP table version 15
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.11.1 4 12389 218 198 0 0 0 02:08:40 2
172.16.12.1 4 12389 221 202 0 0 0 02:08:35 2
Total number of neighbors 2
GW1# show ip bgp
BGP table version is 2, local router ID is 192.168.1.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 172.16.13.0/24 172.16.12.1 50 12389 i
*> 172.16.11.1 100 12389 i
* 172.16.14.0/24 172.16.12.1 50 12389 i
*> 172.16.11.1 100 12389 i
Displayed 2 routes and 4 total paths
GW1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
30.30.30.30 1 Full/DROther 32.922s 10.0.10.2 gre1:10.0.10.1 0 0 0
30.30.30.30 1 Init/DROther 32.922s 10.0.30.2 gre3:10.0.30.1 0 0 0
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 01:56:52
O 10.0.20.0/30 [110/200] is directly connected, gre2, 01:56:52
O 10.0.30.0/30 [110/200] is directly connected, gre3, 01:56:52
O 10.0.40.0/30 [110/400] is directly connected, gre4, 01:56:52
O>* 192.168.2.0/24 [110/110] via 10.0.10.2, gre1, 00:38:02
root@GW3:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW3# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.2.11, local AS number 65002 vrf-id 0
BGP table version 10
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.13.1 4 12389 202 181 0 0 0 02:11:29 2
172.16.14.1 4 12389 177 177 0 0 0 02:11:34 2
Total number of neighbors 2
GW3# show ip bgp
BGP table version is 4, local router ID is 192.168.2.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.11.0/24 172.16.13.1 100 12389 i
* 172.16.14.1 50 12389 i
*> 172.16.12.0/24 172.16.13.1 100 12389 i
* 172.16.14.1 50 12389 i
Displayed 2 routes and 4 total paths
GW3# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
10.10.10.10 1 Full/DROther 32.271s 10.0.10.1 gre1:10.0.10.2 0 0 0
10.10.10.10 1 Init/DROther 32.270s 10.0.20.1 gre2:10.0.20.2 0 0 0
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 02:11:02
O 10.0.10.0/30 [110/100] is directly connected, gre1, 03:17:44
O 10.0.20.0/30 [110/200] is directly connected, gre2, 03:17:44
O 10.0.30.0/30 [110/200] is directly connected, gre3, 03:17:44
O 10.0.40.0/30 [110/400] is directly connected, gre4, 03:17:44
O 192.168.2.0/24 [110/10] is directly connected, bond0, 03:17:44
Видно, что на каждом шлюзе по протоколу BGP установлено соседство со своими роутерами. Каждый получает маршруты до шлюза партнера через соседний основной роутер.
Видно, что на каждом основном шлюзе по протоколу OSPF установлено соседство с другим основным шлюзом через gre1 интерфейс. Через OSPF основной шлюз GW1 узнает о защищаемой сети филиала, а филиал получает маршрут по умолчанию.
3. Убедитесь, что через основной интерфейс основного центрального шлюза установлены IPsec-туннели со всеми интерфейсами основного шлюза филиала и что на основном шлюзе филиала установлены IPsec-туннели со всеми интерфейсами основного шлюза центрального офиса. Для этого в linux bash выполните следующую команду:
root@GW1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 188 (172.16.12.10,500)-(172.16.13.10,500) active 1868 1960
2 189 (172.16.11.10,500)-(172.16.13.10,500) active 1804 1960
3 190 (172.16.11.10,500)-(172.16.14.10,500) active 1960 1804
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 18 (172.16.12.10,*)-(172.16.13.10,*) 47 ESP tunn 0 96
2 19 (172.16.11.10,*)-(172.16.13.10,*) 47 ESP tunn 104 104
3 20 (172.16.11.10,*)-(172.16.14.10,*) 47 ESP tunn 96 0
root@GW3:~# 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 (172.16.13.10,500)-(172.16.11.10,500) active 1960 1804
2 27 (172.16.13.10,500)-(172.16.12.10,500) active 1960 1868
3 28 (172.16.14.10,500)-(172.16.11.10,500) active 1804 1960
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 11 (172.16.13.10,*)-(172.16.12.10,*) 47 ESP tunn 96 0
2 12 (172.16.13.10,*)-(172.16.11.10,*) 47 ESP tunn 104 104
3 13 (172.16.14.10,*)-(172.16.11.10,*) 47 ESP tunn 0 96
Видно, что на каждом шлюзе установлено по три IPsec-туннеля – основной интерфейс шлюза с основным интерфейсом партнера, основной интерфейс шлюза с запасным интерфейсом партнера и запасной интерфейс шлюза с запасным интерфейсом партнера. Тунели связывающие основной интерфейс с запасным интерфейсом партнера одностороние.
4. Убедитесь, что маршруты прописаны в таблицах маршрутизатора у основных шлюзов и отсутсвуют у резервных шлюзов:
root@GW1:~# ip route show
default via 192.168.1.1 dev bond0
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.1
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.1
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.1
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.1
172.16.1.0/24 dev eth2 proto kernel scope link src 172.16.1.1
172.16.2.0/24 dev eth3 proto kernel scope link src 172.16.2.1
172.16.11.0/24 dev eth2 proto kernel scope link src 172.16.11.10
172.16.12.0/24 dev eth3 proto kernel scope link src 172.16.12.10
172.16.13.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
172.16.14.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.11
192.168.2.0/24 via 10.0.10.2 dev gre1 proto 188 metric 20
root@GW2:~# ip route show
default via 192.168.1.1 dev bond0
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.1
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.1
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.1
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.1
172.16.1.0/24 dev eth2 proto kernel scope link src 172.16.1.2
172.16.2.0/24 dev eth3 proto kernel scope link src 172.16.2.2
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.12
root@GW3:~# ip route show
default via 10.0.10.1 dev gre1 proto 188 metric 20
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.2
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.2
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.2
172.16.3.0/24 dev eth2 proto kernel scope link src 172.16.3.1
172.16.4.0/24 dev eth3 proto kernel scope link src 172.16.4.1
172.16.11.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.12.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.13.0/24 dev eth2 proto kernel scope link src 172.16.13.10
172.16.14.0/24 dev eth3 proto kernel scope link src 172.16.14.10
192.168.2.0/24 dev bond0 proto kernel scope link src 192.168.2.11
root@GW4:~# ip route show
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.2
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.2
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.2
172.16.3.0/24 dev eth2 proto kernel scope link src 172.16.3.2
172.16.4.0/24 dev eth3 proto kernel scope link src 172.16.4.2
192.168.2.0/24 dev bond0 proto kernel scope link src 192.168.2.12
Видно, что на каждом основном шлюзе присутствуют маршруты, полученные по BGP и OSPF.
1. Смоделируем отказ внешнего сетевого интерфейса eth2 на центральном шлюзе GW1 и проверим работоспособность стенда. Предпологается что шлюз GW1 находится в состоянии MASTER, а GW2 находится в состоянии BACKUP.
1.1. Переведите внешний сетевой интерфейс eth2 на центральном шлюзе GW1 в состояние DOWN, для этого в linux bash выполните следующую команду:
root@GW1:~# ifconfig eth2 down
1.2. Проверьте, что шлюз GW1 перешел в состояние FAULT:
root@GW1:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:42:23 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 3 10:42:24 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Entering MASTER STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: Kernel is reporting: interface eth2 DOWN
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Entering FAULT STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Now in FAULT state
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to FAULT state
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering FAULT STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Now in FAULT state
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering FAULT STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Now in FAULT state
root@GW1:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ce:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
root@GW1:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:a9:c3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth2
root@GW1:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ff:0a brd ff:ff:ff:ff:ff:ff
inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3
Видно, что кластерные VIP-адреса отсутствуют на интерфейсах bod0, eth2, eth3 и в лог-файле есть строки (Transition to FAULT STATE/ Entering FAULT STATE), свидетельствующие о переходе шлюза в состояние FAULT.
1.3. Убедитесь, что резервный шлюз GW2 перешел в состояние MASTER, для этого в linux bash выполните следующие команды:
root@GW2:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:42:24 GW2 Keepalived_vrrp[31823]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 10:42:24 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 10:42:24 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_3) Entering BACKUP STATE
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 10:42:33 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 3 10:42:34 GW2 Keepalived_vrrp[31823]: VRRP_Instance(VI_2) Entering MASTER STATE
root@GW2:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ed:e7 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.12/24 brd 192.168.1.255 scope global bond0
inet 192.168.1.10/24 scope global secondary bond0
root@GW2:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:9b:54 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.2/24 brd 172.16.1.255 scope global eth2
inet 172.16.11.10/24 scope global eth2
root@GW2:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:67:ab brd ff:ff:ff:ff:ff:ff
inet 172.16.2.2/24 brd 172.16.2.255 scope global eth3
inet 172.16.12.10/24 scope global eth3
Видно, что кластерные VIP-адреса присутствуют на интерфейсах bod0, eth2, eth3 и в лог-файле есть строки (Transition to MASTER STATE/ Entering MASTER STATE), свидетельствующие о переходе шлюза в состояние MASTER.
1.4. Убедитесь, что корректно работают протоколы динамической маршрутизации, для этого из linux bash выполните следующие команды:
root@GW2:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW2# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.1.12, local AS number 65001 vrf-id 0
BGP table version 4
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.11.1 4 12389 39 31 0 0 0 00:22:36 2
172.16.12.1 4 12389 39 33 0 0 0 00:22:37 2
Total number of neighbors 2
GW2# show ip bgp
BGP table version is 4, local router ID is 192.168.1.12
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.13.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
*> 172.16.14.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
Displayed 2 routes and 4 total paths
GW2# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
30.30.30.30 1 Full/DROther 38.226s 10.0.10.2 gre1:10.0.10.1 0 0 0
30.30.30.30 1 Init/DROther 38.224s 10.0.30.2 gre3:10.0.30.1 0 0 0
GW2# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 01:07:15
O 10.0.20.0/30 [110/200] is directly connected, gre2, 01:07:15
O 10.0.30.0/30 [110/200] is directly connected, gre3, 01:07:15
O 10.0.40.0/30 [110/400] is directly connected, gre4, 01:07:15
O>* 192.168.2.0/24 [110/110] via10.0.10.2, gre1, 00:24:33
Видно, что на шлюзе по протоколу BGP установлено соседство с роутерами. Шлюз получает маршруты до внешних интерфейсов шлюза партнера через соседний основной роутер.
Видно, что на резервном шлюзе по протоколу OSPF установлено соседство с основным шлюзом филиала через gre интерфейсы, идущие через основной интерфейс соседа. Через OSPF резервный шлюз GW2 узнает о защищаемой сети филиала.
1.5. Убедитесь, что произошли соответсвующие измеенения в таблицах маршрутизации:
root@GW1:~# ip route show
default via 192.168.1.1 dev bond0
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.1
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.1
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.1
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.1
172.16.2.0/24 dev eth3 proto kernel scope link src 172.16.2.1
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.11
root@GW2:~# ip route show
default via 192.168.1.1 dev bond0
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.1
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.1
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.1
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.1
172.16.1.0/24 dev eth2 proto kernel scope link src 172.16.1.2
172.16.2.0/24 dev eth3 proto kernel scope link src 172.16.2.2
172.16.11.0/24 dev eth2 proto kernel scope link src 172.16.11.10
172.16.12.0/24 dev eth3 proto kernel scope link src 172.16.12.10
172.16.13.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
172.16.14.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.12
192.168.2.0/24 via 10.0.10.2 dev gre1 proto 188 metric 20
1.6. Убедитесь, что через OSPF был получен маршрут по умолчанию на основном шлюзе филиала GW3.
root@GW3:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 00:07:07
O 10.0.10.0/30 [110/100] is directly connected, gre1, 01:25:50
O 10.0.20.0/30 [110/200] is directly connected, gre2, 01:25:50
O 10.0.30.0/30 [110/200] is directly connected, gre3, 01:25:50
O 10.0.40.0/30 [110/400] is directly connected, gre4, 01:25:50
O 192.168.2.0/24 [110/10] is directly connected, bond0, 01:25:50
1.7. Убедитесь, что установлены IPsec-туннели до шлюза филиала. Для этого в linux bash выполните следующую команду:
root@GW2:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 22 (172.16.11.10,500)-(172.16.13.10,500) active 1960 1804
2 23 (172.16.11.10,500)-(172.16.14.10,500) active 1960 1868
3 24 (172.16.12.10,500)-(172.16.13.10,500) active 1804 1960
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 5 (172.16.11.10,*)-(172.16.14.10,*) 47 ESP tunn 96 0
2 6 (172.16.11.10,*)-(172.16.13.10,*) 47 ESP tunn 104 104
3 7 (172.16.12.10,*)-(172.16.13.10,*) 47 ESP tunn 0 96
1.8. Убедитесь, что есть связь между устроуствами центрального офиса и филала, для этого запустите ping с устройства Central_host на устройство Branch_host
root@Central_host:~# 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=62 time=2.45 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=2.02 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.39 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 3004ms
rtt min/avg/max/mdev = 1.741/2.154/2.455/0.288 ms
1.9. Включите обратно интерфейс eth2 на GW1. Убедитесь, что шлюз перешел в состояние BACKUP (основной шлюз не перехватит роль MASTER, так как в настройках VRRP стоит опция nopreempt), для этого в linux bash выполните следующие команды:.
root@GW1:~# ifconfig eth2 up
root@GW1:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ce:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
root@GW1:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:9e:a9:c3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth2
root@GW1:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ff:0a brd ff:ff:ff:ff:ff:ff
inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3
root@GW1:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering FAULT STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Now in FAULT state
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering FAULT STATE
Apr 3 10:42:29 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Now in FAULT state
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: Kernel is reporting: Group(G1) UP
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Leaving FAULT state
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Entering BACKUP STATE
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering BACKUP STATE
Видно, что в лог-файле есть строки (Entering BACKUP STATE), свидетельствующие о переходе шлюза в состояние BACKUP.
2. Смоделируем полный отказ шлюза GW2 и проверим работоспособность стенда. Предпологается что шлюз GW2 находится в состоянии MASTER, а GW1 находится в состоянии BACKUP.
2.1. Выключите шлюз GW2, для этого в linux bash выполните следующую команду:
root@GW2:~# poweroff
2.2. Убедитесь, что шлюз GW1 перешел в состояние MASTER, для этого в linux bash выполните следующие команды:
root@GW1:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ce:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
inet 192.168.1.10/24 scope global secondary bond0
root@GW1:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:9e:a9:c3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth2
inet 172.16.11.10/24 scope global eth2
root@GW1:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ff:0a brd ff:ff:ff:ff:ff:ff
inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3
inet 172.16.12.10/24 scope global eth3
root@GW1:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering BACKUP STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Entering MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering MASTER STATE
Видно, что кластерные VIP-адреса присутствуют на интерфейсах bond0, eth2, eth3 и в лог-файле есть строки (Transition to MASTER STATE/ Entering MASTER STATE), свидетельствующие о переходе шлюза в состояние MASTER.
2.3. Убедитесь, что корректно работают протоколы динамической маршрутизации, для этого зайдите в linux bash выполните следующие команды:
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.1.12, local AS number 65001 vrf-id 0
BGP table version 4
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.11.1 4 12389 39 31 0 0 0 00:22:36 2
172.16.12.1 4 12389 39 33 0 0 0 00:22:37 2
Total number of neighbors 2
GW1# show ip bgp
BGP table version is 4, local router ID is 192.168.1.12
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.13.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
*> 172.16.14.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
Displayed 2 routes and 4 total paths
GW1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
30.30.30.30 1 Full/DROther 38.226s 10.0.10.2 gre1:10.0.10.1 0 0 0
30.30.30.30 1 Init/DROther 38.224s 10.0.30.2 gre3:10.0.30.1 0 0 0
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 01:07:15
O 10.0.20.0/30 [110/200] is directly connected, gre2, 01:07:15
O 10.0.30.0/30 [110/200] is directly connected, gre3, 01:07:15
O 10.0.40.0/30 [110/400] is directly connected, gre4, 01:07:15
O>* 192.168.2.0/24 [110/110] via10.0.10.2, gre1, 00:01:54
Видно, что на шлюзе по протоколу BGP установлено соседство с роутерами. Шлюз получает маршруты до внешних интерфейсов шлюза партнера через соседний основной роутер.
Видно, что на резервном шлюзе по протоколу OSPF установлено соседство с основным шлюзом филиала через gre интерфейсы, идущие через основной интерфейс соседа. Через OSPF основной шлюз GW1 узнает о защищаемой сети филиала.
2.4. Убедитесь, что произошли соответсвующие измеенения в таблицах маршрутизации:
root@GW1:~# ip route show
default via 192.168.1.1 dev bond0
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.1
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.1
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.1
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.1
172.16.1.0/24 dev eth2 proto kernel scope link src 172.16.1.2
172.16.2.0/24 dev eth3 proto kernel scope link src 172.16.2.2
172.16.11.0/24 dev eth2 proto kernel scope link src 172.16.11.10
172.16.12.0/24 dev eth3 proto kernel scope link src 172.16.12.10
172.16.13.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
172.16.14.0/24 via 172.16.11.1 dev eth2 proto 186 metric 20
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.12
192.168.2.0/24 via 10.0.10.2 dev gre1 proto 188 metric 20
2.5. Убедитесь, что через OSPF был получен маршрут по умолчанию на основном шлюзе филиала GW3.
root@GW3:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 00:05:47
O 10.0.10.0/30 [110/100] is directly connected, gre1, 01:45:50
O 10.0.20.0/30 [110/200] is directly connected, gre2, 01:45:50
O 10.0.30.0/30 [110/200] is directly connected, gre3, 01:45:50
O 10.0.40.0/30 [110/400] is directly connected, gre4, 01:45:50
O 192.168.2.0/24 [110/10] is directly connected, bond0, 01:45:50
2.6. Убедитесь, что установлены IPsec-туннели. Для этого в linux bash выполните следующую команду:
root@GW1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 33 (172.16.11.10,500)-(172.16.14.10,500) active 3860 3768
2 39 (172.16.12.10,500)-(172.16.13.10,500) active 4768 4860
3 40 (172.16.11.10,500)-(172.16.13.10,500) active 3496 3404
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 15 (172.16.11.10,*)-(172.16.14.10,*) 47 ESP tunn 1728 0
2 17 (172.16.12.10,*)-(172.16.13.10,*) 47 ESP tunn 0 1632
3 18 (172.16.11.10,*)-(172.16.13.10,*) 47 ESP tunn 2168 2728
2.7. Убедитесь, что есть связь между устроуствами центрального офиса и филала, для этого запустите ping с устройства Central_host на устройство Branch_host
root@Central_host:~# 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=62 time=3.05 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.79 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.30 ms
64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=1.72 ms
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.721/2.220/3.059/0.536 ms
2.8. Запустите резервный шлюз кластера, дождитесь его полной загрузки и убедитесь, что она перешла в состояние BACKUP, для этого в linux bash выполните следующие команды:
root@GW2:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:ce:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global bond0
root@GW2:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:9e:a9:c3 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth2
root@GW2:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ff:0a brd ff:ff:ff:ff:ff:ff
inet 172.16.2.1/24 brd 172.16.2.255 scope global eth3
Из-за особенностей сценария и работы пакета keepaliveв нельзя удостовериться, что при загрузке GW2 осталася в состоянии BACKUP. Можно только убедиться, что шлюз GW1 остался в состоянии MASTER
root@GW1:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 10:44:32 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering BACKUP STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 11:21:00 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_2) Entering MASTER STATE
Apr 3 11:21:01 GW1 Keepalived_vrrp[5952]: VRRP_Instance(VI_1) Entering MASTER STATE
1. Смоделируем отказ внешнего сетевого интерфейса eth2 на шлюзе GW3 и проверим работоспособность стенда. Предпологается что шлюз GW3 находится в состоянии MASTER, а GW4 находится в состоянии BACKUP.
1.1. Переведите внешний сетевой интерфейс eth2 на основном шлюзе GW3 в состояние DOWN, для этого в linux bash выполните следующую команду:
root@GW3:~# ifconfig eth2 down
1.2. Проверьте, что шлюз GW3 перешел в состояние FAULT:
root@GW3:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 10:32:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Entering MASTER STATE
Apr 3 10:32:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 12:34:09 GW3 Keepalived_vrrp[2871]: Kernel is reporting: interface eth2 DOWN
Apr 3 12:34:09 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Entering FAULT STATE
Apr 3 12:34:09 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Now in FAULT state
Apr 3 12:34:09 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to FAULT state
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering FAULT STATE
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Now in FAULT state
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering FAULT STATE
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Now in FAULT state
root@GW3:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:b9:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.11/24 brd 192.168.2.255 scope global bond0
root@GW3:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:50:56:9e:f9:83 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.1/24 brd 172.16.3.255 scope global eth2
root@GW3:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e8:a8 brd ff:ff:ff:ff:ff:ff
inet 172.16.4.1/24 brd 172.16.4.255 scope global eth3
Видно, что кластерные VIP-адреса отсутствуют на интерфейсах bod0, eth2, eth3 и в лог-файле есть строки (Transition to FAULT STATE/ Entering FAULT STATE), свидетельствующие о переходе шлюза в состояние FAULT.
1.3. Убедитесь, что резервный шлюз GW4 перешел в состояние MASTER, для этого в linux bash выполните следующие команды:
root@GW4:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 12:32:46 GW4 Keepalived_vrrp[2826]: index = 8
Apr 3 12:32:46 GW4 Keepalived_vrrp[2826]: IPv4 address = 10.0.20.2
Apr 3 12:32:46 GW4 Keepalived_vrrp[2826]: IPv6 address = ::
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 3 12:34:14 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 12:34:15 GW4 Keepalived_vrrp[2826]: VRRP_Instance(VI_2) Entering MASTER STATE
root@GW4:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:98:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0
inet 192.168.2.1/24 scope global secondary bond0
root@GW4:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e6:11 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.2/24 brd 172.16.3.255 scope global eth2
inet 172.16.13.10/24 scope global eth2
root@GW4:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ec:2b brd ff:ff:ff:ff:ff:ff
inet 172.16.4.2/24 brd 172.16.4.255 scope global eth3
inet 172.16.14.10/24 scope global eth3
Видно, что кластерные VIP-адреса присутствуют на интерфейсах bod0, eth2, eth3 и в лог-файле есть строки (Transition to MASTER STATE/ Entering MASTER STATE), свидетельствующие о переходе шлюза в состояние MASTER.
1.4. Убедитесь, что корректно работают протоколы динамической маршрутизации, для этого зайдите в linux bash выполните следующие команды:
root@GW4:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW4# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.2.12, local AS number 65002 vrf-id 0
BGP table version 2
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.13.1 4 12389 16 11 0 0 0 00:02:12 2
172.16.14.1 4 12389 16 10 0 0 0 00:02:12 2
Total number of neighbors 2
GW4# show ip bgp
BGP table version is 2, local router ID is 192.168.2.12
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 172.16.11.0/24 172.16.14.1 50 12389 i
*> 172.16.13.1 100 12389 i
* 172.16.12.0/24 172.16.14.1 50 12389 i
*> 172.16.13.1 100 12389 i
Displayed 2 routes and 4 total paths
GW4# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
10.10.10.10 1 Full/DROther 31.281s 10.0.10.1 gre1:10.0.10.2 0 0 0
10.10.10.10 1 Init/DROther 31.281s 10.0.20.1 gre2:10.0.20.2 0 0 0
GW4# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 00:02:23
O 10.0.10.0/30 [110/100] is directly connected, gre1, 00:04:38
O 10.0.20.0/30 [110/200] is directly connected, gre2, 00:04:38
O 10.0.30.0/30 [110/200] is directly connected, gre3, 00:04:38
O 10.0.40.0/30 [110/400] is directly connected, gre4, 00:04:38
O 192.168.2.0/24 [110/10] is directly connected, bond0, 00:04:38
Видно, что на шлюзе по протоколу BGP установлено соседство с роутерами. Шлюз получает маршруты до внешних интерфейсов шлюза партнера через соседний основной роутер.
Видно, что на резервном шлюзе по протоколу OSPF установлено соседство с основным центральным шлюзом через gre интерфейсы, идущие через основной интерфейс соседа. Через OSPF резервный шлюз филиала узнает о маршруте по умолчанию.
1.5. Убедитесь, что произошли соответсвующие измеенения в таблицах маршрутизации:
root@GW3:~# ip route show
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.2
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.2
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.2
172.16.4.0/24 dev eth3 proto kernel scope link src 172.16.4.1
192.168.2.0/24 dev bond0 proto kernel scope link src 192.168.2.11
root@GW4:~# ip route show
default via 10.0.10.1 dev gre1 proto 188 metric 20
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.2
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.2
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.2
172.16.3.0/24 dev eth2 proto kernel scope link src 172.16.3.2
172.16.4.0/24 dev eth3 proto kernel scope link src 172.16.4.2
172.16.11.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.12.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.13.0/24 dev eth2 proto kernel scope link src 172.16.13.10
172.16.14.0/24 dev eth3 proto kernel scope link src 172.16.14.10
192.168.2.0/24 dev bond0 proto kernel scope link src 192.168.2.12
1.6. Убедитесь, что через OSPF был получен маршрут до защищаемой сети филиала на основном шлюзе центрального офиса GW1.
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 02:06:55
O 10.0.20.0/30 [110/200] is directly connected, gre2, 02:06:55
O 10.0.30.0/30 [110/200] is directly connected, gre3, 02:06:55
O 10.0.40.0/30 [110/400] is directly connected, gre4, 02:06:55
O>* 192.168.2.0/24 [110/110] via 10.0.10.2, gre1, 01:16:46
1.7. Убедитесь, что через основной интерфейс резервного шлюза филиала установлены IPsec-туннели со всеми интерфейсами основного центрального шлюза. Для этого в linux bash выполните следующую команду:
root@GW4:~# 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 (172.16.13.10,500)-(172.16.12.10,500) active 4260 4168
2 11 (172.16.14.10,500)-(172.16.11.10,500) active 4068 4160
3 12 (172.16.13.10,500)-(172.16.11.10,500) active 1896 1804
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 1 (172.16.13.10,*)-(172.16.12.10,*) 47 ESP tunn 2304 0
2 3 (172.16.14.10,*)-(172.16.11.10,*) 47 ESP tunn 0 2208
3 4 (172.16.13.10,*)-(172.16.11.10,*) 47 ESP tunn 2384 2456
1.8. Убедитесь, что есть связь между устроуствами центрального офиса и филала, для этого запустите ping с устройства Central_host на устройство Branch_host
root@Central_host:~# 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=62 time=2.61 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.59 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.14 ms
64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.49 ms
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.593/2.212/2.616/0.401 ms
1.9. Включите обратно интерфейс eth2 на GW1. Убедитесь, что шлюз перешел в состояние BACKUP (основной шлюз не перехватит роль MASTER, так как в настройках VRRP стоит опция nopreempt), для этого в linux bash выполните следующие команды:.
root@GW3:~# ifconfig eth2 up
root@GW3:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:b9:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.11/24 brd 192.168.2.255 scope global bond0
root@GW3:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:9e:f9:83 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.1/24 brd 172.16.3.255 scope global eth2
root@GW3:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e8:a8 brd ff:ff:ff:ff:ff:ff
inet 172.16.4.1/24 brd 172.16.4.255 scope global eth3
root@GW3:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering FAULT STATE
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Now in FAULT state
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering FAULT STATE
Apr 3 12:34:10 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Now in FAULT state
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: Kernel is reporting: Group(G1) UP
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Leaving FAULT state
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Entering BACKUP STATE
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering BACKUP STATE
Видно, что в лог-файле есть строки (Entering BACKUP STATE), свидетельствующие о переходе шлюза в состояние BACKUP.
2. Смоделируем полный отказ шлюза GW4 и проверим работоспособность стенда. Предпологается что шлюз GW4 находится в состоянии MASTER, а GW3 находится в состоянии BACKUP.
2.1. Выключите шлюз GW4, для этого в linux bash выполните следующую команду:
root@GW4:~# poweroff
2.2. Убедитесь, что шлюз GW3 перешел в состояние MASTER, для этого в linux bash выполните следующие команды:
root@GW3:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:b9:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.11/24 brd 192.168.2.255 scope global bond0
inet 192.168.2.1/24 scope global secondary bond0
root@GW3:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:9e:f9:83 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.1/24 brd 172.16.3.255 scope global eth2
inet 172.16.13.10/24 scope global eth2
root@GW3:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e8:a8 brd ff:ff:ff:ff:ff:ff
inet 172.16.4.1/24 brd 172.16.4.255 scope global eth3
inet 172.16.14.10/24 scope global eth3
root@GW3:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering BACKUP STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Entering MASTER STATE
Видно, что кластерные VIP-адреса присутствуют на интерфейсах bond0, eth2, eth3 и в лог-файле есть строки (Transition to MASTER STATE/ Entering MASTER STATE), свидетельствующие о переходе шлюза в состояние MASTER.
2.3. Убедитесь, что корректно работают протоколы динамической маршрутизации, для этого зайдите в linux bash выполните следующие команды:
root@GW3:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW3# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.2.11, local AS number 65002 vrf-id 0
BGP table version 10
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.13.1 4 12389 130 126 0 0 0 00:00:46 2
172.16.14.1 4 12389 130 131 0 0 0 00:00:47 2
Total number of neighbors 2
GW3# show ip bgp
BGP table version is 10, local router ID is 192.168.2.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.11.0/24 172.16.13.1 100 12389 i
* 172.16.14.1 50 12389 i
*> 172.16.12.0/24 172.16.13.1 100 12389 i
* 172.16.14.1 50 12389 i
Displayed 2 routes and 4 total paths
GW3# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
10.10.10.10 1 Full/DROther 36.521s 10.0.10.1 gre1:10.0.10.2 0 0 0
10.10.10.10 1 Init/DROther 36.521s 10.0.20.1 gre2:10.0.20.2 0 0 0
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 00:01:12
O 10.0.10.0/30 [110/100] is directly connected, gre1, 03:34:55
O 10.0.20.0/30 [110/200] is directly connected, gre2, 03:34:55
O 10.0.30.0/30 [110/200] is directly connected, gre3, 03:34:55
O 10.0.40.0/30 [110/400] is directly connected, gre4, 03:34:55
O 192.168.2.0/24 [110/10] is directly connected, bond0, 03:34:55
Видно, что на шлюзе по протоколу BGP установлено соседство с роутерами. Шлюз получает маршруты до внешних интерфейсов шлюза партнера через соседний основной роутер.
Видно, что на резервном шлюзе по протоколу OSPF установлено соседство с основным шлюзом филиала через gre интерфейсы, идущие через основной интерфейс соседа. Через OSPF шлюз GW1 узнает о защищаемой сети филиала.
2.4. Убедитесь, что произошли соответсвующие измеенения в таблицах маршрутизации:
root@GW3:~# ip route show
default via 10.0.10.1 dev gre1 proto 188 metric 20
10.0.10.0/30 dev gre1 proto kernel scope link src 10.0.10.2
10.0.20.0/30 dev gre2 proto kernel scope link src 10.0.20.2
10.0.30.0/30 dev gre3 proto kernel scope link src 10.0.30.2
10.0.40.0/30 dev gre4 proto kernel scope link src 10.0.40.2
172.16.3.0/24 dev eth2 proto kernel scope link src 172.16.3.1
172.16.4.0/24 dev eth3 proto kernel scope link src 172.16.4.1
172.16.11.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.12.0/24 via 172.16.13.1 dev eth2 proto 186 metric 20
172.16.13.0/24 dev eth2 proto kernel scope link src 172.16.13.10
172.16.14.0/24 dev eth3 proto kernel scope link src 172.16.14.10
192.168.2.0/24 dev bond0 proto kernel scope link src 192.168.2.11
2.5. Убедитесь, что через OSPF был получен маршрут до защищаемой сети филиала на основном шлюзе центрального офиса GW1.
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 03:36:12
O 10.0.20.0/30 [110/200] is directly connected, gre2, 03:36:12
O 10.0.30.0/30 [110/200] is directly connected, gre3, 03:36:12
O 10.0.40.0/30 [110/400] is directly connected, gre4, 03:36:12
O>* 192.168.2.0/24 [110/110] via 10.0.10.2, gre1, 00:02:09
2.6. Убедитесь, что установлены IPsec-туннели. Для этого в linux bash выполните следующую команду:
root@GW3:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 39 (172.16.13.10,500)-(172.16.12.10,500) active 4560 4468
2 44 (172.16.14.10,500)-(172.16.11.10,500) active 4368 4460
3 45 (172.16.13.10,500)-(172.16.11.10,500) active 4296 4204
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 29 (172.16.13.10,*)-(172.16.12.10,*) 47 ESP tunn 1440 0
2 30 (172.16.14.10,*)-(172.16.11.10,*) 47 ESP tunn 0 1344
3 31 (172.16.13.10,*)-(172.16.11.10,*) 47 ESP tunn 1720 2112
2.7. Убедитесь, что есть связь между устроуствами центрального офиса и филала, для этого запустите ping с устройства Central_host на устройство Branch_host
root@Central_host:~# 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_req=1 ttl=64 time=0.343 ms
64 bytes from 192.168.2.100: icmp_req=2 ttl=64 time=0.430 ms
64 bytes from 192.168.2.100: icmp_req=3 ttl=64 time=0.541 ms
64 bytes from 192.168.2.100: icmp_req=4 ttl=64 time=0.663 ms
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 0.343/0.494/0.663/0.121 ms
2.8. Запустите основной шлюз кластера, дождитесь его полной загрузки и убедитесь, что она перешла в состояние BACKUP, для этого в linux bash выполните следующие команды:
root@GW4:~# ip address show dev bond0
11: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:50:56:9e:98:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0
root@GW4:~# ip address show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:e6:11 brd ff:ff:ff:ff:ff:ff
inet 172.16.3.2/24 brd 172.16.3.255 scope global eth2
root@GW4:~# ip address show dev eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:50:56:9e:ec:2b brd ff:ff:ff:ff:ff:ff
inet 172.16.4.2/24 brd 172.16.4.255 scope global eth3
Из-за особенностей сценария и работы пакета keepaliveв нельзя удостовериться, что при загрузке GW4 осталася в состоянии BACKUP. Можно только убедиться, что шлюз GW3 остался в состоянии MASTER
root@GW3:~# tail -n 300 /var/log/cspvpngate.log | grep Keepalived | tail -n 10
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to BACKUP state
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 3 12:39:01 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering BACKUP STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Transition to MASTER STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Group(G1) Syncing instances to MASTER state
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 3 14:04:56 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Transition to MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_3) Entering MASTER STATE
Apr 3 14:04:57 GW3 Keepalived_vrrp[2871]: VRRP_Instance(VI_2) Entering MASTER STATE
Предпологается что шлюзы GW1 и GW3 находится в состоянии MASTER, а GW2 и GW4 находится в состоянии BACKUP. Смоделируем полный отказ основного роутера Router1 и проверим работоспособность стенда.
1. Выключите роутер Router1:
root@GW4:~# poweroff
2. Спустя 2-3 минуты, убедитесь, что на шлюзе GW1 изменинлось состояние связи с 172.16.11.1:
root@GW1:~# vtysh
Hello, this is FRRouting (version 4.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
GW1# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.1.11, local AS number 65001 vrf-id 0
BGP table version 12
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.11.1 4 12389 47 54 0 0 000:00:16 Connect
172.16.12.1 4 12389 83 81 0 0 0 00:13:03 2
Total number of neighbors 2
Состояние связи изменилось с Established на Idle, и потом на Connect.
Чтобы уменьше время ожидания надо изменить таймеры в настройках bgp маршрутизациию с помощью команды timers bgp <keepalive> <holdtime>. По умолчанию значения keepalive равно 30, а holdtime равно 180. Чтобы уменьшить время между отправкой пакета до 10 секунд, а время хранения состояния соединения с последнего удачного keepalive пакета введите строки:
GW1# configure terminal
GW1(config)# router bgp
GW1(config-router)# timers bgp 10 30
GW1(config-router)# end
Важно! При отказе только внешнего интерфейса роутера Router1 состояние связи не изменится, из-за обмена keepalive пакетами между шлюзом и роутером, и время ожидания будет зависеть от настроек Router1
3. Убедитесь, что маршруты не транслируются от 172.16.11.1:
GW1# show ip bgp
BGP table version is 12, local router ID is 192.168.1.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.13.0/24 172.16.12.1 50 12389 i
*> 172.16.14.0/24 172.16.12.1 50 12389 i
Displayed 2 routes and 2 total paths
4. Убедитесь, что соседство по OSPF устанавливается через gre3:
GW1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
30.30.30.30 1 Full/DROther 32.010s 10.0.30.2 gre3:10.0.30.1 0 0 0
GW3# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
10.10.10.10 1 Full/DROther 32.030s 10.0.30.1 gre3:10.0.30.2 0 0 0
10.10.10.10 1 Init/DROther 32.029s 10.0.40.1 gre4:10.0.40.2 0 0 0
5. Убедитесь, что шлюзы обменялись маршрутами по OSPF:
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 00:35:54
O 10.0.20.0/30 [110/200] is directly connected, gre2, 00:35:54
O 10.0.30.0/30 [110/200] is directly connected, gre3, 00:35:54
O 10.0.40.0/30 [110/400] is directly connected, gre4, 00:35:54
O>* 192.168.2.0/24 [110/210] via 10.0.30.2, gre3, 00:04:16
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.30.1, gre3, 00:08:33
O 10.0.10.0/30 [110/100] is directly connected, gre1, 05:10:39
O 10.0.20.0/30 [110/200] is directly connected, gre2, 05:10:39
O 10.0.30.0/30 [110/200] is directly connected, gre3, 05:10:39
O 10.0.40.0/30 [110/400] is directly connected, gre4, 05:10:39
O 192.168.2.0/24 [110/10] is directly connected, bond0, 05:10:39
6. Убедитесь, что через основной интерфейс резервного центрального шлюза установлены IPsec-туннели со всеми интерфейсами основного шлюза филиала. Для этого в linux bash выполните следующую команду:
root@GW1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 228 (172.16.12.10,500)-(172.16.13.10,500) active 19160 19004
2 229 (172.16.12.10,500)-(172.16.14.10,500) active 21260 21168
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 71 (172.16.12.10,*)-(172.16.14.10,*) 47 ESP tunn 9504 0
2 72 (172.16.12.10,*)-(172.16.13.10,*) 47 ESP tunn 12360 36736
root@GW3:~# sa_mgr show
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 196 (172.16.14.10,500)-(172.16.12.10,500) active 21468 21560
2 197 (172.16.13.10,500)-(172.16.12.10,500) active 19304 19460
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 70 (172.16.14.10,*)-(172.16.12.10,*) 47 ESP tunn 0 9504
2 71 (172.16.13.10,*)-(172.16.12.10,*) 47 ESP tunn 37456 12464
7. Убедитесь, что есть связь между устроуствами центрального офиса и филала, для этого запустите ping с устройства Central_host на устройство Branch_host
root@Central_host:~# 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=62 time=1.86 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=1.68 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.04 ms
64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.12 ms
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.684/1.928/2.129/0.179 ms
8. Запустите основной роутер Router1. Убедитесь что стенд возвращается в первоначальное состояние:
GW1# show ip bgp summary
IPv4 Unicast Summary:
BGP router identifier 192.168.1.11, local AS number 65001 vrf-id 0
BGP table version 6
RIB entries 3, using 456 bytes of memory
Peers 2, using 40 KiB of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
172.16.11.1 4 12389 12 13 0 0 0 00:00:17 2
172.16.12.1 4 12389 31 29 0 0 0 00:26:11 2
Total number of neighbors 2
GW1# show ip bgp
BGP table version is 6, local router ID is 192.168.1.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.13.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
*> 172.16.14.0/24 172.16.11.1 100 12389 i
* 172.16.12.1 50 12389 i
Displayed 2 routes and 4 total paths
GW1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
30.30.30.30 1 Full/DROther 38.448s 10.0.10.2 gre1:10.0.10.1 0 0 0
30.30.30.30 1 Init/DROther 38.447s 10.0.30.2 gre3:10.0.30.1 0 0 0
GW3# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
10.10.10.10 1 Full/DROther 34.530s 10.0.10.1 gre1:10.0.10.2 0 0 0
10.10.10.10 1 Init/DROther 34.529s 10.0.20.1 gre2:10.0.20.2 0 0 0
GW1# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O 10.0.10.0/30 [110/100] is directly connected, gre1, 00:28:25
O 10.0.20.0/30 [110/200] is directly connected, gre2, 00:28:25
O 10.0.30.0/30 [110/200] is directly connected, gre3, 00:28:25
O 10.0.40.0/30 [110/400] is directly connected, gre4, 00:28:25
O>* 192.168.2.0/24 [110/110] via 10.0.10.2, gre1, 00:02:25
GW3# show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
> - selected route, * - FIB route
O>* 0.0.0.0/0 [110/10] via 10.0.10.1, gre1, 00:02:26
O 10.0.10.0/30 [110/100] is directly connected, gre1, 06:00:39
O 10.0.20.0/30 [110/200] is directly connected, gre2, 06:00:39
O 10.0.30.0/30 [110/200] is directly connected, gre3, 06:00:39
O 10.0.40.0/30 [110/400] is directly connected, gre4, 06:00:39
O 192.168.2.0/24 [110/10] is directly connected, bond0, 06:00:39
root@GW1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 232 (172.16.11.10,500)-(172.16.13.10,500) active 2160 2004
2 233 (172.16.11.10,500)-(172.16.14.10,500) active 2160 2068
3 234 (172.16.12.10,500)-(172.16.13.10,500) active 2004 2160
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 75 (172.16.11.10,*)-(172.16.13.10,*) 47 ESP tunn 688 688
2 76 (172.16.11.10,*)-(172.16.14.10,*) 47 ESP tunn 192 0
3 77 (172.16.12.10,*)-(172.16.13.10,*) 47 ESP tunn 0 192
root@GW3:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 200 (172.16.14.10,500)-(172.16.11.10,500) active 2968 3060
2 201 (172.16.13.10,500)-(172.16.11.10,500) active 2904 3060
3 202 (172.16.13.10,500)-(172.16.12.10,500) active 3060 2904
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 74 (172.16.13.10,*)-(172.16.11.10,*) 47 ESP tunn 1208 1208
2 75 (172.16.14.10,*)-(172.16.11.10,*) 47 ESP tunn 0 672
3 76 (172.16.13.10,*)-(172.16.12.10,*) 47 ESP tunn 672 0
root@Central_host:~# 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=62 time=1.87 ms
64 bytes from 192.168.2.100: icmp_seq=2 ttl=62 time=2.15 ms
64 bytes from 192.168.2.100: icmp_seq=3 ttl=62 time=2.19 ms
64 bytes from 192.168.2.100: icmp_seq=4 ttl=62 time=2.32 ms
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.872/2.135/2.326/0.165 ms
Проверку с полным отключением Router3 и отключением Router1 и Router3 одновременно повторите по анологии
Смоделируем отказ основного роутера Router1 и проверим работоспособность стенда.
1. Добавьте второй IP адрес на устройстве Branch_host:
root@Branch_host:~# ip add add 192.168.2.101/24 dev ens32
2. Запустите утилиту ping с хоста Central_host на адрес 192.168.2.100 и на адрес 192.168.2.101 с интервалом 0.1.
root@Branch_host:~# ping 192.168.2.100 -i 0.1
root@Branch_host:~# ping 192.168.2.101 -i 0.1
3. Данный трафик будет идти по разным каналам. Чтобы убедится в этом, на шлюзе GW1 введите следующие команды:
root@GW1:~# tcpdump -i eth0 -n host 192.168.2.100 -c 10
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
17:06:02.516011 IP 192.168.1.100 > 192.168.2.101: ICMP echo request, id 11270, seq 695, length 64
17:06:02.517646 IP 192.168.2.101 > 192.168.1.100: ICMP echo reply, id 11270, seq 695, length 64
17:06:02.616620 IP 192.168.1.100 > 192.168.2.101: ICMP echo request, id 11270, seq 696, length 64
17:06:02.617617 IP 192.168.2.101 > 192.168.1.100: ICMP echo reply, id 11270, seq 696, length 64
17:06:02.717447 IP 192.168.1.100 > 192.168.2.101: ICMP echo request, id 11270, seq 697, length 64
17:06:02.718810 IP 192.168.2.101 > 192.168.1.100: ICMP echo reply, id 11270, seq 697, length 64
17:06:02.818547 IP 192.168.1.100 > 192.168.2.101: ICMP echo request, id 11270, seq 698, length 64
17:06:02.819651 IP 192.168.2.101 > 192.168.1.100: ICMP echo reply, id 11270, seq 698, length 64
17:06:02.919425 IP 192.168.1.100 > 192.168.2.101: ICMP echo request, id 11270, seq 699, length 64
17:06:02.920752 IP 192.168.2.101 > 192.168.1.100: ICMP echo reply, id 11270, seq 699, length 64
10 packets captured
13 packets received by filter
0 packets dropped by kernel
root@GW1:~# tcpdump -i eth1 -n host 192.168.2.101 -c 10
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:09:57.359910 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 11257, seq 3361, length 64
17:09:57.361052 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 11257, seq 3361, length 64
17:09:57.460799 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 11257, seq 3362, length 64
17:09:57.462286 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 11257, seq 3362, length 64
17:09:57.561211 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 11257, seq 3363, length 64
17:09:57.562469 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 11257, seq 3363, length 64
17:09:57.662248 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 11257, seq 3364, length 64
17:09:57.663513 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 11257, seq 3364, length 64
17:09:57.762317 IP 192.168.1.100 > 192.168.2.100: ICMP echo request, id 11257, seq 3365, length 64
17:09:57.763561 IP 192.168.2.100 > 192.168.1.100: ICMP echo reply, id 11257, seq 3365, length 64
10 packets captured
14 packets received by filter
0 packets dropped by kernel
4. Отключите на коммутаторе один из линков.
5. Данный линк перейдет в состояние DOWN:
root@GW1:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 1
Actor Key: 33
Partner Key: 7
Partner Mac Address: 00:50:56:9e:54:f6
Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: 00:50:56:9e:ce:4a
Aggregator ID: 2
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:50:56:9e:44:e7
Aggregator ID: 1
Slave queue ID: 0
root@Central_switch:~# ovs-appctl lacp/show bond0
---- bond0 ----
Status: active negotiated
sys_id: 00:50:56:9e:54:f6
sys_priority: 65534
aggregation key: 7
lacp_time: slow
slave: ens35: default detached
port_id: 8
prot_priority: 65535
may_enable: false
actor sys_id: 00:50:56:9e:54:f6
actor sys_priority: 65534
actor prot_id: 8
actor prot_priority: 65535
actor key: 7
actor state: activity aggregation didaulted
partner sys_id: 00:00:00:00:00:00
partner sys_priority: 0
partner prot_id: 0
partner prot_priority: 0
partner key: 0
partner state:
slave: ens36: current attached
port_id: 7
prot_priority: 65535
may_enable: true
actor sys_id: 00:50:56:9e:54:f6
actor sys_priority: 65534
actor prot_id: 7
actor prot_priority: 65535
actor key: 7
actor state: activity aggregation synchronized collecting distributing
partner sys_id: 00:50:56:9e:ce:4a
partner sys_priority: 65535
partner prot_id: 2
partner prot_priority: 255
partner key: 33
partner state: activity aggregation synchronized collecting distributing
6. При этом небольшое количество пакетов пропадет.
64 bytes from 192.168.2.100: icmp_seq=83 ttl=62 time=1.69 ms
64 bytes from 192.168.2.100: icmp_seq=84 ttl=62 time=1.63 ms
64 bytes from 192.168.2.100: icmp_seq=85 ttl=62 time=2.15 ms
64 bytes from 192.168.2.100: icmp_seq=86 ttl=62 time=1.68 ms
64 bytes from 192.168.2.100: icmp_seq=112 ttl=62 time=1.18 ms
64 bytes from 192.168.2.100: icmp_seq=113 ttl=62 time=1.45 ms
64 bytes from 192.168.2.100: icmp_seq=114 ttl=62 time=1.44 ms
7. Влючите обратно линк.
8. При этом небольшое количество пакетов пропадет.
64 bytes from 192.168.2.100: icmp_seq=202 ttl=62 time=1.68 ms
64 bytes from 192.168.2.100: icmp_seq=203 ttl=62 time=1.53 ms
64 bytes from 192.168.2.100: icmp_seq=204 ttl=62 time=1.44 ms
From 192.168.1.100 icmp_seq=244 Destination Host Unreachable
...
From 192.168.1.100 icmp_seq=303 Destination Host Unreachable
64 bytes from 192.168.2.100: icmp_seq=304 ttl=62 time=2.70 ms
64 bytes from 192.168.2.100: icmp_seq=305 ttl=62 time=2.09 ms
64 bytes from 192.168.2.100: icmp_seq=306 ttl=62 time=2.21 ms
В данном случае сессия перестроилась за 10 секунд
Аналогично проверьте GW2, GW3 и GW4. Для проверки шлюзов GW2 и GW4 отключите один из внешних портов GW1 и GW3, чтобы GW2 и GW4 перешли в состояние MASTER и трафик шел через них.
Содержимое файла/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 ens32
iface ens32 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.10
Содержимое файла/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 ens32
iface ens32 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
auto ens32
iface ens32 inet static
address 100.64.0.100
netmask 255.255.255.0
gateway 100.64.0.1
auto ens34
iface ens34 inet static
address 192.168.1.1
netmask 255.255.255.0
Вывод команды iproute:
root@debian:~# ip route
default via 100.64.0.1 dev ens32 onlink
100.64.0.0/24 dev ens32 proto kernel scope link src 100.64.0.100
192.168.1.0/24 dev ens34 proto kernel scope link src 192.168.1.1
192.168.2.0/24 via 192.168.1.10 dev ens34
Содержимое файла/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
auto ens32
iface ens32 inet manual
auto ens34
iface ens34 inet manual
auto ens35
iface ens35 inet manual
auto ens36
iface ens36 inet manual
auto ens37
iface ens37 inet manual
auto ens38
iface ens38 inet manual
Содержимое файла/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
auto ens32
iface ens32 inet manual
auto ens34
iface ens34 inet manual
auto ens35
iface ens35 inet manual
auto ens36
iface ens36 inet manual
auto ens37
iface ens37 inet manual
Содержимое файла/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 ens32
iface ens32 inet static
address 10.0.1.1
netmask 255.255.255.0
auto ens34
iface ens34 inet static
address 10.0.2.1
netmask 255.255.255.0
auto ens35
iface ens35 inet static
address 10.0.3.1
netmask 255.255.255.0
auto ens36
iface ens36 inet static
address 10.0.4.1
netmask 255.255.255.0
Настройки сервиса FRR (vtysh):
frr version 6.0.2
frr defaults traditional
hostname debian
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 12389
neighbor AS12389 peer-group
neighbor AS12389 remote-as 12389
neighbor 10.0.1.10 peer-group AS12389
neighbor 10.0.2.10 peer-group AS12389
neighbor 10.0.3.10 peer-group AS12389
neighbor 10.0.4.10 peer-group AS12389
!
address-family ipv4 unicast
network 10.0.1.0/24
network 10.0.2.0/24
network 10.0.3.0/24
network 10.0.4.0/24
neighbor AS12389 route-reflector-client
neighbor AS12389 next-hop-self
exit-address-family
!
line vty
!
end
Содержимое файла/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 S-Terra gate
auto ens32
iface ens32 inet static
address 172.16.11.1
netmask 255.255.255.0
# To other routers
auto ens34
iface ens34 inet static
address 10.0.1.10
netmask 255.255.255.0
Настройки сервиса FRR (vtysh):
frr version 6.0.2
frr defaults traditional
hostname Router1
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 12389
neighbor 10.0.1.1 remote-as 12389
neighbor 172.16.11.10 remote-as 65001
!
address-family ipv4 unicast
network 172.16.11.0/24
neighbor 10.0.1.1 next-hop-self
neighbor 172.16.11.10 prefix-list BGPADDRESS out
exit-address-family
!
ip prefix-list BGPADDRESS seq 5 permit 172.16.13.0/24
ip prefix-list BGPADDRESS seq 10 permit 172.16.14.0/24
!
line vty
!
end
Содержимое файла/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 S-Terra gate
auto ens32
iface ens32 inet static
address 172.16.12.1
netmask 255.255.255.0
# To other routers
auto ens34
iface ens34 inet static
address 10.0.2.10
netmask 255.255.255.0
Настройки сервиса FRR (vtysh):
frr version 6.0.2
frr defaults traditional
hostname Router2
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 12389
neighbor 10.0.2.1 remote-as 12389
neighbor 172.16.12.10 remote-as 65001
!
address-family ipv4 unicast
network 172.16.12.0/24
neighbor 10.0.2.1 next-hop-self
neighbor 172.16.12.10 prefix-list BGPADDRESS out
exit-address-family
!
ip prefix-list BGPADDRESS seq 5 permit 172.16.13.0/24
ip prefix-list BGPADDRESS seq 10 permit 172.16.14.0/24
!
line vty
!
end
Содержимоефайла/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 S-Terra gate
auto ens32
iface ens32 inet static
address 172.16.13.1
netmask 255.255.255.0
# To other routers
auto ens34
iface ens34 inet static
address 10.0.3.10
netmask 255.255.255.0
Настройки сервиса FRR (vtysh):
frr version 6.0.2
frr defaults traditional
hostname Router3
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 12389
neighbor 10.0.3.1 remote-as 12389
neighbor 172.16.13.10 remote-as 65002
!
address-family ipv4 unicast
network 172.16.13.0/24
neighbor 10.0.3.1 next-hop-self
neighbor 172.16.13.10 prefix-list BGPADDRESS out
exit-address-family
!
ip prefix-list BGPADDRESS seq 5 permit 172.16.11.0/24
ip prefix-list BGPADDRESS seq 10 permit 172.16.12.0/24
!
line vty
!
end
Содержимое файла/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 S-Terra gate
auto ens32
iface ens32 inet static
address 172.16.14.1
netmask 255.255.255.0
# To other routers
auto ens34
iface ens34 inet static
address 10.0.4.10
netmask 255.255.255.0
Настройки сервиса FRR (vtysh):
frr version 6.0.2
frr defaults traditional
hostname Router4
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 12389
neighbor 10.0.4.1 remote-as 12389
neighbor 172.16.14.10 remote-as 65002
!
address-family ipv4 unicast
network 172.16.14.0/24
neighbor 10.0.4.1 next-hop-self
neighbor 172.16.14.10 prefix-list BGPADDRESS out
exit-address-family
!
ip prefix-list BGPADDRESS seq 5 permit 172.16.11.0/24
ip prefix-list BGPADDRESS seq 10 permit 172.16.12.0/24
!
line vty
!
end
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
}
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.11.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.12.10/24
}
}
Содержимое файла/etc/network/interfaces.d/gre1:
auto gre1
iface gre1 inet static
address 10.0.10.1
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.13.10 local 172.16.11.10
pre-up ip link set gre1 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre2:
auto gre2
iface gre2 inet static
address 10.0.20.1
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.14.10 local 172.16.11.10
pre-up ip link set gre2 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre3:
auto gre3
iface gre3 inet static
address 10.0.30.1
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.13.10 local 172.16.12.10
pre-up ip link set gre3 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre4:
auto gre4
iface gre4 inet static
address 10.0.40.1
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.14.10 local 172.16.12.10
pre-up ip link set gre4 mtu 1400
frr version 4.1-dev
frr defaults traditional
hostname GW1
username sterra nopassword
!
service integrated-vtysh-config
!
log syslog informational
!
interface gre1
ip ospf cost 100
!
interface gre2
ip ospf cost 200
!
interface gre3
ip ospf cost 200
!
interface gre4
ip ospf cost 400
!
router bgp 65001
neighbor 172.16.11.1 remote-as 12389
neighbor 172.16.12.1 remote-as 12389
!
address-family ipv4 unicast
neighbor 172.16.11.1 weight 100
neighbor 172.16.11.1 prefix-list NONE out
neighbor 172.16.12.1 weight 50
neighbor 172.16.12.1 prefix-list NONE out
exit-address-family
!
router ospf
ospf router-id 10.10.10.10
passive-interface bond0
passive-interface eth0
passive-interface eth1
passive-interface eth2
passive-interface eth3
passive-interface gre0
network 10.0.10.0/30 area 0.0.0.0
network 10.0.20.0/30 area 0.0.0.0
network 10.0.30.0/30 area 0.0.0.0
network 10.0.40.0/30 area 0.0.0.0
default-information originate
!
line vty
!
end
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 1 3
crypto isakmp keepalive retry-count 3
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW1
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended IPSEC_MAIN_MAIN
permit gre host 172.16.11.10 host 172.16.13.10
!
ip access-list extended IPSEC_MAIN_BACKUP
permit gre host 172.16.11.10 host 172.16.14.10
!
ip access-list extended IPSEC_BACKUP_MAIN
permit gre host 172.16.12.10 host 172.16.13.10
!
ip access-list extended IPSEC_BACKUP_BACKUP
permit gre host 172.16.12.10 host 172.16.14.10
!
ip access-list extended FIREWALL_ACL_MAIN
deny gre host 172.16.12.10 any
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
ip access-list extended FIREWALL_ACL_BACKUP
deny gre host 172.16.11.10 any
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
ip access-list extended FIREWALL_ACL_BOND
deny ip any 172.16.13.0 0.0.0.255
deny ip any 172.16.14.0 0.0.0.255
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
!
crypto map CMAP 1 ipsec-isakmp
match address IPSEC_MAIN_MAIN
set transform-set TSET
set local-address 172.16.11.10
set peer 172.16.13.10
crypto map CMAP 2 ipsec-isakmp
match address IPSEC_MAIN_BACKUP
set transform-set TSET
set local-address 172.16.11.10
set peer 172.16.14.10
!
crypto map CMAP2 1 ipsec-isakmp
match address IPSEC_BACKUP_MAIN
set transform-set TSET
set local-address 172.16.12.10
set peer 172.16.13.10
crypto map CMAP2 2 ipsec-isakmp
match address IPSEC_BACKUP_BACKUP
set transform-set TSET
set local-address 172.16.12.10
set peer 172.16.14.10
!
interface GigabitEthernet0/2
ip address 172.16.1.1 255.255.255.0
ip address 172.16.11.10 255.255.255.248 secondary
ip access-group FIREWALL_ACL_MAIN out
crypto map CMAP
!
interface GigabitEthernet0/3
ip address 172.16.2.1 255.255.255.0
ip address 172.16.12.10 255.255.255.248 secondary
ip access-group FIREWALL_ACL_BACKUP out
crypto map CMAP2
!
interface GigabitEthernet1/0
ip address 192.168.1.11 255.255.255.0
ip address 192.168.1.10 255.255.255.0 secondary
ip access-group FIREWALL_ACL_BOND out
!
!
ip route 0.0.0.0 0.0.0.0 192.168.1.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
crypto pki certificate chain s-terra_technological_trustpoint
certificate 2B6E3351FD6EB2AD48200203CB5BA141
3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130
...
E34EE9640D905032C1F1E3B4491257D5
quit
!
end
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
}
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
172.16.11.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
172.16.12.10/24
}
}
Содержимое файла/etc/network/interfaces.d/gre1:
auto gre1
iface gre1 inet static
address 10.0.10.1
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.13.10 local 172.16.11.10
pre-up ip link set gre1 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre2:
auto gre2
iface gre2 inet static
address 10.0.20.1
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.14.10 local 172.16.11.10
pre-up ip link set gre2 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre3:
auto gre3
iface gre3 inet static
address 10.0.30.1
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.13.10 local 172.16.12.10
pre-up ip link set gre3 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre4:
auto gre4
iface gre4 inet static
address 10.0.40.1
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.14.10 local 172.16.12.10
pre-up ip link set gre4 mtu 1400
frr version 4.1-dev
frr defaults traditional
hostname GW2
username sterra nopassword
!
service integrated-vtysh-config
!
log syslog informational
!
interface gre1
ip ospf cost 100
!
interface gre2
ip ospf cost 200
!
interface gre3
ip ospf cost 200
!
interface gre4
ip ospf cost 400
!
router bgp 65001
neighbor 172.16.11.1 remote-as 12389
neighbor 172.16.12.1 remote-as 12389
!
address-family ipv4 unicast
neighbor 172.16.11.1 weight 100
neighbor 172.16.11.1 prefix-list NONE out
neighbor 172.16.12.1 weight 50
neighbor 172.16.12.1 prefix-list NONE out
exit-address-family
!
router ospf
ospf router-id 20.20.20.20
passive-interface bond0
passive-interface eth0
passive-interface eth1
passive-interface eth2
passive-interface eth3
passive-interface gre0
network 10.0.10.0/30 area 0.0.0.0
network 10.0.20.0/30 area 0.0.0.0
network 10.0.30.0/30 area 0.0.0.0
network 10.0.40.0/30 area 0.0.0.0
default-information originate
!
line vty
!
end
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 1 3
crypto isakmp keepalive retry-count 3
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW2
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended IPSEC_MAIN_MAIN
permit gre host 172.16.11.10 host 172.16.13.10
!
ip access-list extended IPSEC_MAIN_BACKUP
permit gre host 172.16.11.10 host 172.16.14.10
!
ip access-list extended IPSEC_BACKUP_MAIN
permit gre host 172.16.12.10 host 172.16.13.10
!
ip access-list extended IPSEC_BACKUP_BACKUP
permit gre host 172.16.12.10 host 172.16.14.10
!
ip access-list extended FIREWALL_ACL_MAIN
deny gre host 172.16.12.10 any
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
ip access-list extended FIREWALL_ACL_BACKUP
deny gre host 172.16.11.10 any
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
ip access-list extended FIREWALL_ACL_BOND
deny ip any 172.16.13.0 0.0.0.255
deny ip any 172.16.14.0 0.0.0.255
deny ip any 192.168.2.0 0.0.0.255
permit ip any any
!
!
crypto map CMAP 1 ipsec-isakmp
match address IPSEC_MAIN_MAIN
set transform-set TSET
set local-address 172.16.11.10
set peer 172.16.13.10
crypto map CMAP 2 ipsec-isakmp
match address IPSEC_MAIN_BACKUP
set transform-set TSET
set local-address 172.16.11.10
set peer 172.16.14.10
!
crypto map CMAP2 1 ipsec-isakmp
match address IPSEC_BACKUP_MAIN
set transform-set TSET
set local-address 172.16.12.10
set peer 172.16.13.10
crypto map CMAP2 2 ipsec-isakmp
match address IPSEC_BACKUP_BACKUP
set transform-set TSET
set local-address 172.16.12.10
set peer 172.16.14.10
!
interface GigabitEthernet0/2
ip address 172.16.1.2 255.255.255.0
ip access-group FIREWALL_ACL_MAIN out
crypto map CMAP
!
interface GigabitEthernet0/3
ip address 172.16.2.2 255.255.255.0
ip access-group FIREWALL_ACL_BACKUP out
crypto map CMAP2
!
interface GigabitEthernet1/0
ip address 192.168.1.12 255.255.255.0
ip access-group FIREWALL_ACL_BOND out
!
!
ip route 0.0.0.0 0.0.0.0 192.168.1.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
crypto pki certificate chain s-terra_technological_trustpoint
certificate 2B6E3351FD6EB2AD48200203CB5BA141
3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130
...
E34EE9640D905032C1F1E3B4491257D5
quit
!
end
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
192.168.2.1/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
}
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.13.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 100
advert_int 1
nopreempt
virtual_ipaddress {
172.16.14.10/24
}
}
Содержимое файла /etc/network/interfaces.d/gre1:
auto gre1
iface gre1 inet static
address 10.0.10.2
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.11.10 local 172.16.13.10
pre-up ip link set gre1 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre2:
auto gre2
iface gre2 inet static
address 10.0.20.2
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.11.10 local 172.16.14.10
pre-up ip link set gre2 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre3:
auto gre3
iface gre3 inet static
address 10.0.30.2
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.12.10 local 172.16.13.10
pre-up ip link set gre3 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre4:
auto gre4
iface gre4 inet static
address 10.0.40.2
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.12.10 local 172.16.14.10
pre-up ip link set gre4 mtu 1400
frr version 4.1-dev
frr defaults traditional
hostname GW3
username sterra nopassword
!
service integrated-vtysh-config
!
log syslog informational
!
interface gre1
ip ospf cost 100
!
interface gre2
ip ospf cost 200
!
interface gre3
ip ospf cost 200
!
interface gre4
ip ospf cost 400
!
router bgp 65002
neighbor 172.16.13.1 remote-as 12389
neighbor 172.16.14.1 remote-as 12389
!
address-family ipv4 unicast
neighbor 172.16.13.1 weight 100
neighbor 172.16.13.1 prefix-list NONE out
neighbor 172.16.14.1 weight 50
neighbor 172.16.14.1 prefix-list NONE out
exit-address-family
!
router ospf
ospf router-id 30.30.30.30
passive-interface bond0
passive-interface eth0
passive-interface eth1
passive-interface eth2
passive-interface eth3
passive-interface gre0
network 10.0.10.0/30 area 0.0.0.0
network 10.0.20.0/30 area 0.0.0.0
network 10.0.30.0/30 area 0.0.0.0
network 10.0.40.0/30 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
!
line vty
!
end
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 1 3
crypto isakmp keepalive retry-count 3
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW3
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended IPSEC_MAIN_MAIN
permit gre host 172.16.13.10 host 172.16.11.10
!
ip access-list extended IPSEC_MAIN_BACKUP
permit gre host 172.16.13.10 host 172.16.12.10
!
ip access-list extended IPSEC_BACKUP_MAIN
permit gre host 172.16.14.10 host 172.16.11.10
!
ip access-list extended IPSEC_BACKUP_BACKUP
permit gre host 172.16.14.10 host 172.16.12.10
!
ip access-list extended FIREWALL_ACL_MAIN
deny gre host 172.16.14.10 any
deny ip 192.168.2.0 0.0.0.255 any
permit ip any any
!
ip access-list extended FIREWALL_ACL_BACKUP
deny gre host 172.16.13.10 any
deny ip 192.168.2.0 0.0.0.255 any
permit ip any any
!
!
crypto map CMAP 1 ipsec-isakmp
match address IPSEC_MAIN_MAIN
set transform-set TSET
set local-address 172.16.13.10
set peer 172.16.11.10
crypto map CMAP 2 ipsec-isakmp
match address IPSEC_MAIN_BACKUP
set transform-set TSET
set local-address 172.16.13.10
set peer 172.16.12.10
!
crypto map CMAP2 1 ipsec-isakmp
match address IPSEC_BACKUP_MAIN
set transform-set TSET
set local-address 172.16.14.10
set peer 172.16.11.10
crypto map CMAP2 2 ipsec-isakmp
match address IPSEC_BACKUP_BACKUP
set transform-set TSET
set local-address 172.16.14.10
set peer 172.16.12.10
!
interface GigabitEthernet0/2
ip address 172.16.3.1 255.255.255.0
ip address 172.16.13.10 255.255.255.0 secondary
ip access-group FIREWALL_ACL_MAIN out
crypto map CMAP
!
interface GigabitEthernet0/3
ip address 172.16.4.1 255.255.255.0
ip address 172.16.14.10 255.255.255.0 secondary
ip access-group FIREWALL_ACL_BACKUP out
crypto map CMAP2
!
interface GigabitEthernet1/0
ip address 192.168.2.11 255.255.255.0
ip address 192.168.2.1 255.255.255.0 secondary
!
!
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
crypto pki certificate chain s-terra_technological_trustpoint
certificate 2B6E3351FD6EB2AD48200203CB5BA141
3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130
...
E34EE9640D905032C1F1E3B4491257D5
quit
!
end
vrrp_script check_run_service_vpnsvc {
script "/etc/keepalived/scripts/check_run_service 'vpnsvc'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_ospfd {
script "/etc/keepalived/scripts/check_run_service 'ospfd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_bgpd {
script "/etc/keepalived/scripts/check_run_service 'bgpd'"
fall 5
rise 5
interval 1
}
vrrp_script check_run_service_zebra {
script "/etc/keepalived/scripts/check_run_service 'zebra'"
fall 5
rise 5
interval 1
}
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_3
}
}
vrrp_instance VI_1 {
interface bond0
garp_master_delay 10
virtual_router_id 51
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
192.168.2.1/24
}
track_script {
check_run_service_vpnsvc
check_run_service_ospfd
check_run_service_bgpd
check_run_service_zebra
}
}
}
vrrp_instance VI_2 {
interface eth2
garp_master_delay 10
virtual_router_id 52
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
172.16.13.10/24
}
}
vrrp_instance VI_3 {
interface eth3
garp_master_delay 10
virtual_router_id 53
priority 50
advert_int 1
nopreempt
virtual_ipaddress {
172.16.14.10/24
}
}
Содержимое файла/etc/network/interfaces.d/gre1:
auto gre1
iface gre1 inet static
address 10.0.10.2
netmask 255.255.255.252
pre-up ip tunnel add gre1 mode gre key 1 ttl 255 tos inherit remote 172.16.11.10 local 172.16.13.10
pre-up ip link set gre1 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre2:
auto gre2
iface gre2 inet static
address 10.0.20.2
netmask 255.255.255.252
pre-up ip tunnel add gre2 mode gre key 2 ttl 255 tos inherit remote 172.16.11.10 local 172.16.14.10
pre-up ip link set gre2 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre3:
auto gre3
iface gre3 inet static
address 10.0.30.2
netmask 255.255.255.252
pre-up ip tunnel add gre3 mode gre key 3 ttl 255 tos inherit remote 172.16.12.10 local 172.16.13.10
pre-up ip link set gre3 mtu 1400
Содержимое файла/etc/network/interfaces.d/gre4:
auto gre4
iface gre4 inet static
address 10.0.40.2
netmask 255.255.255.252
pre-up ip tunnel add gre4 mode gre key 4 ttl 255 tos inherit remote 172.16.12.10 local 172.16.14.10
pre-up ip link set gre4 mtu 1400
frr version 4.1-dev
frr defaults traditional
hostname GW4
username sterra nopassword
!
service integrated-vtysh-config
!
log syslog informational
!
interface gre1
ip ospf cost 100
!
interface gre2
ip ospf cost 200
!
interface gre3
ip ospf cost 200
!
interface gre4
ip ospf cost 400
!
router bgp 65002
neighbor 172.16.13.1 remote-as 12389
neighbor 172.16.14.1 remote-as 12389
!
address-family ipv4 unicast
neighbor 172.16.13.1 weight 100
neighbor 172.16.13.1 prefix-list NONE out
neighbor 172.16.14.1 weight 50
neighbor 172.16.14.1 prefix-list NONE out
exit-address-family
!
router ospf
ospf router-id 40.40.40.40
passive-interface bond0
passive-interface eth0
passive-interface eth1
passive-interface eth2
passive-interface eth3
passive-interface gre0
network 10.0.10.0/30 area 0.0.0.0
network 10.0.20.0/30 area 0.0.0.0
network 10.0.30.0/30 area 0.0.0.0
network 10.0.40.0/30 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
!
line vty
!
end
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 1 3
crypto isakmp keepalive retry-count 3
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW4
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended IPSEC_MAIN_MAIN
permit gre host 172.16.13.10 host 172.16.11.10
!
ip access-list extended IPSEC_MAIN_BACKUP
permit gre host 172.16.13.10 host 172.16.12.10
!
ip access-list extended IPSEC_BACKUP_MAIN
permit gre host 172.16.14.10 host 172.16.11.10
!
ip access-list extended IPSEC_BACKUP_BACKUP
permit gre host 172.16.14.10 host 172.16.12.10
!
ip access-list extended FIREWALL_ACL_MAIN
deny gre host 172.16.14.10 any
deny ip 192.168.2.0 0.0.0.255 any
permit ip any any
!
ip access-list extended FIREWALL_ACL_BACKUP
deny gre host 172.16.13.10 any
deny ip 192.168.2.0 0.0.0.255 any
permit ip any any
!
!
crypto map CMAP 1 ipsec-isakmp
match address IPSEC_MAIN_MAIN
set transform-set TSET
set local-address 172.16.13.10
set peer 172.16.11.10
crypto map CMAP 2 ipsec-isakmp
match address IPSEC_MAIN_BACKUP
set transform-set TSET
set local-address 172.16.13.10
set peer 172.16.12.10
!
crypto map CMAP2 1 ipsec-isakmp
match address IPSEC_BACKUP_MAIN
set transform-set TSET
set local-address 172.16.14.10
set peer 172.16.11.10
crypto map CMAP2 2 ipsec-isakmp
match address IPSEC_BACKUP_BACKUP
set transform-set TSET
set local-address 172.16.14.10
set peer 172.16.12.10
!
interface GigabitEthernet0/2
ip address 172.16.3.2 255.255.255.0
ip access-group FIREWALL_ACL_MAIN out
crypto map CMAP
!
interface GigabitEthernet0/3
ip address 172.16.4.2 255.255.255.0
ip access-group FIREWALL_ACL_BACKUP out
crypto map CMAP2
!
interface GigabitEthernet1/0
ip address 192.168.2.12 255.255.255.0
!
!
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
crypto pki certificate chain s-terra_technological_trustpoint
certificate 2B6E3351FD6EB2AD48200203CB5BA141
3082024C308201FBA00302010202102B6E3351FD6EB2AD48200203CB5BA14130
...
E34EE9640D905032C1F1E3B4491257D5
quit
!
end