Статические маршруты в 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:
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
| Weight | 1 | Вес шлюза при балансировке нагрузки в Gateway Group (1-30) |
| Data Payload | 1 байт | Размер полезной нагрузки ICMP-пакета |
| Latency Warning | 200 мс | Порог задержки для предупреждения |
| Latency Down | 500 мс | Порог задержки для признания шлюза недоступным |
| Loss Warning | 10% | Порог потери пакетов для предупреждения |
| Loss Down | 20% | Порог потери пакетов для признания шлюза недоступным |
| Probe Interval | 500 мс | Интервал отправки ICMP-запросов |
| Time Period | 60 сек | Окно усреднения результатов мониторинга |
Внимание:
Для внутренних шлюзов со стабильным соединением допустимо увеличить пороги задержки и потери пакетов, чтобы избежать ложных срабатываний. Для WAN-шлюзов значения по умолчанию подходят в большинстве случаев.
Пример: шлюз для внутреннего маршрутизатора
Допустим, в сети присутствует маршрутизатор с адресом 10.0.1.1 на интерфейсе LAN (подсеть 10.0.1.0/24). За этим маршрутизатором расположены подсети 10.10.0.0/16 и 10.20.0.0/16.
Параметры шлюза:
| Поле | Значение |
|---|---|
| Interface | LAN |
| Address Family | IPv4 |
| Name | INTERNAL_ROUTER_DC1 |
| Gateway | 10.0.1.1 |
| Monitor IP | 10.10.0.1 |
| Description | Internal 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 network | 10.10.0.0/16 |
| Gateway | INTERNAL_ROUTER_DC1 - 10.0.1.1 |
| Disabled | не установлен |
| Description | DC1 server subnet via internal router |
После сохранения и применения изменений (Save, затем Apply Changes) pfSense добавляет маршрут в системную таблицу маршрутизации.
Пример: маршрут к VPN-сети
При использовании VPN-концентратора, отличного от встроенного VPN pfSense, трафик к удалённым VPN-подсетям необходимо направлять через адрес VPN-устройства:
| Поле | Значение |
|---|---|
| Destination network | 172.16.0.0/12 |
| Gateway | VPN_CONCENTRATOR - 10.0.1.5 |
| Disabled | не установлен |
| Description | Remote 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 и может вызвать автоматическое переключение трафика на резервный шлюз.
Диагностика и устранение неполадок
Маршрут не работает
Если после создания статического маршрута трафик не достигает целевой сети, необходимо последовательно проверить следующие аспекты:
Маршрут присутствует в таблице. Открыть Diagnostics > Routes и убедиться, что маршрут отображается с корректным шлюзом и интерфейсом. Если маршрут отсутствует, проверить, применены ли изменения (кнопка Apply Changes).
Шлюз доступен. Проверить состояние шлюза в Status > Gateways. Если статус Down или Gathering Data, выполнить ping шлюза из консоли pfSense: Diagnostics > Ping, указав адрес шлюза и исходный интерфейс.
Обратный маршрут существует. На внутреннем маршрутизаторе должен быть маршрут обратно к подсетям pfSense. Без обратного маршрута пакеты достигают назначения, но ответы теряются.
Правила файрвола разрешают трафик. Статический маршрут обеспечивает доставку на сетевом уровне, но правила файрвола могут блокировать трафик. Проверить правила на исходном и целевом интерфейсах.
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:
- Проверить физическое подключение к маршрутизатору-шлюзу.
- Убедиться, что маршрутизатор отвечает на ICMP-запросы. Некоторые устройства блокируют ping по умолчанию - в таком случае следует изменить Monitor IP на адрес хоста, гарантированно отвечающего на ICMP.
- Проверить ARP-таблицу на наличие записи для шлюза.
- Убедиться, что IP-адрес шлюза находится в подсети интерфейса pfSense.
- Проверить, не конфликтует ли адрес шлюза с другими устройствами в сети.
Управление маршрутами
В разделе 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:
- Создать шлюз с адресом 10.0.1.1 в System > Routing > Gateways.
- Создать два статических маршрута в System > Routing > Static Routes:
- Destination:
10.10.0.0/16, Gateway: созданный шлюз - Destination:
10.20.0.0/16, Gateway: созданный шлюз
- Destination:
Ключевые отличия от Cisco IOS:
| Аспект | Cisco IOS | pfSense |
|---|---|---|
| Шлюз | Указывается в команде маршрута | Создаётся отдельно, затем выбирается в маршруте |
| Маска подсети | Обратная маска (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 RouterOS | pfSense |
|---|---|---|
| Шлюз | Указывается в маршруте, создаётся автоматически | Создаётся вручную заранее |
| 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Ключевые отличия:
| Аспект | FortiGate | pfSense |
|---|---|---|
| Шлюз | Указывается в маршруте вместе с интерфейсом | Создаётся как отдельная сущность |
| Priority | Настраивается для каждого маршрута | Не поддерживается |
| Health check | Link monitor через ICMP/HTTP | dpinger через ICMP |
| ECMP | Несколько маршрутов с одинаковым priority | Gateway 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 - правила фильтрации, влияющие на прохождение трафика по статическим маршрутам