В этой статье мы увидим, как настроить два сервера pfSense в режиме кластера, чтобы обеспечить высокую доступность сервиса.
pfSense — одно из немногих решений с открытым исходным кодом, предлагающих технологии высокой доступности.
Диаграмма сети:
LAN :
● Сеть : 192.168.99.0/24
● IP-адрес A pfSense : 192.168.99.1
● IP-адрес B pfSense : 192.168.99.2
● Виртуальный IP-адрес CARP : 192.168.99.100
WAN :
● Сеть : 192.168.1.0/24
● IP-адрес A pfSense : 192.168.1.1
● IP-адрес B pfSense : 192.168.1.2
● Виртуальный IP-адрес CARP : 192.168.1.100
Как это работает:
Методы обеспечения высокой доступности включают в себя 3 основных компонента:
● CARP : протокол для настройки виртуального IP-адреса, который используется pfSense. Этот виртуальный IP-адрес передается вторичному серверу, если первичный сервер сталкивается с проблемой.
● pfsync : протокол, используемый для синхронизации состояния текущих соединений между двумя серверами pfSense (и в более глобальном масштабе между двумя серверами, на которых работает Packet Filter ).
● XML-RPC : протокол для репликации данных с одного сервера на другой. Он используется в pfSense для репликации конфигурации с основного сервера на дополнительный сервер.
1. Настройка виртуальных IP-адресов
Для работы каждый сервер pfSense должен иметь уникальный IP-адрес на своем интерфейсе, а также виртуальный IP-адрес, который будет общим для двух серверов pfSense.
Поэтому для pfSense требуется 3 IP-адреса на сеть.
На основном сервере перейдите в Firewall > Virtual IPs:
Нажмите на кнопку «+ Add».
Поля, которые необходимо заполнить, следующие:
● Type : CARP
● Interface : WAN
● Address(es) : виртуальный IP-адрес с маской этого интерфейса. В нашем случае: 192.168.1.100/24
● Virtual IP Password: пароль…
● VHID Group : позвольте pfSense выбрать ее. Он должен быть уникальным для каждого виртуального IP-адреса.
● Advertising frequency : пусть pfSense выбирает ее. Поле «база» — это частота frequency в секундах. Косое поле — это фазовый сдвиг . 0 обычно означает основной сервер.
Такую же настройку выполняем на интерфейсе LAN :

После этого нажмите кнопку «Apply Changes».
Мы можем проверить статус наших виртуальных IP-адресов в меню Status > CARP (failover):

Виртуальные IP-адреса WAN и LAN являются «Master»:
Все эти настройки виртуальных IP-адресов должны выполняться только на основном pfsense (pfSense A)!!!
2. Принудительное использование виртуальных IP-адресов
Виртуальные IP-адреса настроены, но не используются.
Для этого нам нужно настроить pfSense для использования виртуального IP-адреса WAN для исходящего трафика, виртуального IP-адреса LAN для входящего трафика и настроить различные службы для работы с VIP-адресом LAN в качестве адреса по умолчанию (для конфигурации OpenVPN или DHCP, Например).Все эти настройки должны выполняться только на первичном pfsense (pfSense A)!!!
Настройка исходящего NAT:
Проходим в Firewall > NAT, Outbound tab.

Отметьте кнопку «Hybrid Outbound NAT rule generation» (Автоматический исходящий NAT + правила ниже)». Затем нажмите кнопку « Add » .
Поля, которые необходимо заполнить, следующие:
● Interface : WAN
● Address Family: IPv4
● Protocol : any
● Source : Сеть — 192.168.1.0/24 ( т . е . подсеть LAN)
● Destination : Any
● Address (Translation) : 192.168.1.100 ( т.е. VIP-адрес на интерфейсе WAN)

После этого нажимаем кнопку «Apply Changes».
Настройка DHCP-сервера:
Если pfSense является DHCP-сервером в сети, мы собираемся изменить его конфигурацию. Заходим в Services > DHCP Server.
Мы модифицируем поле «Gateway», чтобы указать VIP-адрес (192.168.99.100).

Настройка OpenVPN-сервера:
Если сервер OpenVPN настроен на pfSense, мы модифицируем интерфейс прослушивания службы (обычно «WAN»), заменив его на VIP-адрес (192.168.1.100).
Это изменение выполняется в разделе VPN > OpenVPN, вкладка Servers.

Настройка службы VPN IPsec:
Если туннель IPsec настроен на pfSense, необходимо изменить интерфейс прослушивания IPsec VPN (обычно «WAN»), заменив его на VIP-адрес (192.168.1.100).
Эта модификация выполняется в разделе VPN > IPsec, а затем в части фазы 1.

У нас есть покрытие основных услуг, на которые влияют виртуальные IP-адреса.
3. Настройка высокой доступности
Нам еще нужно настроить службу высокой доступности.
Перейдите в System > High Avail. Sync:

На этой странице нужно настроить две вещи: pfsync (синхронизация состояний) и XMLRPC Sync (синхронизация конфигурации).
Настройки синхронизации состояния (pfsync):
Поля, которые необходимо заполнить, следующие:
● Synchronize States : установите этот флажок, чтобы активировать pfsync.
● Synchronize Interface : если у вас нет выделенного интерфейса для синхронизации между двумя узлами, просто выберите «LAN». Что мы и делаем в нашем случае.
● pfsync Synchronize Peer IP : IP-адрес pfSense B. В нашем случае: 192.168.99.2.
Параметры синхронизации конфигурации (XMLRPC Sync)
Поля, которые необходимо заполнить, следующие:
● Synchronize Config to IP : на первичном pfSense (pfSense A) введите IP-адрес вторичного pfSense (pfSense B). В нашем случае: 192.168.99.2 . Имейте в виду, что это должен быть тот же IP-адрес, который вы ввели ранее в поле «pfsync Synchronize Peer IP». Это поле необходимо оставить пустым на вторичном pfSense (pfSense B) .
● Remote System Username : на первичном pfSense (pfSense A) введите имя пользователя для доступа к вторичному pfSense (pfSense B) — по умолчаниюоно должно быть « admin ». Это поле необходимо оставить пустым на вторичном pfSense (pfSense B) .
● Remote System Password : на основном pfSense (pfSense A) введите пароль учетной записи администратора (или выбранной вами альтернативной учетной записи). Это поле необходимо оставить пустым на вторичном pfSense (pfSense B) .
Затем мы проверяем сервисы, которые хотим синхронизировать. По умолчанию используются все службы (нажмите кнопку « Переключить все »).

Сделав это, нажмите на кнопку «Save».
Разрешить потоки репликации в правилах брандмауэра
Последнее, что нужно сделать, это авторизовать сетевые потоки для процесса репликации.
Перейдите в Firewall > Rules.

Есть два сетевых потока, которые можно разрешить:
● Синхронизация XML-RPC, которая выполняется через порт 443.
● Синхронизация протокола pfsync.
Самый простой способ — создать alias с IP-адресами двух серверов pfSense в локальной сети:

Затем мы создаем правило брандмауэра с alias:

Хорошие новости. Конфигурация выполнена!
Мы можем провести некоторые тесты…
Прежде всего, на этом этапе важно сделать резервную копию обоих ваших серверов pfSense (“Diagnostics” > “Backup & Restore”).
Затем, чтобы проверить правильность работы высокой доступности, можно выполнить несколько тестов. Вот несколько примеров:
● остановить основной pfSense ;
● отключите сетевой кабель от интерфейса LAN или WAN основного pfSense;
● отключить службу CARP на первичном pfSense («Статус» > «CARP (отказоустойчивость)») ;
● скачать файл или запустить ping-запросы при переключении с основного на дополнительный сервер
ᅠ