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

VRRP

В режиме отказоустойчивости несколько устройств ARMA Стена объединяются в кластер с использованием протокола VRRP в режиме «активный/пассивный».

Протокол VRRP (Virtual Router Redundancy Protocol) предназначен для повышения доступности маршрутизаторов, выполняющих функцию шлюза по умолчанию. Это достигается путем объединения группы маршрутизаторов в один виртуальный маршрутизатор и присвоения им общего IP-адреса, который будет использоваться в качестве шлюза по умолчанию для компьютеров в сети.

Примечание

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

Идентификатор виртуального маршрутизатора и VIP-адрес

При использовании VRRP, интерфейсы физических маршрутизаторов формируют «виртуальный маршрутизатор». Виртуальный маршрутизатор — это абстрактный объект, управляемый процессом VRRP. Каждый виртуальный маршрутизатор имеет уникальный цифровой идентификатор (Virtual router ID — VRID) и виртуальный IP-адрес (Virtual IP — VIP). Узлы в сети настраиваются таким образом, чтобы направлять пакеты на VIP-адрес виртуального маршрутизатора, вместо IP-адресов физических интерфейсов. Виртуальный маршрутизатор может состоять из кластера физических и/или виртуальных интерфейсов, обеспечивающих резервирование для первичного интерфейса (мастер-интерфейса). Как правило, интерфейсы, входящие в виртуальный маршрутизатор, находятся на разных маршрутизаторах. Резервированием управляет процесс VRRP, выполняемый в системе каждого маршрутизатора, состоящего в виртуальном маршрутизаторе.

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

Один интерфейс может входить в состав нескольких виртуальных маршрутизаторов. Если настроить несколько групп на одном интерфейсе, их VRID должны быть уникальными, если они используют одно и то же семейство адресов. Возможно использовать повторяющиеся VRID на разных интерфейсах, но это не рекомендуется из соображений удобства чтения.

Примечание

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

Рекомендуется учитывать это при конфигурировании VIP-адресов в рамках одного виртуального маршрутизатора, чтобы избежать одновременного появления нескольких владельцев VIP-адресов.

Виртуальный MAC-адрес

Каждому виртуальному маршрутизатору VRRP должен быть присвоен определённый 48-битный MAC-адрес. Виртуальный MAC-адрес создаётся на основе MAC-префиксов (описанных в спецификации протокола VRRP) и идентификатора виртуального маршрутизатора. Виртуальный MAC-адрес выглядит как 0000:5E00:01xx, где xx — идентификатор виртуального маршрутизатора.

Главный маршрутизатор использует MAC-адрес виртуального маршрутизатора в качестве источника для отправляемых VRRP-пакетов. При получении статуса главного маршрутизатора, резервное устройство также начинает использовать MAC-адрес виртуального маршрутизатора.

Использование предопределённого MAC-адреса виртуального маршрутизатора позволяет не менять настройки ARP при сбое главного маршрутизатора.

Объявления VRRP и выбор главного маршрутизатора

Главный маршрутизатор использует объявления VRRP для передачи информации о своём текущем состоянии резервным маршрутизаторам. Объявления VRRP состоят из пакетов «heartbeat», которые содержат информацию о состоянии главного маршрутизатора и его приоритет. В каждом виртуальном маршрутизаторе только главный маршрутизатор отправляет периодические объявления VRRP на зарезервированный адрес 224.0.0.18. На канальном уровне в качестве MAC-адреса отправителя объявлений VRRP используется виртуальный MAC-адрес. Если резервные устройства не получают объявления VRRP в течении заданного периода (dead interval), то главный маршрутизатор считается неработоспособным, после чего статус главного маршрутизатора присваивается одному из резервных маршрутизаторов согласно выставленному значению приоритета.

В рамках виртуального маршрутизатора выбор главного устройства осуществляется автоматически на основе заданного приоритета. Если у двух устройств, входящих в состав виртуального маршрутизатора, значение приоритета будет одинаковым, главным назначается маршрутизатор с большим IP-адресом. Он получает виртуальный адрес для своего интерфейса, а остальные маршрутизаторы с меньшим приоритетом становятся резервными.

При отказе мастер-интерфейса, дублирующий интерфейс с наибольшим значением приоритета назначается мастер-интерфейсом и ему присваивается VIP-адрес виртуального маршрутизатора. Рекомендуется устанавливать значение приоритета мастер-интерфейса равным наибольшему значению приоритета дублирующего интерфейса плюс 50. Значение приоритета дублирующего интерфейса можно оставить равным значению по умолчанию, однако при наличии двух и более дублирующих интерфейсов, следует задать им разные значения приоритета.

Вытеснение

Если параметр вытеснения включён, резервный маршрутизатор с более высоким приоритетом, чем у текущего главного маршрутизатора, будет замещать его, отправляя свои собственные объявления VRRP. Когда главный маршрутизатор обнаружит, что у дублирующего устройства установлено более высокое значение приоритета, он прекратит отправлять свои объявления VRRP. В результате дублирующий маршрутизатор с более высоким значением приоритета назначается главным маршрутизатором.

Вытеснение особенно полезно, когда в одном виртуальном маршрутизаторе находятся высокопроизводительный главный маршрутизатор и низкопроизводительный резервный. Например, в случае сбоя главного маршрутизатора, малопроизводительный резервный маршрутизатор становится главным до устранения сбоя. После устранения проблемы высокопроизводительный маршрутизатор с более высоким приоритетом автоматически назначается главным.

В системе ARMA Стена вытеснение включено по умолчанию.

Возможные состояния виртуального маршрутизатора на устройствах

  • «MASTER» - главный маршрутизатор – это устройство, имеющее наибольший приоритет в рамках одного виртуального маршрутизатора. Отправляет на резервные маршрутизаторы объявления, содержащие в том числе, значение приоритета.

  • «BACKUP» - резервный маршрутизатор – это устройство, которое имеет меньший приоритет чем главный маршрутизатор. При получении объявлений сравнивает приоритет в полученном объявлении со своим значением. Если было получено объявление с меньшим приоритетом или объявления не были получены в течение установленного интервала – резервный маршрутизатор становится главным маршрутизатором.

  • «FAULT» - состояние ошибки – в большинстве случаев, связано с выходом из строя/отключением интерфейса, связанного с виртуальным маршрутизатором.

Скрипты

Функциональность VRRP возможно расширить с помощью скриптов. Система ARMA Стена поддерживает два типа скриптов: скрипты проверки работоспособности и скрипты перехода.

Скрипты проверки работоспособности выполняют пользовательские проверки в дополнение к проверке работоспособности основного маршрутизатора.

Примеры настройки запуска скрипта проверки работоспособности:

  1. Данный пример конфигурации укажет процессу VRRP выполнять скрипт «/config/scripts/vrrp-check.sh» каждые 60 секунд. Если скрипт завершится с ненулевым статусом три раза подряд, группа VRRP «test1» будет переведена в состояние ошибки («FAULT»):

set high-availability vrrp group test1 health-check script /config/scripts/vrrp-check.sh
set high-availability vrrp group test1 health-check interval 60
set high-availability vrrp group test1 health-check failure-count 3
  1. В случае, если группа VRRP входит в состав группы синхронизации, будет применяться только сценарий проверки работоспособности группы синхронизации. В данном примере показано, как настроить этот сценарий для группы синхронизации:

set high-availability vrrp sync-group test2 health-check script /config/scripts/vrrp-check.sh
set high-availability vrrp sync-group test2 health-check interval 60
set high-availability vrrp sync-group test2 health-check failure-count 3

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

Примеры настройки запуска скриптов перехода при изменении состояния VRRP:

set high-availability vrrp group test transition-script backup "/config/scripts/vrrp-fail.sh test"
set high-availability vrrp group test transition-script fault "/config/scripts/vrrp-fail.sh test"
set high-availability vrrp group test transition-script master "/config/scripts/vrrp-master.sh test"

Данная конфигурация запускает выполнение файла /config/scripts/vrrp-fail.sh с аргументом test при сбое VRRP, а также файла /config/scripts/vrrp-master.sh при переходе системы в режим «MASTER».

Примечание

Скрипт должен возвращать «0» для обозначения успешного результата и значение отличное от «0» - для неудачных результатов. Система перестанет отвечать на запросы, если выполнение скрипта не завершится!

Рекомендуется сохранять скрипты в каталоге /config/scripts. Это позволит избежать потери файлов в случае обновления системы.

Алгоритм настройки VRRP-группы:

  1. Указать IP-адреса и задать описание интерфейсов маршрутизатора.

  2. Задать имя и описание для группы VRRP.

  3. Указать интерфейс маршрутизатора, который будет являться участником группы VRRP.

  4. Определить приоритет маршрутизатора для группы VRRP.

  5. Задать виртуальный адрес VIP для группы VRRP.

  6. Указать общий номер группы VRRP (VRID).

  7. Выполнить аналогичные настройки на втором маршрутизаторе.

Настройка устройств кластера

В качестве примера приведён порядок настройки ARMA Стена в режиме отказоустойчивого кластера согласно схеме, представленной на рисунке (см. Рисунок – Схема стенда для настройки режима отказоустойчивого кластера).

../../../_images/ngfw.rp.high-availability_1.1.png

Рисунок – Схема стенда для настройки режима отказоустойчивого кластера

Для настройки работы в режиме отказоустойчивого кластера и создания виртуального маршрутизатора в сети «192.168.3.0/24» на каждом ARMA Стена необходимо выполнить следующие действия:

  1. Назначить имя виртуального маршрутизатора и перейти к его настройке:

[edit]
admin@ngfwos# set high-availability vrrp group <nameVR>
[edit]
admin@ngfwos# edit high-availability vrrp group <nameVR>
[edit high-availability vrrp group <nameVR>]
admin@ngfwos#

где <nameVR> – имя виртуального маршрутизатора. В качестве примера использовано имя «vr1».

  1. Назначить интерфейс:

[edit high-availability vrrp group vr1]
admin@ngfwos# set interface eth1

где «eth1» – имя интерфейса.

  1. Назначить идентификатор:

[edit high-availability vrrp group vr1]
admin@ngfwos# set vrid 50

где «50» – идентификатор.

  1. Назначить виртуальный адрес:

[edit high-availability vrrp group vr1]
admin@ngfwos# set address 192.168.3.254/24

где «192.168.3.254/24» – виртуальный IP-адрес в формате CIDR.

  1. Указать приоритет для виртуального маршрутизатора:

[edit high-availability vrrp group vr1]
admin@ngfwos# set priority 200

где «200» – величина приоритета. Возможно указать значение в диапазоне от «1» до «255», при этом значение 255 соответствует наивысшему приоритету.

По умолчанию используется значение «100».

Примечание

На резервной ARMA Стена необходимо указывать значение приоритета пониженное, относительно приоритета ведущей ARMA Стена.

  1. Зафиксировать изменения с помощью ввода команд «commit» и «save».

Для просмотра статуса необходимо ввести команду «run show vrrp».

Для отключения виртуального маршрутизатора следует ввести команду:

set high-availability vrrp group <nameVR> disable

Глобальные настройки

В большинстве случаев нет необходимости вносить изменения в параметры системы, и использование стандартных настроек является достаточным. Однако в некоторых случаях может потребоваться дополнительная настройка.

  1. Указать используемую версию протокола VRRP:

set high-availability vrrp global-parameters version <2|3>

где <2|3> - номер версии протокола VRRP. Система ARMA Стена поддерживает протокол VRRP версий 2 и 3. По умолчанию применяется протокол VRRP версии 2. Для работы с IPv6 используется протокол VRRP версии 3, который обеспечивает поддержку как IPv4, так и IPv6.

  1. Определить задержку перед запуском экземпляра VRRP после старта Keepalived:

set high-availability vrrp global-parameters startup_delay <1-600>

где <1-600> - время ожидания в секундах, в течение которого VRRP не будет активен после запуска системы. Возможно указать значение в диапазоне от «1» до «600». Это значение помогает избежать преждевременного запуска VRRP, обеспечивая корректную инициализацию сетевых интерфейсов и других зависимых служб.

Настройка Gratuitous ARP

Gratious ARP (GARP) — это механизм, используемый для обновления ARP-таблиц соседних устройств в сети. В контексте VRRP GARP помогает уведомлять сеть о том, что виртуальный маршрутизатор стал активным (MASTER). Настройка GARP в системе ARMA Стена не является обязательной, так как есть значения по умолчанию, но при необходимости их можно изменить.

Настройки GARP могут быть применены как глобально (для всех групп VRRP), так и для конкретной группы VRRP. Ниже приведены команды и их описание:

  1. Установить задержку между отправкой сообщений GARP на интерфейс:

set high-availability vrrp global-parameters garp interval <0.000-1000>

set high-availability vrrp group <name> garp interval <0.000-1000>

где:

  • <0.000-1000> - значение задержки в секундах. Возможно указать значение в диапазоне от «0.000» до «1000». По умолчанию используется значение «0» - сообщения отправляются без задержки.

  • <name> - имя группы VRRP.

  1. Установить задержку перед отправкой второго набора GARP после того, как маршрутизатор становится MASTER:

set high-availability vrrp global-parameters garp master-delay <1-255>

set high-availability vrrp group <name> garp master-delay <1-255>

где <1-255> - значение задержки в секундах. Возможно указать значение в диапазоне от «1» до «255». По умолчанию используется значение «5».

  1. Установить интервал обновления GARP в состоянии MASTER:

set high-availability vrrp global-parameters garp master-refresh <1-600>

set high-availability vrrp group <name> garp master-refresh <1-600>

где <1-600> - значение временного интервала в секундах. Возможно указать значение в диапазоне от «1» до «600». По умолчанию используется значение «0» - обновление отключено.

  1. Установить количество сообщений GARP, отправляемых за один раз в состоянии MASTER:

set high-availability vrrp global-parameters garp master-refresh-repeat <1-600>

set high-availability vrrp group <name> garp master-refresh-repeat <1-600>

где <1-600> - количество сообщений GARP, отправляемых за один раз. Возможно указать значение в диапазоне от «1» до «600». По умолчанию используется значение «1».

  1. Установить количество сообщений GARP, отправляемых за один раз после перехода в состояние MASTER:

set high-availability vrrp global-parameters garp master-repeat <1-600>

set high-availability vrrp group <name> garp master-repeat <1-600>

где <1-600> - количество сообщений GARP, отправляемых за один раз. Возможно указать значение в диапазоне от «1» до «600». По умолчанию используется значение «5».

Примечание

Параметры, установленные для группы, обладают более высоким приоритетом по сравнению с глобальными параметрами. В случае, если параметр не определён ни на глобальном уровне, ни для группы, применяются значения по умолчанию.

Синхронизация конфигурации

Синхронизация конфигурации (config sync) — это функция системы ARMA Стена, которая упрощает процесс обмена настройками между двумя маршрутизаторами в сети.

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

Запись конфигурации на репликационный маршрутизатор осуществляется через HTTP API ARMA Стена. Существует возможность выбрать, какие именно разделы конфигурации будут синхронизированы, а также определить режим синхронизации — заменить или добавить.

Примечание

Во избежание возможных конфликтов между конфигурациями на обоих маршрутизаторах, синхронизация выполняется только в одном направлении — от основного маршрутизатора к реплике. При этом оба устройства должны быть подключены к сети и работать под управлением одной и той же версии ARMA Стена.

Поддерживается синхронизация следующих разделов конфигурации, <name>:

  • «firewall»;

  • «interfaces»;

  • «nat»;

  • «nat66»;

  • «pki»;

  • «policy»;

  • «protocols»;

  • «qos»;

  • «service»;

  • «suricata»;

  • «system»;

  • «vpn»;

  • «vrf».

Настройка синхронизации конфигураций устройств кластера

Для настройки синхронизации конфигураций ARMA Стена, входящих в состав отказоустойчивого кластера, необходимо ввести следующие команды:

  • на резервной ARMA Стена необходимо создать API-ключ для УЗ «admin» с помощью следующей команды:

    set service https api keys user admin key <api-key>
    

    где <api-key> - пользовательский пароль (API-ключ) для локальной УЗ «admin». Созданный ключ будет использоваться для подключения ведущей системы ARMA Стена к резервной системе ARMA Стена.

    Если API-ключ был создан в процессе установки системы ARMA Стена, выполнять данной команды не требуется. Для синхронизации конфигурации будет использован ранее созданный API-ключ. В случае необходимости изменения API-ключа следует выполнить данную команду, указав новое значение ключа.

    Допускается создание API-ключа для другой локальной учётной записи системы ARMA Стена при условии, что данная учётная запись принадлежит к классу «NGFW_Administrators» или иному классу с эквивалентным уровнем доступа.

  • на ведущей ARMA Стена:

    set service config-sync secondary address <slave-address>
    set service config-sync secondary key <api-key>
    set service config-sync secondary timeout <1-3600>
    set service config-sync mode <load|set>
    set service config-sync section <name>
    

    где:

    • <api-key> – API-ключ, созданный на резервной системе ARMA Стена;

    • <slave-address> – адрес резервной ARMA Стена. Поддерживается указание в следующих форматах: <x.x.x.x>, <h:h:h:h:h:h:h:h>, <hostname> (FQDN);

    • <1-3600> – значение максимального тайм-аута API-соединения в секундах. Возможно указать значение в диапазоне от «1» до «3600». По умолчанию используется значение «60».

    • <load|set> - режим синхронизации: load - загрузить и заменить, set - установить раздел конфигурации;

    • <name> – раздел конфигурации, который требуется синхронизировать.

    Зафиксировать изменения с помощью ввода команд «commit» и «save»;

    Примечание

    В случае, если версия программного обеспечения на ведущей ARMA Стена отличается от версии на резервной системе, будет выведено предупреждение: «The version of remote node (x.x.x.x) does not match current node’s version. Cannot synchronize with it. Please, provide correct remote node and try again». Настройки синхронизации конфигураций будут сохранены, однако выполнение синхронизации не будет осуществляться до устранения несоответствия версий.

Примечание

Необходимо провести детальный анализ и определить, какие разделы конфигурации требуют синхронизации для обеспечения бесперебойного функционирования системы. В частности, полная синхронизация компонентов «interfaces» или «service» может привести к сбоям в работе кластера.

Примечание

Для синхронизации конфигураций используется порт 8082. Не рекомендуется изменять порт, так как это может привести к сбоям в работе синхронизации.

Особенности настройки устройств кластера

Настройка прокси-сервера ActiveSync в составе кластера

Для корректной работы ARMA Стена, настроенных в качестве прокси-сервера ActiveSync, входящих в состав отказоустойчивого кластера, необходимо выполнить следующие действия:

  1. На обоих ARMA Стена настроить виртуальный маршрутизатор и дополнительно ввести следующую команду:

set system sysctl parameter net.ipv4.ip_nonlocal_bind value 1
  1. Настроить синхронизацию конфигураций сервиса «active-sync-proxy»:

set service config-sync section service active-sync-proxy
  1. Настроить прокси-сервер ActiveSync на ведущей ARMA Стена (см. Группы пользователей).

  2. После выполнения настроек на ведущей ARMA Стена в консоли будет выведена информация о том, что файл «*.keytab» скопирован в резервную ARMA Стена:

INFO:ngfwos_config_sync:Upload file '/home/admin/test.keytab':
{'success': True, 'data': '/home/admin/test.keytab', 'error': None}, Secondary=x.x.x.x:8082

Для проверки успешного копирования файла необходимо перейти в указанное хранилище (в данном примере - «/home/admin/») на резервной ARMA Стена и найти файл «*.keytab».

Настройка сервера OpenConnect в составе кластера

Для корректной работы ARMA Стена, настроенных в качестве сервера OpenConnect, входящих в состав отказоустойчивого кластера, необходимо выполнить следующие действия:

  1. На обоих ARMA Стена настроить виртуальный маршрутизатор и дополнительно ввести следующие команды:

set high-availability vrrp sync-group <syncname> member <nameVR>
set service conntrack-sync accept-protocol tcp
set service conntrack-sync accept-protocol udp
set service conntrack-sync accept-protocol icmp
set service conntrack-sync event-listen-queue-size 8
set service conntrack-sync failover-mechanism vrrp sync-group <syncname>
set service conntrack-sync interface <iname>
set service conntrack-sync mcast-group 225.0.0.50
set firewall global-options state-policy established action accept

где:

  • <syncname> – имя группы синхронизации;

  • <nameVR> – имя виртуального маршрутизатора;

  • <iname> – имя интерфейса, используемого для синхронизации;

  1. Для настройки синхронизации конфигураций «vpn» и «pki» ввести следующие команды:

set service https api keys user <username> key <examplepassword>
set service config-sync mode load
set service config-sync secondary address [<slave-address> | <fqdn>]
set service config-sync secondary key <examplepassword>
set service config-sync section vpn
set service config-sync section pki

где <username> и <examplepassword> – учётные данные;

  1. Настроить OpenConnect на ведущей ARMA Стена (см. OpenConnect).

Примечание

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