Исходящий NAT в pfSense - настройка Outbound NAT режимов
Исходящий NAT (outbound NAT, source NAT) в pfSense управляет трансляцией адреса источника для трафика, покидающего сеть через внешний интерфейс. Когда пакет от внутреннего хоста направляется в интернет, файрвол заменяет приватный адрес источника на публичный адрес WAN-интерфейса (или другой указанный адрес). Это базовый механизм, обеспечивающий доступ внутренних хостов с частными адресами RFC 1918 к ресурсам интернета.
pfSense предоставляет четыре режима работы исходящего NAT, различающихся степенью автоматизации и контроля. Выбор режима определяется сложностью сетевой инфраструктуры и требованиями к трансляции.
Режимы работы
pfSense поддерживает четыре режима исходящего NAT. Переключение между режимами выполняется в Firewall > NAT, вкладка Outbound.
| Режим | Описание | Когда использовать |
|---|---|---|
| Automatic | Автоматическая генерация правил для всех внутренних интерфейсов | Стандартные конфигурации с одним WAN |
| Hybrid | Автоматические правила + возможность добавления ручных правил | Необходимы отдельные исключения (static port, несколько WAN) |
| Manual | Только вручную созданные правила | Полный контроль над трансляцией |
| Disable | Исходящий NAT полностью отключён | Сети с маршрутизируемыми адресами |

Рис. 1. Выбор режима работы исходящего NAT
Сравнение режимов
| Характеристика | Automatic | Hybrid | Manual |
|---|---|---|---|
| Автоматические правила | Да | Да (как fallback) | Нет |
| Ручные правила | Игнорируются | Обрабатываются первыми | Единственный источник правил |
| Реакция на добавление интерфейса | Автоматически | Автоматически (для fallback) | Требуется ручное добавление правила |
| Сложность настройки | Минимальная | Средняя | Высокая |
| Риск потери связи | Минимальный | Низкий | Высокий (при ошибке) |
| Рекомендуется для | Базовых конфигураций | Большинства production-систем | Сложных многоинтерфейсных конфигураций |
Автоматический режим
Автоматический режим (Automatic Outbound NAT) - настройка по умолчанию после установки pfSense. В этом режиме файрвол самостоятельно создаёт правила исходящего NAT для каждой комбинации внутреннего интерфейса и подсети.
Автоматически генерируемые правила выполняют следующие трансляции:
- Трафик из подсетей LAN, OPT1, OPT2 и других внутренних интерфейсов транслируется в адрес WAN-интерфейса.
- Трафик VPN-клиентов (OpenVPN, IPsec) транслируется в адрес WAN.
- Для localhost (127.0.0.0/8) генерируется правило ISAKMP (порт 500) с флагом static port для корректной работы IPsec.
Автоматические правила отображаются в интерфейсе как read-only записи. Они не могут быть изменены или удалены - только просмотрены.
Автоматический режим подходит для большинства простых конфигураций. Переключение на другой режим требуется при наличии хотя бы одного из условий:
- Необходим static port для отдельных хостов или протоколов.
- Используется несколько WAN-интерфейсов с различными правилами трансляции.
- Требуется привязка определённых подсетей к конкретным внешним адресам.
Гибридный режим
Гибридный режим (Hybrid Outbound NAT) сочетает преимущества автоматического и ручного режимов. Автоматические правила продолжают генерироваться и служат базой (fallback), а ручные правила добавляются поверх них и обрабатываются с более высоким приоритетом.
Порядок обработки в гибридном режиме:
- Сначала проверяются ручные правила (сверху вниз).
- Если ни одно ручное правило не совпало, проверяются автоматические правила.
Гибридный режим рекомендуется для большинства production-конфигураций. Он позволяет добавлять специфические правила (static port для SIP, привязка подсети к определённому WAN) без необходимости вручную поддерживать полный набор правил.
Типичный сценарий использования гибридного режима:
- Переключить режим на Hybrid Outbound NAT.
- Нажать Save, затем Apply Changes.
- Создать ручное правило для конкретного исключения (например, static port для SIP-сервера).
- Весь остальной трафик продолжает обрабатываться автоматическими правилами.
Ручной режим
Ручной режим (Manual Outbound NAT) передаёт администратору полный контроль над правилами исходящего NAT. Все автоматические правила удаляются, и используются исключительно вручную созданные правила.
Внимание:
При переключении в ручной режим pfSense предложит скопировать текущие автоматические правила в качестве основы. Настоятельно рекомендуется принять это предложение. Если отказаться от копирования и не создать правила вручную, весь исходящий трафик прекратит трансляцию, и внутренние хосты потеряют доступ к интернету.
Ручной режим необходим в следующих случаях:
- Требуется полностью нестандартная конфигурация трансляции.
- Необходимо точное управление порядком обработки правил.
- Используются сложные схемы с множеством WAN-интерфейсов, VPN и специфических трансляций.
- Требуется правило “Do not NAT” для определённого трафика (например, для трафика между VPN-сегментами).
При добавлении нового интерфейса или подсети в ручном режиме правила NAT не создаются автоматически. Администратор должен добавить соответствующие правила вручную, иначе трафик нового интерфейса не будет транслироваться.
Создание правила
Пошаговая настройка
- Перейти в Firewall > NAT, вкладка Outbound.
- Убедиться, что выбран режим Hybrid или Manual.
- Нажать Add для создания нового правила.

Рис. 2. Список правил исходящего NAT
- Заполнить параметры правила:
Основные параметры
| Поле | Описание | Пример |
|---|---|---|
| Interface | Исходящий интерфейс (куда направляется трафик) | WAN |
| Address Family | Семейство адресов | IPv4 |
| Protocol | Протокол (any для всех) | Any |
| Source | Адрес или подсеть источника | 192.168.1.0/24 |
| Source port | Порт источника (обычно Any) | Any |
| Destination | Адрес назначения | Any |
| Destination port | Порт назначения | Any |
Параметры трансляции
| Поле | Описание | Пример |
|---|---|---|
| Translation Address | Адрес, на который транслируется источник | Interface Address |
| Translation Port | Порт или диапазон портов трансляции | (пусто для автоматического) |
| Static Port | Сохранять исходный порт клиента | Не отмечен |
| Pool Options | Метод выбора адреса из пула (при использовании алиаса) | Default |
Дополнительные параметры
| Поле | Описание |
|---|---|
| Disabled | Отключить правило без удаления |
| Do not NAT | Пометить трафик для исключения из трансляции |
| No XMLRPC Sync | Не синхронизировать правило в HA-конфигурациях |
| Description | Описание назначения правила |
- Нажать Save, затем Apply Changes.
Translation Address - варианты значений
- Interface Address - адрес исходящего интерфейса (WAN IP). Наиболее распространённый вариант.
- Virtual IP - конкретный VIP-адрес, созданный на исходящем интерфейсе. Используется для привязки подсети к определённому публичному адресу.
- Alias - группа адресов для распределения нагрузки. Совместно с Pool Options обеспечивает балансировку по нескольким внешним адресам.
- Other Subnet - произвольная подсеть для трансляции.
Pool Options
При использовании алиаса или подсети в Translation Address доступны варианты распределения:
| Метод | Описание |
|---|---|
| Default | Round Robin без сохранения привязки |
| Round Robin | Последовательное переключение между адресами |
| Round Robin with Sticky Address | Round Robin с привязкой клиента к адресу |
| Random | Случайный выбор адреса из пула |
| Random with Sticky Address | Случайный выбор с сохранением привязки |
| Source Hash | Детерминированный выбор на основе хэша адреса источника |
| Bitmask | Маскирование адреса (используется для /24 ↔ /24 трансляций) |
Типичные сценарии
Static port для SIP и VoIP
Протоколы SIP, IKE (IPsec) и некоторые игровые протоколы требуют сохранения исходного порта источника при трансляции. По умолчанию pfSense выполняет рандомизацию портов для повышения безопасности, что нарушает работу этих протоколов.
Настройка static port в гибридном режиме:
- Переключить Outbound NAT в режим Hybrid.
- Создать правило:
- Interface - WAN
- Source - адрес SIP-сервера или телефона (например,
192.168.1.200/32) - Destination - Any
- Translation Address - Interface Address
- Static Port - отмечен
- Description - “Static port for SIP PBX”
- Сохранить и применить изменения.
Для IPsec VPN, инициируемого самим файрволом, pfSense автоматически создаёт правило с static port для UDP 500 (ISAKMP) и UDP 4500 (NAT-T) в автоматическом и гибридном режимах.
Внимание:
Флаг Static Port несовместим с использованием одного внешнего адреса для нескольких внутренних хостов с одинаковым портом источника. Если два SIP-телефона одновременно инициируют соединение с порта 5060, возникнет конфликт. В таком случае каждому устройству следует назначить отдельный VIP через индивидуальные правила.
Привязка подсети к определённому WAN-адресу
В конфигурациях с несколькими WAN-интерфейсами или дополнительными публичными адресами может потребоваться, чтобы определённая внутренняя подсеть выходила в интернет через конкретный внешний адрес.
Пример: подсеть серверов 10.0.2.0/24 должна использовать VIP 203.0.113.20 вместо основного WAN IP.
- Создать VIP
203.0.113.20на WAN-интерфейсе (Firewall > Virtual IPs). - Переключить Outbound NAT в режим Hybrid.
- Создать правило:
- Interface - WAN
- Source -
10.0.2.0/24 - Destination - Any
- Translation Address -
203.0.113.20(выбрать VIP из списка) - Description - “Server subnet outbound via VIP”
- Сохранить и применить.
Весь остальной трафик продолжит транслироваться в WAN IP через автоматические правила.
Multi-WAN и policy-based NAT
При использовании нескольких WAN-интерфейсов (multi-WAN) каждому WAN требуются собственные правила исходящего NAT. В автоматическом и гибридном режимах pfSense создаёт правила для каждого WAN-интерфейса автоматически.
При необходимости направить трафик определённой подсети через конкретный WAN (policy routing) следует:
- Создать шлюз или группу шлюзов в System > Routing.
- Создать правило файрвола на внутреннем интерфейсе с указанием шлюза (поле Gateway).
- В гибридном или ручном режиме outbound NAT убедиться, что существует правило для соответствующего WAN-интерфейса и подсети.
Правило Do not NAT
В некоторых сценариях требуется исключить определённый трафик из трансляции:
- Трафик между VPN-сегментами, использующими приватные адреса.
- Трафик к peer-сетям через GRE-туннель.
- Трафик к сетям, маршрутизируемым без NAT.
Для создания исключения:
- Создать правило outbound NAT с отмеченным флагом Do not NAT.
- В поле Source указать подсеть источника.
- В поле Destination указать целевую подсеть, для которой трансляция не требуется.
- Разместить правило выше правила, выполняющего трансляцию для этого трафика.
Устранение неполадок
Потеря интернета после переключения в ручной режим
Наиболее распространённая проблема - переключение в ручной режим без создания необходимых правил или с отклонением предложения скопировать автоматические правила.
Решение:
- Перейти в Firewall > NAT > Outbound.
- Переключить режим обратно на Automatic или Hybrid.
- Нажать Save, затем Apply Changes.
- Проверить восстановление доступа к интернету с внутренних хостов.
Если доступ к веб-интерфейсу утрачен, подключиться к консоли файрвола (последовательный порт или физическая консоль) и выполнить:
# Reset outbound NAT to automatic mode
pfctl -d && pfctl -e -f /tmp/rules.debugАльтернативно - использовать меню консоли: опция Reset to factory defaults в качестве крайней меры.
Static port не работает
Симптомы: SIP-телефон регистрируется, но не проходят звонки; IPsec Phase 1 не устанавливается.
Проверка:
- Убедиться, что правило с Static Port расположено выше общего правила NAT для данной подсети.
- Проверить, что в правиле указан корректный адрес источника (конкретный хост, а не вся подсеть, если проблема касается одного устройства).
- Проверить таблицу состояний (Diagnostics > States) - порт источника должен совпадать с портом в трансляции.
- Убедиться, что флаг Static Port отмечен именно в правиле outbound NAT, а не в правиле файрвола.
# Verify NAT rules in pf
pfctl -s nat
# Check state table for SIP traffic
pfctl -ss | grep 5060Multi-WAN: трафик уходит через неверный WAN
При использовании нескольких WAN-интерфейсов трафик может транслироваться через неверный адрес.
Проверка:
- Убедиться, что правило файрвола на внутреннем интерфейсе имеет корректный Gateway (шлюз конкретного WAN).
- Проверить, что в outbound NAT существует правило для целевого WAN-интерфейса и подсети источника.
- В ручном режиме проверить, что правила существуют для каждого WAN-интерфейса.
- Проверить состояние шлюзов в Status > Gateways - неработающий шлюз вызовет переключение на резервный WAN.
Диагностические команды
# View all outbound NAT rules loaded in pf
pfctl -s nat
# Check which external address is used for specific internal host
pfctl -ss | grep 192.168.1.100
# Verify NAT translation in real-time
tcpdump -i em0 src host 192.168.1.100 -n
# Test outbound address from the server
curl -4 ifconfig.meМиграция с других платформ
Cisco ASA
В Cisco ASA динамический NAT (PAT) настраивается через объекты NAT (версии 8.3+) или глобальный NAT (до 8.3).
ASA 8.3+ (Object NAT, PAT):
object network INSIDE-SUBNET
subnet 192.168.1.0 255.255.255.0
nat (INSIDE,OUTSIDE) dynamic interfaceASA 8.3+ (Twice NAT с пулом адресов):
nat (INSIDE,OUTSIDE) source dynamic INSIDE-SUBNET PAT-POOL
object network PAT-POOL
range 203.0.113.10 203.0.113.15Эквивалент в pfSense:
- Для стандартного PAT через WAN IP - автоматический режим outbound NAT (настройка по умолчанию).
- Для PAT через пул адресов - гибридный или ручной режим с VIP-адресами и правилом, использующим алиас в Translation Address с Pool Options Round Robin.
Ключевое отличие: в ASA настройка dynamic NAT объединяет трансляцию и контроль через ACL. В pfSense outbound NAT и правила файрвола - независимые сущности.
FortiGate
В FortiGate исходящий NAT реализуется через IP Pool в политике файрвола.
Стандартный PAT (overload):
config firewall policy
edit 1
set srcintf "lan"
set dstintf "wan1"
set srcaddr "LAN-SUBNET"
set dstaddr "all"
set action accept
set nat enable
next
endPAT через IP Pool:
config firewall ippool
edit "OUTBOUND-POOL"
set startip 203.0.113.10
set endip 203.0.113.15
set type overload
next
end
config firewall policy
edit 1
set srcintf "lan"
set dstintf "wan1"
set srcaddr "LAN-SUBNET"
set dstaddr "all"
set action accept
set nat enable
set ippool enable
set poolname "OUTBOUND-POOL"
next
endВ FortiGate NAT является атрибутом политики файрвола. В pfSense outbound NAT настраивается отдельно от правил файрвола, что обеспечивает более явное разделение функций трансляции и фильтрации.
MikroTik RouterOS
В MikroTik RouterOS исходящий NAT реализуется через правило masquerade или src-nat в цепочке srcnat.
Masquerade (аналог автоматического режима):
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masqueradeSource NAT с фиксированным адресом:
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 out-interface=ether1 \
action=src-nat to-addresses=203.0.113.10Отличия при миграции:
masqueradeв MikroTik автоматически использует адрес исходящего интерфейса (аналогично Interface Address в pfSense).src-natс указаниемto-addressesэквивалентен правилу outbound NAT с конкретным Translation Address.- В MikroTik RouterOS правила NAT и файрвола находятся в разных цепочках одной таблицы
/ip firewall. В pfSense NAT и файрвол - полностью раздельные подсистемы pf.
Связанные разделы
- Проброс портов - перенаправление входящего трафика на внутренние серверы
- 1:1 NAT - биективная трансляция адресов, взаимодействие с outbound NAT
- Обзор NAT в pfSense - порядок обработки NAT и взаимодействие механизмов трансляции
- Правила файрвола - создание правил фильтрации и policy routing