Как настроить кластер pfSense 2.0 с использованием CARP
Цель статьи
Объяснить практически и последовательно, как настроить два идентичных устройства pfSense 2.0 в HA-кластер с CARP (Common Address Redundancy Protocol) для обеспечения отказоустойчивости WAN и LAN адресов. Подход применим для крайних (edge) и внутренних периметров сети.
Ключевые варианты запроса (SEO)
настроить кластер pfSense, pfSense CARP, pfSense 2.0 отказоустойчивость, виртуальный IP CARP, синхронизация pfSense
Требования
- Два идентичных компьютера (рекомендуется отдельный физический хост, не виртуальная машина для edge-файрволов). VMs возможны, но лучше держать устройства вне основной виртуальной инфраструктуры.
- Минимум по 3 сетевые карты на каждое устройство: WAN, LAN и SYNC (выделенная подсеть для синхронизации).
- pfSense 2.0 установлена на обоих устройствах, с базовой конфигурацией сетевых интерфейсов.
- Резервные копии конфигурации перед началом.
Важно: выделенный SYNC-интерфейс уменьшает риск утечки конфиденциальных данных и предотвращает лишние задержки синхронизации.
Пример используемых IP-адресов (из HowTo)
Network Configuration:
Firewall 1 Firewall 2
WAN IP: 192.168.100.1 WAN IP: 192.168.100.2
SYNC IP: 10.155.0.1 SYNC IP: 10.155.0.2
LAN IP: 192.168.1.252 LAN IP: 192.168.1.253
Виртуальные IP, которые будут разделяться:
WAN Virtual IP: 192.168.100.200
LAN Virtual IP: 192.168.1.254
Примечание: подставьте адреса вашей сети. Подсеть SYNC должна быть недоступна извне.
Схема того, что мы строим

1. Подготовка правил доступа для SYNC
- Войдите в веб-интерфейс обоих pfSense.
- Перейдите в Брандмауэр → Правила (Firewall | Rules), выберите интерфейс SYNC.
- Нажмите плюс для добавления правила. Установите Protocol = any (временно), добавьте понятное описание и сохраните.
- Нажмите Apply Changes, если появится кнопка.

Совет: после успешной настройки можно сузить правило по IP-адресам/портам, чтобы разрешать трафик только между парой pfSense.
2. Настройка синхронизации конфигурации (на резервном узле)
- Откройте резервный (backup) firewall.
- Перейдите в Брандмауэр → Виртуальные IP (Firewall | Virtual IPs), вкладка CARP Settings.
- Поставьте галочку Synchronize Enabled и в качестве интерфейса синхронизации выберите SYNC. Сохраните.

Примечание: на резервном узле чаще всего оставляют только приём синхронизации — основную настройку (куда синхронизировать) выполняют на ведущем узле.
3. Настройка синхронизации конфигурации (на основном узле)
- Войдите в основной (primary) firewall.
- Перейдите в Брандмауэр → Виртуальные IP, вкладка CARP Settings.
- Отметьте Synchronize Enabled и выберите SYNC как интерфейс синхронизации.
- Отметьте опции: Synchronize Rules, Synchronize NAT, Synchronize Virtual IPs.
- В поле Synchronize to IP укажите SYNC IP резервного узла (например, 10.155.0.2).
- Установите Remote System Password — назначьте надёжный пароль для удалённой синхронизации.
- Сохраните и примените изменения.

Пояснение: pfSense использует XMLRPC для синхронизации конфигурации. Для синхронизации таблицы состояний используется pfsync (см. раздел о расширенной синхронизации).
4. Создание виртуальных IP (VIP) — WAN
- На основном узле перейдите в Брандмауэр → Виртуальные IP → Virtual IPs.
- Нажмите плюс, выберите тип CARP.
- Интерфейс: WAN. Укажите IP Address (например, 192.168.100.200).
- Создайте Virtual IP Password (пароль для CARP). Оставьте VHID Group = 1 и Advertising Frequency = 0 (или выставьте по требованиям вашей сети).
- Добавьте описание, сохраните и примените.

Объяснение терминов в одну строку:
- CARP: протокол для совместного использования IP между несколькими хостами.
- VHID: идентификатор группы CARP — он должен быть уникален для каждой виртуальной адресной группы в сети.
- Advertising Frequency / advskew: параметр приоритета; меньшие значения дают более высокий приоритет (master).
5. Создание виртуальных IP (VIP) — LAN
Повторите процесс для LAN: выберите Interface = LAN, задайте IP (192.168.1.254), назначьте другую VHID Group (например, 3), добавьте описание и примените.

После этого в разделе Виртуальные IP вы увидите два типа CARP VIP.

Если вы войдёте на резервный узел и откроете Виртуальные IP, виртуальные адреса должны присутствовать — это подтверждение успешной синхронизации.
Как это работает (коротко)
Два pfSense постоянно синхронизируют выбранные настройки (правила, NAT, VIP и т.д.). CARP обеспечивает общий виртуальный IP: при недоступности основного узла резервный принимает VIP и продолжает обработку трафика.
Важно: в моих тестах переключение занимало ~10 секунд из‑за того, что FreeBSD применяет VIP на интерфейсе после потери связи с основным узлом.
Тестирование отказа
- Откройте постоянный ping к LAN или WAN виртуальному IP с внешнего устройства.
- На основном узле отключите сетевой кабель или выключите устройство.
- Наблюдайте: адрес может быть недоступен несколько секунд, затем резервный узел поднимет VIP и связь восстановится.
Совет: выполняйте тестирование в окне технического обслуживания и предварительно уведомите заинтересованные стороны.
Дополнительные рекомендации и варианты
Альтернативные подходы
- Использовать pfsync для синхронизации таблицы состояний (state table) — тогда TCP/UDP сессии продолжат жить после переключения. Это отдельная настройка на интерфейсе SYNC.
- Аппаратные балансировщики/VRRP-подобные решения — в больших корпоративных средах иногда предпочитают аппаратные кластеры.
Когда этот подход не подходит
- Когда требуется географически распределённая High Availability (CARP обычно работает в пределах одного L2/L3 сегмента).
- При отсутствии выделенного канала SYNC или при нестабильных сетях — синхронизация будет ненадёжной.
Ментальные модели / эвристики
- Разделяй контрольные каналы: SYNC отдельно от пользовательского трафика.
- VIP = согласованный адрес; CARP решает, кто отвечает за него.
- Низкий advskew = высокий приоритет (станет master быстрее).
Уровни зрелости (maturity)
- Уровень 1: Два узла, только конфигурация синхронизируется (правила, NAT, VIP).
- Уровень 2: Добавлен pfsync — синхронизация таблицы состояний для непрерывности сессий.
- Уровень 3: Мониторинг, автоматические оповещения, регулярные тесты и проверенная процедура отката.
Контрольный список перед вводом в эксплуатацию (администратор)
- Установлены и протестированы физические подключения (WAN, LAN, SYNC).
- Резервные копии конфигураций обоих узлов.
- Совпадают версии pfSense и пакетов на обоих узлах.
- VHID уникален для каждой VIP-группы.
- Ограничены правила доступа на SYNC (только IP пары).
- Установлен надёжный Remote System Password.
- План отката и окно обслуживания согласованы.
Плейбук: краткая процедура переключения и отката
- Подготовка: уведомить команду, сделать бэкап.
- Тест: провести проверку ping на VIP и сервисы.
- Принудительное переключение: уменьшить advskew на нужном узле или выключить основной узел.
- Восстановление: вернуть основной узел в сеть, проверить его логи, синхронизацию.
- Откат: восстановить исходные advskew/приоритеты и подтвердить, что VIP снова на основном (если требуется).
Отладка — частые ошибки и их решения
- VIP не отображается на резервном узле: проверьте настройки CARP sync, доступность SYNC IP и Remote System Password.
- Конфликты VHID: убедитесь, что каждая VIP-группа использует уникальный VHID.
- Правила SYNC блокируют трафик: временно откройте Protocol = any и проверьте соединение; потом сузьте правила.
- Сессии не переживают failover: включите pfsync на SYNC-интерфейсе для репликации таблицы состояний.
- Несовпадающие версии pfSense: синхронизируемые объекты могут не применяться — обновите ПО одинаково.
Критерии приёмки
- Резервный узел получил синхронизированные правила, NAT и VIP (визуально в веб-интерфейсе).
- При тестовом выключении основного узла виртуальные IP поднимаются на резервном и сервисы возобновляют работу.
- Время переключения соответствует ожиданиям операционной политики (обычно <30 с, зависит от конфигурации).
Тестовые сценарии (acceptance)
- Сценарий 1: Отключение кабеля основного узла — VIP поднимается на резервном в рамках допустимого SLA.
- Сценарий 2: Проверка синхронизации правил — добавить правило на основном, убедиться, что оно появилось на резервном.
- Сценарий 3: (при pfsync) Установить длительную TCP-сессию и протестировать, что она остаётся активной после failover.
Безопасность и рекомендации по защите SYNC
- SYNC-сеть должна быть закрытой (не маршрутизируемой извне).
- Разрешайте доступ на SYNC только между адресами парных pfSense.
- Используйте сложный Remote System Password и HTTPS для веб-интерфейса.
- Логируйте попытки доступа и интегрируйте с SIEM при возможности.
Краткий глоссарий (1 строка)
- CARP — протокол для совместного использования IP-адресов между хостами.
- VHID — уникальный идентификатор группы CARP.
- VIP — виртуальный IP, на который переключается трафик.
- SYNC — выделенный интерфейс/подсеть для синхронизации конфигурации.
- pfsync — механизм синхронизации таблицы состояний между pfSense.
Часто задаваемые вопросы
Q: Нужно ли настраивать pfsync для корректного failover?
A: pfsync нужен, если вы хотите, чтобы активные соединения (state) продолжали существовать после переключения. Без pfsync сессии могут прерваться.
Q: Можно ли использовать виртуальные машины для pfSense в HA?
A: Можно, но для edge-фаерволов лучше физические устройства. В виртуализированных средах убедитесь, что выделенные NIC не конкурируют с гипервизором.
Q: Сколько времени занимает переключение?
A: Зависит от конфигурации; в примерах тестирования наблюдалась задержка около 10 секунд, но время может варьироваться.
Резюме
Настройка pfSense 2.0 в HA с CARP — надёжный способ организовать отказоустойчивость WAN и LAN IP. Ключевые шаги: выделить SYNC-интерфейс, открыть правила для синхронизации, включить синхронизацию на основном и резервном узлах, создать CARP VIP для WAN и LAN и протестировать failover. Не забудьте про безопасность SYNC-сети, проверку VHID и, при необходимости, pfsync для репликации состояний.
Важное: перед развёртыванием делайте бэкапы конфигураций и тестируйте поведение в контролируемой среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента