Настройка отказоустойчивого решения для доступа сети филиала к Интернет сети через центральный офис

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

Инструкция применима только к шлюзам, имеющим класс сертификации КС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 с использованием балансировки трафика. Данный протокол позволяет обеспечить отказоустойчивость физических интерфейсов. Балансировка трафика позволяет распределять его между интерфейсами. При отказе одного интерфейса в агрегированном канале, весь трафик будет передаваться через другой интерфейс агрегированного канала.  На коммутаторе также должны быть настроены два агрегированных канала для связи со шлюзами.

GRE-тунелирование

В рамках данного решения резервируются провайдеры (каналы связи). Это достигается следующим образом: между шлюзами безопасности строится 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

Между шлюзами в филиалах и центральным офисом устанавливаются статические 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 бит).

Firewall

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

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

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

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

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

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

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

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

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

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

2.    Source NAT/Destination NAT для передачи пакетов в сеть интернет:

root@Central_switch:~# iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE

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

На данном устройстве должны быть настроена коммутация пакетов и агрегация каналов в соответствии коммутационной схемой. Для настройки для ОС 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).

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

На данном устройстве должны быть настроена коммутация и агрегация пакетов в соответствии коммутационной схемой. Для настройки для ОС 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подготовка устройств «С-Терра Шлюз»

На всех шлюзах (GW1, GW2, GW3, GW4) нужно выполнить первоначальную подготовку. Подготовка включает в себя обновление предыдущих версий пакетов и установку новых. Для подготовки понадобится USB-flash накопитель.

Если у Вас устройство «С-Терра Шлюз» без SPDS (см. значение параметра PLATFORM в файле /etc/image_version), то до полного выполнения всех шагов инструкции не перезагружайте устройство.

Обновление пакета keepalived

Обновление пакета 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 ...

Установка пакета frr

Предварительно получите следующие файлы в личном кабинете партнера (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.     Повторите предыдущие пункты на всех оставшихся шлюзах.

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

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

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

1.    Настройка LACP.

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

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

4.    Настройка GRE-интерфейсов.

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

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

Настройка LACP

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

Настройка VRRP

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.

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

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

Настройки 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

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

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

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

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

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

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

1.    Настройка LACP.

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

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

4.    Настройка GRE-интерфейсов.

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

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

Настройка LACP

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

Настройка VRRP

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.

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

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

Настройки 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

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

Настройка устройства 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 и трафик шел через них.


 

Приложение

Устройство Central_host

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

Содержимое файла/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

Устройство Branch_host

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

Содержимое файла/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

 

Устройство Internet_router

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

Содержимое файла/etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

source /etc/network/interfaces.d/*

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

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

Устройство Central_switch

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

Содержимое файла/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

Устройство Branch_switch

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

Содержимое файла/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

Устройство Core_router

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

Содержимое файла/etc/network/interfaces:

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

source /etc/network/interfaces.d/*

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

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

Устройство Router1

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

Содержимое файла/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

Устройство Router2

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

Содержимое файла/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

Устройство Router3

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

Содержимоефайла/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

Устройство Router4

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

Содержимое файла/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

Устройство GW1

Параметры VRRP

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

    }

}

Настройки GRE

Содержимое файла/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

Параметры IPsec и Firewall

!

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

 

Устройство GW2

Параметры VRRP

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

    }

}

Настройки GRE

Содержимое файла/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

Параметры IPsec и Firewall

!

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

 

Устройство GW3

Параметры VRRP

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

    }

}

Настройки GRE

Содержимое файла /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

Параметры IPsec и Firewall

!

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

Устройство GW4

Параметры VRRP

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

    }

}

Настройки GRE

Содержимое файла/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

Параметры IPsec и Firewall

!

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