Статические маршруты в pfSense - настройка и управление

Статические маршруты в pfSense обеспечивают доставку трафика к сетям, доступным через маршрутизаторы, отличные от шлюза по умолчанию. Без статического маршрута pfSense направляет весь трафик, не принадлежащий непосредственно подключённым подсетям, через default gateway, что приводит к недоступности удалённых сетей за внутренними маршрутизаторами.

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

Предварительные требования

Перед созданием статического маршрута необходимо выполнить следующие условия:

  • Шлюз создан. Маршрутизатор, через который доступна целевая сеть, должен быть зарегистрирован как шлюз в разделе System > Routing > Gateways. pfSense не позволяет создать маршрут, указывающий на несуществующий шлюз.
  • IP-адрес шлюза доступен. Адрес шлюза должен находиться в подсети одного из интерфейсов pfSense. Шлюз на адресе 10.0.1.1 требует наличия интерфейса с адресом из сети 10.0.1.0/24.
  • Маршрутизатор знает обратный путь. Внутренний маршрутизатор, выступающий шлюзом, должен иметь маршрут обратно к сетям pfSense. В противном случае пакеты достигнут целевой сети, но ответы не вернутся.

Создание шлюза

Перед добавлением статического маршрута необходимо создать шлюз, через который доступна целевая сеть. Шлюзы настраиваются в разделе System > Routing > Gateways.

Параметры шлюза

Для создания шлюза следует нажать кнопку Add и заполнить следующие поля:

Interface - интерфейс pfSense, через который доступен маршрутизатор-шлюз. Для внутренних маршрутизаторов обычно указывается LAN или OPT-интерфейс. Для внешних каналов - WAN или дополнительный WAN-интерфейс.

Address Family - семейство адресов: IPv4 или IPv6. Определяется адресацией целевой сети.

Name - уникальное имя шлюза. Допускаются латинские буквы, цифры и символ подчёркивания. Пробелы и специальные символы запрещены. Рекомендуется использовать информативные имена, отражающие назначение шлюза (например, INTERNAL_ROUTER_DC1, VPN_GW_BRANCH).

Gateway - IP-адрес маршрутизатора следующего хопа. Адрес должен принадлежать подсети указанного интерфейса.

Gateway Monitoring - включение мониторинга доступности шлюза. По умолчанию pfSense проверяет доступность шлюза с помощью ICMP-запросов через демон dpinger.

Monitor IP - альтернативный IP-адрес для проверки доступности. По умолчанию используется адрес самого шлюза. Указание адреса за пределами шлюза (например, публичного DNS 8.8.8.8) позволяет проверять не только доступность маршрутизатора, но и наличие связи через него. Для внутренних шлюзов рекомендуется использовать адрес хоста в целевой сети.

Description - текстовое описание назначения шлюза.

Расширенные параметры мониторинга

Кнопка Display Advanced открывает дополнительные параметры dpinger:

ПараметрЗначение по умолчаниюОписание
Weight1Вес шлюза при балансировке нагрузки в Gateway Group (1-30)
Data Payload1 байтРазмер полезной нагрузки ICMP-пакета
Latency Warning200 мсПорог задержки для предупреждения
Latency Down500 мсПорог задержки для признания шлюза недоступным
Loss Warning10%Порог потери пакетов для предупреждения
Loss Down20%Порог потери пакетов для признания шлюза недоступным
Probe Interval500 мсИнтервал отправки ICMP-запросов
Time Period60 секОкно усреднения результатов мониторинга

Внимание:

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

Пример: шлюз для внутреннего маршрутизатора

Допустим, в сети присутствует маршрутизатор с адресом 10.0.1.1 на интерфейсе LAN (подсеть 10.0.1.0/24). За этим маршрутизатором расположены подсети 10.10.0.0/16 и 10.20.0.0/16.

Параметры шлюза:

ПолеЗначение
InterfaceLAN
Address FamilyIPv4
NameINTERNAL_ROUTER_DC1
Gateway10.0.1.1
Monitor IP10.10.0.1
DescriptionInternal router to DC1 subnets

Создание статического маршрута

Статические маршруты настраиваются в разделе System > Routing > Static Routes. Для добавления нового маршрута следует нажать кнопку Add.

Параметры маршрута

Destination network - сеть назначения в формате CIDR. Указывается адрес сети и маска подсети. Примеры: 10.10.0.0/16, 172.16.5.0/24, 192.168.100.0/24. Поддерживаются IPv4-адреса, IPv6-адреса и алиасы pfSense.

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

Disabled - флаг отключения маршрута. Позволяет сохранить конфигурацию маршрута без его активации в таблице маршрутизации.

Description - текстовое описание назначения маршрута. Рекомендуется указывать, какие сервисы или подразделения используют данный маршрут.

Пример: маршрут к подсети за внутренним маршрутизатором

Используя шлюз INTERNAL_ROUTER_DC1, созданный в предыдущем разделе, настроим маршрут к подсети серверов 10.10.0.0/16:

ПолеЗначение
Destination network10.10.0.0/16
GatewayINTERNAL_ROUTER_DC1 - 10.0.1.1
Disabledне установлен
DescriptionDC1 server subnet via internal router

После сохранения и применения изменений (Save, затем Apply Changes) pfSense добавляет маршрут в системную таблицу маршрутизации.

Пример: маршрут к VPN-сети

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

ПолеЗначение
Destination network172.16.0.0/12
GatewayVPN_CONCENTRATOR - 10.0.1.5
Disabledне установлен
DescriptionRemote office subnets via VPN concentrator

Выбор шлюза по умолчанию

Шлюз по умолчанию (default gateway) определяет маршрут для всего трафика, не совпавшего с явными записями в таблице маршрутизации. Настройка выполняется на вкладке Default Gateway в разделе System > Routing > Gateways.

pfSense позволяет назначить отдельные шлюзы по умолчанию для IPv4 и IPv6. При наличии нескольких WAN-интерфейсов следует явно указать основной шлюз. Если шлюз по умолчанию не назначен, pfSense использует первый доступный WAN-шлюз.

Внимание:

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

Просмотр таблицы маршрутизации

Текущую таблицу маршрутизации можно просмотреть в разделе Diagnostics > Routes. Интерфейс отображает все активные маршруты, включая подключённые сети, статические маршруты и маршруты, полученные динамически.

Таблица содержит следующие столбцы:

СтолбецОписание
DestinationСеть назначения
GatewayАдрес следующего хопа или интерфейс
FlagsФлаги маршрута (U - up, G - gateway, S - static, H - host)
RefsКоличество активных ссылок на маршрут
UseКоличество пакетов, использовавших маршрут
NetifСетевой интерфейс, через который направляется трафик

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

Просмотр таблицы через командную строку

При доступе к консоли pfSense (SSH или физическая консоль) таблицу маршрутизации можно просмотреть командой:

netstat -rn

Для отображения только IPv4-маршрутов:

netstat -rn -f inet

Для отображения только IPv6-маршрутов:

netstat -rn -f inet6

Команда route get позволяет определить маршрут для конкретного адреса назначения:

route get 10.10.0.1

Вывод включает адрес шлюза, интерфейс, флаги маршрута и MTU.

Мониторинг шлюзов

pfSense непрерывно контролирует доступность шлюзов с помощью демона dpinger. Состояние шлюзов отображается на виджете Gateways на главной странице (Dashboard) и в разделе Status > Gateways.

Каждый шлюз отображает следующие метрики:

МетрикаОписание
RTTСреднее время отклика (round-trip time) в миллисекундах
RTTsdСтандартное отклонение времени отклика
LossПроцент потерянных пакетов
StatusТекущий статус: Online, Warning, Down, Gathering Data

Статус Gathering Data отображается в течение первых 60 секунд после запуска или перезапуска демона dpinger. В этот период данных мониторинга недостаточно для оценки состояния.

При превышении пороговых значений задержки или потери пакетов шлюз переходит в состояние Warning или Down. Переход в состояние Down влияет на Gateway Groups и может вызвать автоматическое переключение трафика на резервный шлюз.

Диагностика и устранение неполадок

Маршрут не работает

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

  1. Маршрут присутствует в таблице. Открыть Diagnostics > Routes и убедиться, что маршрут отображается с корректным шлюзом и интерфейсом. Если маршрут отсутствует, проверить, применены ли изменения (кнопка Apply Changes).

  2. Шлюз доступен. Проверить состояние шлюза в Status > Gateways. Если статус Down или Gathering Data, выполнить ping шлюза из консоли pfSense: Diagnostics > Ping, указав адрес шлюза и исходный интерфейс.

  3. Обратный маршрут существует. На внутреннем маршрутизаторе должен быть маршрут обратно к подсетям pfSense. Без обратного маршрута пакеты достигают назначения, но ответы теряются.

  4. Правила файрвола разрешают трафик. Статический маршрут обеспечивает доставку на сетевом уровне, но правила файрвола могут блокировать трафик. Проверить правила на исходном и целевом интерфейсах.

  5. ARP-таблица содержит запись для шлюза. Открыть Diagnostics > ARP Table и убедиться, что для IP-адреса шлюза существует запись с корректным MAC-адресом.

Асимметричная маршрутизация

Асимметричная маршрутизация возникает, когда трафик от источника к назначению проходит через pfSense, а обратный трафик возвращается другим путём, минуя файрвол. pfSense, работающий как stateful firewall, отбрасывает обратные пакеты, поскольку они не соответствуют существующим записям в таблице состояний.

Признаки асимметричной маршрутизации:

  • Односторонняя связь: ping проходит в одну сторону, но ответ не приходит
  • TCP-соединения устанавливаются, но передача данных прерывается
  • В логах файрвола отображаются заблокированные пакеты с флагом TCP ACK без предшествующего SYN

Решения:

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

  • Включить обход для трафика на одном интерфейсе. В разделе System > Advanced > Firewall & NAT установить флаг Bypass firewall rules for traffic on the same interface. Это отключает stateful-проверку для трафика, входящего и выходящего через один интерфейс.

  • Использовать Sloppy State. На правилах файрвола, затронутых асимметричной маршрутизацией, установить State Type в значение Sloppy State. Этот режим ослабляет проверку состояния TCP-соединений.

Внимание:

Обход stateful-проверки снижает уровень безопасности. Применять данные решения следует только при невозможности исправить асимметричную маршрутизацию на уровне сетевой топологии.

Шлюз недоступен

Если шлюз отображается со статусом Down:

  1. Проверить физическое подключение к маршрутизатору-шлюзу.
  2. Убедиться, что маршрутизатор отвечает на ICMP-запросы. Некоторые устройства блокируют ping по умолчанию - в таком случае следует изменить Monitor IP на адрес хоста, гарантированно отвечающего на ICMP.
  3. Проверить ARP-таблицу на наличие записи для шлюза.
  4. Убедиться, что IP-адрес шлюза находится в подсети интерфейса pfSense.
  5. Проверить, не конфликтует ли адрес шлюза с другими устройствами в сети.

Управление маршрутами

В разделе System > Routing > Static Routes доступны следующие действия:

  • Редактирование - изменение параметров существующего маршрута (значок карандаша)
  • Клонирование - создание копии маршрута с возможностью изменения параметров (значок клонирования)
  • Удаление - удаление маршрута из конфигурации (значок корзины)
  • Отключение - деактивация маршрута без удаления (значок запрета)
  • Включение - активация ранее отключённого маршрута (значок галочки)

Внимание:

При использовании алиасов pfSense в поле Destination network редактирование алиаса немедленно обновляет таблицу маршрутизации без ожидания подтверждения от администратора. Следует учитывать это при управлении алиасами, используемыми в маршрутах.

Миграция с других платформ

Cisco IOS

В Cisco IOS статические маршруты добавляются командой ip route:

ip route 10.10.0.0 255.255.0.0 10.0.1.1
ip route 10.20.0.0 255.255.0.0 10.0.1.1

Эквивалент в pfSense:

  1. Создать шлюз с адресом 10.0.1.1 в System > Routing > Gateways.
  2. Создать два статических маршрута в System > Routing > Static Routes:
    • Destination: 10.10.0.0/16, Gateway: созданный шлюз
    • Destination: 10.20.0.0/16, Gateway: созданный шлюз

Ключевые отличия от Cisco IOS:

АспектCisco IOSpfSense
ШлюзУказывается в команде маршрутаСоздаётся отдельно, затем выбирается в маршруте
Маска подсетиОбратная маска (wildcard) или обычнаяCIDR-нотация (/16, /24)
Административная дистанцияНастраивается для каждого маршрутаНе поддерживается
Привязка к интерфейсуОпционально через ip route ... GigabitEthernet0/1Определяется интерфейсом шлюза
ПрименениеНемедленное (running-config)Требуется Apply Changes

MikroTik RouterOS

В MikroTik маршруты добавляются через /ip route:

/ip route add dst-address=10.10.0.0/16 gateway=10.0.1.1
/ip route add dst-address=10.20.0.0/16 gateway=10.0.1.1 distance=10

Эквивалент в pfSense аналогичен описанному выше. Ключевые отличия:

АспектMikroTik RouterOSpfSense
ШлюзУказывается в маршруте, создаётся автоматическиСоздаётся вручную заранее
Distance (метрика)Настраивается для каждого маршрутаНе поддерживается для статических маршрутов
Routing markПоддерживается для PBRРеализуется через правила файрвола
Проверка шлюзаcheck-gateway=pingВстроенный мониторинг dpinger
Области маршрутизацииRouting tables и VRFНе поддерживается

FortiGate

В FortiGate статические маршруты создаются в разделе Network > Static Routes или через CLI:

config router static
    edit 1
        set dst 10.10.0.0 255.255.0.0
        set gateway 10.0.1.1
        set device "port2"
    next
end

Ключевые отличия:

АспектFortiGatepfSense
ШлюзУказывается в маршруте вместе с интерфейсомСоздаётся как отдельная сущность
PriorityНастраивается для каждого маршрутаНе поддерживается
Health checkLink monitor через ICMP/HTTPdpinger через ICMP
ECMPНесколько маршрутов с одинаковым priorityGateway Groups
SDWANВстроенная поддержка SD-WANРеализуется через Gateway Groups и PBR

Рекомендации по проектированию

При планировании статической маршрутизации в pfSense следует учитывать следующие рекомендации:

  • Использовать агрегированные маршруты. Вместо множества маршрутов /24 к подсетям одного сегмента следует создать один суммарный маршрут. Например, вместо восьми маршрутов к 10.10.0.0/24 - 10.10.7.0/24 достаточно одного маршрута 10.10.0.0/21.

  • Документировать каждый маршрут. Поле Description следует заполнять информацией о назначении маршрута, связанных сервисах и ответственном подразделении. Это существенно упрощает диагностику в крупных инсталляциях.

  • Проверять обратные маршруты. Каждый статический маршрут предполагает наличие обратного маршрута на стороне целевого маршрутизатора. Отсутствие обратного маршрута - наиболее распространённая причина недоступности при корректно настроенном прямом маршруте.

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

  • Планировать мониторинг. Для критичных маршрутов следует настроить Monitor IP на адрес хоста в целевой сети, а не на адрес промежуточного маршрутизатора. Это позволяет обнаружить проблемы не только с ближайшим шлюзом, но и с доступностью конечной сети.

Связанные разделы

  • Policy Routing - маршрутизация трафика на основе правил файрвола, использование Gateway Groups
  • Multi-WAN в pfSense - настройка нескольких WAN-подключений с отказоустойчивостью и балансировкой
  • Файрвол pfSense - правила фильтрации, влияющие на прохождение трафика по статическим маршрутам
Last updated on