Хочу обсудить правильность сделанного мной конфига hairpin NAT.
Ситуация такая: есть сеть, построенная на роутере Микротик, в которой присутствует некое количество ip-камер. Камеры позволяют подключаться на 80-ый порт и пользователи это активно используют. Для доступа снаружи применяется классический dstNAT с переназначением порта, провайдер выдаёт белую статику.
Пусть внешний адрес 1.1.1.1, внутренний адрес роутера 192.168.88.1/24, ip-камера первая имеет адрес 192.168.88.101, вторая - 192.168.88.102. Также создана отдельная подсеть для вайфай 192.168.99.1/24.
Имеются правила:
Код: Выделить всё
/ip firewall nat add chain=dstnat dst-address=1.1.1.1 protocol=tcp dst-port=8001 action=dst-nat to-address=192.168.88.101 to-port=80
/ip firewall nat add chain=dstnat dst-address=1.1.1.1 protocol=tcp dst-port=8002 action=dst-nat to-address=192.168.88.102 to-port=80
Согласно мануалу https://wiki.mikrotik.com/wiki/Hairpin_NAT предлагается использовать для hairpin-соединений маскарад, применяемый по условиям определённой (локальной) подсети происхождения пакета, определённого адреса и порта назначения.
Задача - создать правила, которые позволят не создавать описание маскарада до каждой камеры, а позволят опираться на уже имеющиеся правила проброса портов извне.
Мой вариант решения: маркируем соединения по признаку интерфейса происхождения пакета (не внешняя сеть) и адресу назначения, равному внешнему ip. Затем применяем к пакетам с этой меткой соединения маскарад. Всё, готово. Решение уже проверено, доступ к камерам по внешнему адресу получаем и изнутри сети.
Код: Выделить всё
/ip firewall mangle add chain=prerouting dst-address=1.1.1.1 in-interface-list=!WAN action=mark-connection new-connection-mark=hairpin-connection passthrough=no
/ip firewall nat add chain=srcnat out-interface-list=LAN connection-mark=hairpin-connection action=masquerade
Решение добавить во втором правиле параметр out-interface-list взял из упомянутого мануала, хотя смысла в нём не вижу.
Вопросы: 1) насколько надёжен данный подход? Не может ли такая настройка мешать каким-либо службам внутри сети (например STUN) или логике работы роутера?
2) на кой рекомендуется указывать out-interface-list в последнем правиле? Разве пойдут пакеты после маскарада наружу? Или этот параметр и определяет дальнейшее следование пакетов после данной процедуры?
3) для общего понимания подскажите, при написании правил для подразделов /ip firewall стоит ли рассматривать все указываемые параметры только строго как фильтры (признаки) для применения правила (кроме тех что в GUI расположены под вкладкой Action, т.е. action, to-address, to-port)? Или среди них могут попадаться и команды для роутера для изменения пакета или пути его следования?