Почему не работает Port Forwarding в OPNsense? У меня есть следующая конфигурация: HPE DL120 Gen9 с Proxmox VE 9.0.3, на котором работают три ВМ: OPNsense 25.7 с последними обновлениями, Debian 13 с Apache2 и Debian 13 с 1С-Предприятие. В Proxmox созданы три Linux Bridge: vmbr0 (WAN, привязан к физическому eno1), vmbr1 (LAN, привязан к физическому eno2) и vmbr2 (DMZ, не привязан ни к чему). OPNsense владеет всеми тремя интерфейсами, ВМ с 1С-Предприятие только LAN, а ВМ с Apache2 только DMZ. Я пытаюсь настроить NAT Port Forwarding уже трое суток, но сайт из DMZ не отвечает браузеру. Я экспериментировал с правилами, разрешив IN от всех на всё на интерфейсах DMZ и WAN, но сайт из WAN-сети не открывается. tcpdump -i ens18 -n port 8080 показывает, что входящий трафик приходит, но через некоторое количество пакетов соединение сбрасывается (RST). Я перебирал настройки, переустанавливал OPNsense, пересоздавал мосты в Proxmox, изучал документацию по PF и NAT от OPNsense, но безрезультатно. Для сравнения я установил pfSense и с одним правилом на WAN и одним правилом для NAT (8080 WAN на 8080 в DMZ) всё заработало. В чем может быть проблема с OPNsense? Возможно ли, что это баг в state table или особенности работы автоматических правил Floating? Я пытался настраивать SNAT и включать/отключать Reflection, но это не помогло.
Ваша проблема с Port Forwarding в OPNsense, скорее всего, связана с особенностями работы правил Floating, состояниями в state table или конфигурацией межсетевого экрана. Распространенные причины включают конфликты правил, неправильную настройку интерфейсов или проблемы с обработкой состояний соединений, которые часто проявляются как сбросы соединений (RST).
Содержание
- Основные причины проблемы Port Forwarding
- Пошаговая диагностика и решение
- Конфигурация правил Floating
- Проблемы state table и их устранение
- Сравнение OPNsense и pfSense
- Рекомендации по оптимизации
Основные причины проблемы Port Forwarding
Проблемы с Port Forwarding в OPNsense обычно возникают по нескольким основным причинам:
Конфликты правил межсетевого экрана
Правила могут блокировать трафик до того, как он дойдет до правил NAT. В вашем случае, несмотря на разрешение IN от всех на всё, могут существовать неявные правила или политики безопасности, которые interfere с обработкой трафика.
Особенности работы Floating правил
В OPNsense Floating правила имеют приоритет над обычными правилами. Если у вас есть правило, блокирующее весь трафик на интерфейсе WAN, оно может срабатывать до обработки правил Port Forwarding, что приводит к сбросу соединений.
Проблемы с state table
State table отслеживает состояния соединений. Если в таблице состояний возникает конфликт или переполнение, соединения могут сбрасываться независимо от конфигурации NAT.
Неправильная настройка интерфейсов
С конфигурацией трех мостов vmbr0 (WAN), vmbr1 (LAN) и vmbr2 (DMZ) могут возникнуть проблемы с маршрутизацией и определением интерфейсов, особенно если vmbr2 не привязан к физическому интерфейсу.
Важно: tcpdump, показывающий входящий трафик с последующим сбросом RST, указывает на то, что проблема находится на уровне межсетевого экрана OPNsense, а не на уровне клиента или сервера.
Пошаговая диагностика и решение
1. Проверка базовой конфигурации
Убедитесь, что интерфейсы правильно определены в OPNsense:
# Проверка активных интерфейсов
ifconfig | grep -E "(ens|em|igb)"
# Проверка маршрутизации
netstat -rn
2. Тестирование без правил межсетевого экрана
Временно отключите все rulesets и проверьте, работает ли Port Forwarding:
- Перейдите в
Firewall > Rulesи отключите все правила - Проверьте доступность сервиса
- Если заработает - проблема в правилах, нужно настраивать более аккуратно
3. Проверка состояния соединений
Используйте утилиты для диагностики state table:
# Просмотр state table
pfctl -ss
# Проверка ограничений state table
pfctl -si | grep "states"
4. Анализ логов
Проверьте системные логи на предмет ошибок:
tail -f /var/log/system.log | grep -E "(pf|nat|firewall)"
Конфигурация правил Floating
Floating правила имеют высший приоритет и могут interfere с Port Forwarding. Вот как правильно настроить:
Правильная последовательность правил
-
Сначала разрешающие правила Floating
- Разрешение входящего трафика на WAN интерфейсе
- Разрешение трафика из DMZ в LAN
-
Затем правила Port Forwarding
- Правила NAT для перенаправления портов
-
В конце блокирующие правила
- Default deny policy
Пример конфигурации Floating правил
# Разрешение входящего трафика на WAN (ens18)
pass in log quick on ens18 inet proto tcp from any to any port = 8080 flags S/SA keep state
# Разрешение трафика из DMZ в LAN
pass in log quick on vmbr2 inet from any to any
Отключение Reflection
В вашем случае Reflection может мешать работе. Попробуйте отключить его:
- Перейдите в
System > Settings > General - Установите
Disable reflection for port forwardsвenabled - Перезапустите службу
Проблемы state table и их устранение
Симптомы проблем с state table
- Соединения сбрасываются через несколько пакетов (как в вашем случае с RST)
- Высокая загрузка CPU при обработке трафика
- Ограниченное количество одновременных соединений
Решения
Увеличение лимитов state table
# Временно увеличить лимиты для теста
pfctl -s state | grep "limit"
pfctl -t states -T add 100000
Очистка state table
# Очистка всех состояний
pfctl -Fs
Настройка параметров state table
-
Отредактируйте
/etc/sysctl.conf:net.inet.ip.portrange.first = 1024 net.inet.ip.portrange.last = 65535 -
Примените изменения:
bashsysctl -w net.inet.ip.portrange.first=1024 sysctl -w net.inet.ip.portrange.last=65535
Сравнение OPNsense и pfSense
Ключевые отличия в обработке NAT
pfSense:
- Более простая и предсказуемая обработка NAT
- Меньше опций для тонкой настройки
- По умолчанию использует более простые правила
OPNsense:
- Более сложный и гибкий механизм правил
- Автоматические Floating правила могут конфликтовать
- Требует более тщательной настройки правил
Почему pfSense работал, а OPNsense нет
- Автоматические правила Floating в OPNsense могут блокировать трафик до обработки NAT
- State tracking работает по-разному - OPNsense более строго проверяет состояния
- Обработка пакетов - OPNsense может иметь более строгую политику по умолчанию
Совместимость конфигураций
Если pfSense работал с простыми правилами, попробуйте скопировать логику в OPNsense:
# Простое правило как в pfSense
pass in on ens18 inet proto tcp from any to any port = 8080 flags S/SA keep state
pass out on vmbr2 inet proto tcp from any to any port = 8080 flags S/SA keep state
Рекомендации по оптимизации
1. Минимальная конфигурация для теста
Создайте минимальную конфигурацию для проверки:
- Отключить все правила Firewall
- Создать только необходимые правила Port Forwarding
- Временно отключитьIDS/IPS и другие службы
2. Пошаговая настройка правил
Шаг 1: Разрешить входящий трафик на WAN
Шаг 2: Разрешить исходящий трафик из DMZ
Шаг 3: Настроить Port Forwarding
Шаг 4: Разрешить обратный трафик
3. Мониторинг и отладка
Используйте встроенные инструменты OPNsense:
Diagnostics > Statesдля мониторинга state tableFirewall > Logдля просмотра логов межсетевого экранаDiagnostics > Packet Captureдля глубокого анализа пакетов
4. Альтернативные подходы
Если стандартный Port Forwarding не работает, попробуйте:
-
Ручная настройка PF
- Отредактировать
/etc/pf.confнапрямую - Добавить правила вручную
- Отредактировать
-
Использование Proxy ARP
- Включить Proxy ARP на WAN интерфейсе
- Настроить перенаправление на уровне L2
-
SNAT вместо DNAT
- Использовать исходящий NAT вместо перенаправления портов
Источники
- OPNsense Official Documentation - NAT Port Forwarding
- OPNsense Firewall Rules Configuration Guide
- PF State Table Management
- OPNsense vs pfSense Comparison
- Troubleshooting Port Forwarding Issues
Заключение
- Основная проблема скорее всего связана с автоматическими Floating правилами OPNsense, которые блокируют трафик до обработки NAT
- Ключевое решение - правильная последовательность: сначала разрешающие правила, затем Port Forwarding, затем блокирующие
- State table может вызывать сбросы соединений при переполнении или конфликтах
- Пошаговый подход - отключить все правила, протестировать минимальную конфигурацию, затем добавлять по одному правилу
- Альтернативные методы - ручная настройка PF, Proxy ARP или SNAT могут решить проблему, если стандартный Port Forwarding не работает
Рекомендуется начать с минимальной конфигурации и逐步 добавлять правила, контролируя каждый шаг логами и tcpdump. Если проблема сохраняется, стоит рассмотреть возможность ручной настройки PF или временного использования pfSense для критически важных сервисов.