1:1 NAT в pfSense - статическая трансляция адресов
1:1 NAT (one-to-one NAT) в pfSense реализует полную двустороннюю трансляцию между внешним и внутренним IP-адресом. В отличие от проброса портов, при котором транслируются только указанные порты, 1:1 NAT устанавливает биективное соответствие адресов: весь входящий трафик на внешний адрес перенаправляется на внутренний хост, а весь исходящий трафик от этого хоста транслируется в назначенный внешний адрес. Механизм основан на BINAT (bidirectional NAT) подсистемы pf из OpenBSD.
1:1 NAT применяется в сценариях, когда внутреннему серверу требуется полное присутствие на выделенном публичном IP-адресе без ограничений по портам. Типичные случаи: почтовые серверы, VPN-шлюзы, SIP-серверы и хосты в DMZ с выделенным адресом.
Отличия от проброса портов
Проброс портов (port forward) и 1:1 NAT решают схожую задачу - предоставление доступа к внутренним ресурсам извне, - однако принципиально различаются по области применения.
При пробросе портов транслируется конкретная пара протокол/порт (или диапазон портов). Внутренний хост остаётся доступен извне только по явно указанным портам. Это минимизирует поверхность атаки: администратор контролирует, какие именно сервисы открыты.
При 1:1 NAT транслируется весь адрес целиком. Контроль доступа полностью возлагается на правила файрвола: без ограничивающих правил на WAN-интерфейсе все порты внутреннего хоста будут доступны из интернета.
| Характеристика | Проброс портов | 1:1 NAT |
|---|---|---|
| Гранулярность | Конкретные порты или диапазоны | Все порты и протоколы |
| Количество правил для одного сервера | По одному на каждый сервис | Одно правило на весь хост |
| Контроль доступа | Встроен в правило NAT | Требует отдельных правил файрвола |
| Поверхность атаки | Минимальная | Зависит от правил файрвола |
| Требование VIP | Нет (используется WAN IP) | Да (требуется выделенный IP) |
| Исходящий трафик | Транслируется в WAN IP | Транслируется в назначенный VIP |
| Приоритет обработки | Выше (обрабатывается первым) | Ниже (обрабатывается после port forward) |
Внимание:
Если для одного внешнего адреса настроены и проброс порта, и 1:1 NAT, проброс порта получит приоритет для совпавших портов. Остальной трафик обработает 1:1 NAT. Этот факт необходимо учитывать при планировании конфигурации.
Когда использовать 1:1 NAT
1:1 NAT следует применять в следующих случаях:
- Выделенный публичный IP для сервера - сервер должен быть доступен по всем портам на собственном публичном адресе (почтовый сервер, игровой сервер, PBX).
- DMZ с несколькими серверами - каждый сервер в DMZ получает отдельный публичный IP из выделенного блока адресов.
- Совместимость протоколов - некоторые протоколы (SIP, FTP active mode, отдельные VPN-реализации) работают некорректно через проброс портов из-за встраивания IP-адреса в тело пакета. 1:1 NAT решает эту проблему, поскольку транслирует адрес на всех уровнях.
- Упрощение конфигурации - вместо десятков правил проброса для одного сервера создаётся одно правило 1:1 NAT и набор правил файрвола.
- Трансляция подсетей - 1:1 NAT позволяет транслировать целые подсети с совпадающей маской (например,
/28на/28), что удобно при миграции адресных пространств.
Не следует использовать 1:1 NAT, если:
- Для сервера достаточно открыть один-два порта - проброс портов проще и безопаснее.
- Внешний адрес совпадает с основным WAN IP, а на файрволе работают VPN-сервисы (OpenVPN, IPsec), требующие использования WAN-адреса.
- Необходим NAT только для входящего трафика без изменения исходящего адреса.
Предварительные требования
Виртуальные IP-адреса (VIP)
Для настройки 1:1 NAT с дополнительным публичным IP-адресом необходимо предварительно создать Virtual IP (VIP) на WAN-интерфейсе. VIP сообщает pfSense, что файрвол должен принимать трафик, адресованный этому дополнительному IP-адресу.
Создание VIP:
- Перейти в Firewall > Virtual IPs.
- Нажать Add.
- Заполнить параметры:
- Type - IP Alias (для одиночного адреса) или Other (для маршрутизируемых подсетей).
- Interface - WAN (или соответствующий внешний интерфейс).
- Address(es) - публичный IP-адрес с маской подсети (обычно
/32для одиночного адреса). - Description - назначение адреса (например, “Mail server public IP”).
- Нажать Save, затем Apply Changes.
Внимание:
Тип VIP CARP используется в конфигурациях высокой доступности (HA). Для 1:1 NAT на автономном файрволе рекомендуется тип IP Alias. Тип Proxy ARP также допустим, однако IP Alias предпочтительнее, поскольку создаёт адрес непосредственно на интерфейсе, что обеспечивает корректную работу сервисов, привязанных к интерфейсу.
Маршрутизация
Провайдер должен маршрутизировать дополнительные публичные адреса на WAN-интерфейс файрвола. Без корректной маршрутизации со стороны провайдера 1:1 NAT не будет функционировать - пакеты к внешнему адресу не достигнут файрвола.
Для маршрутизируемых подсетей (/29, /28 и т.д.), предоставленных провайдером, тип VIP следует выбирать в зависимости от способа доставки: IP Alias для адресов, находящихся в одной подсети с WAN-интерфейсом, или Other для адресов, маршрутизируемых через шлюз.
Настройка 1:1 NAT
Создание правила
- Перейти в Firewall > NAT, вкладка 1:1.
- Нажать Add для создания нового правила.

Рис. 1. Список правил 1:1 NAT
- Заполнить параметры правила:
| Поле | Описание | Пример значения |
|---|---|---|
| Interface | Внешний интерфейс, на котором принимается трафик | WAN |
| External subnet IP | Публичный IP-адрес (VIP), назначенный для трансляции | 203.0.113.10 |
| Internal IP | Внутренний IP-адрес целевого хоста или подсеть с маской | 10.0.1.50 или 10.0.1.0/24 |
| Destination | Ограничение трансляции по адресу назначения (опционально) | Any |
| Description | Описание назначения правила | Mail server 1:1 NAT |
| NAT Reflection | Режим NAT reflection (использовать системный или переопределить) | Use system default |
| Negate | Исключить совпавший трафик из трансляции (инверсия правила) | Не отмечен |
- Нажать Save, затем Apply Changes.

Рис. 2. Форма редактирования правила 1:1 NAT
Трансляция подсетей
1:1 NAT поддерживает трансляцию целых подсетей при условии совпадения масок. Например, для трансляции блока /28:
- External subnet IP -
203.0.113.16/28 - Internal IP -
10.0.1.16/28
В этом случае 203.0.113.17 транслируется в 10.0.1.17, 203.0.113.18 в 10.0.1.18 и так далее. Последние октеты адресов совпадают, что упрощает документирование и диагностику.
Ограничение по назначению
Поле Destination позволяет ограничить область действия 1:1 NAT. По умолчанию трансляция применяется ко всему трафику (Any). Если указать конкретный адрес или подсеть в поле Destination:
- Для входящего трафика - трансляция применяется только к пакетам, адресованным указанному внутреннему хосту/подсети.
- Для исходящего трафика - трансляция адреса источника выполняется только для пакетов, направленных к указанному адресу назначения.
Это полезно в сценариях, когда сервер должен использовать разные внешние адреса для трафика к разным направлениям.
Правила файрвола
1:1 NAT не создаёт автоматических правил файрвола (в отличие от проброса портов, который может генерировать связанные правила). После настройки 1:1 NAT необходимо вручную создать разрешающие правила на WAN-интерфейсе.
Создание правил для 1:1 NAT
Правила создаются на вкладке WAN в Firewall > Rules. В качестве адреса назначения следует указывать внутренний IP-адрес хоста, поскольку трансляция NAT выполняется до обработки правил файрвола.
Пример набора правил для почтового сервера 10.0.1.50 с 1:1 NAT:
| Действие | Протокол | Источник | Порт назначения | Назначение |
|---|---|---|---|---|
| Pass | TCP | Any | 25 (SMTP) | 10.0.1.50 |
| Pass | TCP | Any | 465 (SMTPS) | 10.0.1.50 |
| Pass | TCP | Any | 993 (IMAPS) | 10.0.1.50 |
| Pass | TCP | Any | 443 (HTTPS) | 10.0.1.50 |
Внимание:
Не создавайте правило “Allow all” на WAN для адреса 1:1 NAT. В отличие от проброса портов, при 1:1 NAT разрешающее правило без ограничений по портам откроет все порты внутреннего сервера для доступа из интернета, включая SSH, RDP, базы данных и другие сервисы, не предназначенные для публичного доступа.
Распространённые ошибки
- Указание внешнего адреса в правиле файрвола - при 1:1 NAT в правилах WAN необходимо указывать внутренний IP-адрес в поле Destination, поскольку трансляция происходит до фильтрации.
- Отсутствие правил файрвола - без явных разрешающих правил весь входящий трафик блокируется неявным правилом deny, несмотря на настроенный 1:1 NAT.
- Конфликт с пробросом портов - если для того же внешнего IP настроен проброс порта, он перехватит трафик на указанных портах раньше 1:1 NAT.
Сравнение с пробросом портов
Выбор между 1:1 NAT и пробросом портов зависит от требований конкретного сценария.
| Критерий | 1:1 NAT | Проброс портов |
|---|---|---|
| Количество открытых портов | Все (ограничиваются правилами файрвола) | Только явно указанные |
| Требуется VIP | Да | Нет (можно использовать WAN IP) |
| Исходящий адрес хоста | Транслируется в назначенный VIP | Транслируется в WAN IP (outbound NAT) |
| Сложность настройки | Одно правило NAT + правила файрвола | Одно правило NAT на каждый порт/сервис |
| Рекомендуется для | Серверов с множеством сервисов, DMZ | Единичных сервисов (веб, SSH, RDP) |
| Безопасность по умолчанию | Требует тщательной настройки правил файрвола | Ограничена указанными портами |
| Совместимость с VPN на файрволе | Ограничена (нельзя использовать WAN IP) | Полная |
| Поддержка подсетей | Да | Нет |
Рекомендация: если для сервера достаточно открыть менее пяти портов и не требуется фиксированный исходящий адрес, проброс портов предпочтительнее с точки зрения безопасности. Для серверов с большим количеством сервисов или требованием выделенного публичного адреса следует использовать 1:1 NAT.
Устранение неполадок
1:1 NAT не работает
Трафик не достигает внутреннего сервера:
- Проверить наличие VIP - Firewall > Virtual IPs. Без VIP файрвол не принимает трафик на дополнительном адресе.
- Проверить маршрутизацию от провайдера - выполнить
pingиtracerouteк внешнему адресу с внешнего хоста. Пакеты должны доходить до WAN-интерфейса файрвола. - Проверить правила файрвола на WAN - убедиться, что существует разрешающее правило с внутренним IP в поле Destination.
- Проверить журнал файрвола - Status > System Logs > Firewall. Заблокированные пакеты отображаются с указанием правила, вызвавшего блокировку.
Исходящий трафик сервера использует неверный внешний адрес:
- Проверить, что правило 1:1 NAT не имеет ограничений в поле Destination, если требуется трансляция всего исходящего трафика.
- Проверить порядок правил - 1:1 NAT имеет приоритет над outbound NAT. Если правило outbound NAT обрабатывает трафик раньше, возможно наличие конфликта конфигурации.
- Проверить с помощью внешнего сервиса (например,
curl ifconfig.meс сервера) - отображаемый адрес должен совпадать с External subnet IP из правила 1:1 NAT.
NAT reflection не работает:
При обращении к внешнему адресу из внутренней сети:
- Проверить настройки NAT reflection в System > Advanced > Firewall & NAT, раздел Network Address Translation.
- Для 1:1 NAT reflection должен быть включён режим NAT + proxy или Pure NAT.
- Убедиться, что в правиле 1:1 NAT не установлено переопределение reflection в значение “Disable”.
Диагностические команды
# Check if VIP responds to ARP
arping -I em0 203.0.113.10
# Verify NAT translation in packet filter
pfctl -s nat
# Check state table for specific host
pfctl -ss | grep 10.0.1.50
# Test connectivity from WAN perspective
tcpdump -i em0 host 203.0.113.10 -nМиграция с других платформ
Cisco ASA
В Cisco ASA статическая трансляция настраивается командой static (версии до 8.3) или объектами NAT (версии 8.3+).
ASA 8.3+ (Object NAT):
object network MAIL-SERVER
host 10.0.1.50
nat (DMZ,OUTSIDE) static 203.0.113.10Эквивалент в pfSense:
- Создать VIP
203.0.113.10на WAN-интерфейсе. - Создать правило 1:1 NAT: External
203.0.113.10, Internal10.0.1.50, Interface WAN. - Создать правила файрвола на WAN для разрешённых портов.
Ключевое отличие: в ASA ACL применяется к интерфейсу и использует реальные (после трансляции) адреса начиная с версии 8.3. В pfSense правила файрвола всегда оперируют внутренними адресами, поскольку трансляция выполняется до фильтрации.
FortiGate
В FortiGate аналогом 1:1 NAT является VIP (Virtual IP) с типом “static-nat” без ограничения портов.
config firewall vip
edit "MAIL-SERVER-VIP"
set extip 203.0.113.10
set mappedip 10.0.1.50
set extintf "wan1"
next
end
config firewall policy
edit 10
set srcintf "wan1"
set dstintf "dmz"
set srcaddr "all"
set dstaddr "MAIL-SERVER-VIP"
set service "SMTP" "SMTPS" "IMAPS" "HTTPS"
set action accept
next
endВ pfSense конфигурация разделена на три элемента: VIP, правило 1:1 NAT и правила файрвола. В FortiGate VIP объединяет функции VIP и NAT-правила pfSense.
MikroTik RouterOS
В MikroTik RouterOS 1:1 NAT реализуется комбинацией двух правил NAT: dst-nat для входящего и src-nat для исходящего трафика.
/ip firewall nat
add chain=dstnat dst-address=203.0.113.10 action=dst-nat to-addresses=10.0.1.50
add chain=srcnat src-address=10.0.1.50 action=src-nat to-addresses=203.0.113.10В pfSense оба направления трансляции объединены в одном правиле 1:1 NAT. Это упрощает конфигурацию и исключает несогласованность между правилами входящей и исходящей трансляции.
Дополнительное отличие: в MikroTik RouterOS правила файрвола в цепочке forward по умолчанию имеют политику accept, тогда как в pfSense действует неявный deny. При миграции необходимо создать все разрешающие правила явно.
Связанные разделы
- Проброс портов - перенаправление входящего трафика на внутренние серверы по конкретным портам
- Исходящий NAT - управление трансляцией адресов исходящего трафика
- Правила файрвола - создание правил фильтрации, необходимых для работы 1:1 NAT
- Обзор NAT в pfSense - порядок обработки NAT, поведение по умолчанию и взаимодействие механизмов трансляции