alibek Posted August 21, 2019 Posted August 21, 2019 Что-то не соображу, как должен быть настроен firewall, чтобы работал dstnat. В локальной сети есть устройство 10.20.0.101 с веб-интерфейсом (порт tcp/80). Нужно дать к нему доступ извне: /ip firewall nat add action=dst-nat chain=dstnat comment=WAP1 dst-port=65101 in-interface=pppoe-out1 protocol=tcp to-addresses=10.20.0.101 to-ports=80 Но при попытке доступа на http://public-ip:65101 веб-интерфейс устройства не открывается, хотя счетчик правила тикает. Добавляю правило в firewall: /ip firewall filter add action=accept chain=forward protocol=tcp Так работает, веб-интерфейс открывается. В списке соединений нахожу нужное: /ip firewall connection print Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat # PR.. SRC-ADDRESS DST-ADDRESS TCP-STATE ... 6 SAC d tcp xxx.xxx.124.80:24282 xxx.xxx.127.40:65101 established Уточняю правило (добавляю dst-port): /ip firewall filter add action=accept chain=forward dst-port=65000-65535 protocol=tcp И веб-интерфейс недоступен, счетчик правила не тикает. Вставить ник Quote
jffulcrum Posted August 21, 2019 Posted August 21, 2019 /ip firewall filter add action=accept chain=forward protocol=tcp connection-nat-state=dstnat Вставить ник Quote
alibek Posted August 21, 2019 Author Posted August 21, 2019 Это несущественно, с connection-nat-state=dstnat такое же поведение. Если убираю dst-port — все работает. Добавляю dst-port — работать перестает. Пробовал вместо диапазона 65000-65535 указывать одиночный порт 65101 — то же самое, с заданным портом правила веб-интерфейс снаружи недоступен. Вставить ник Quote
VolanD666 Posted August 21, 2019 Posted August 21, 2019 Там вроде по пакет флоу файрволл срабатывает после дст-ната. Вы это учли? Вставить ник Quote
jffulcrum Posted August 21, 2019 Posted August 21, 2019 dst-port у вас при форварде уже 80 будет Вставить ник Quote
alibek Posted August 21, 2019 Author Posted August 21, 2019 8 минут назад, VolanD666 сказал: Вы это учли? Не знал, но сейчас попробовал добавить. Не помогло. Как только добавляю в правило dst-port=80, правило сразу перестает работать. Вставить ник Quote
VolanD666 Posted August 21, 2019 Posted August 21, 2019 Адрес дст вы тоже в правиле поменяли? Вставить ник Quote
alibek Posted August 21, 2019 Author Posted August 21, 2019 Какой адрес? IP-адрес я в правиле вообще не указывал, задавал только chain, action, protocol. Когда добавляю еще и dst-post — перестает работать. Вставить ник Quote
Pinkbyte Posted August 21, 2019 Posted August 21, 2019 Оставьте одно правило разрешающее все DNAT-соединения и почистите таблицу соединений(да, на Mikrotik-ах это приходится делать в таких случаях в отличие от традиционного Linux-а). Не, если у вас правилами NAT рулит один человек, а файрволом другой, то я бы заморочился, а так - не плодите сущности. Ну и да, правило с разрешением всех NAT-соединений желательно поместить повыше, в район тех правил где разрешаются related и established-соединения(но после правил fasttrack) Еще учтите, что может залипнуть fasttrack и новодобавленные "хитрые"(не знаю как точно назвать) правила применятся минут так через энцать(в отличие от простых топорных allow tcp как у вас). Тут кроме ребута всей шайтан-коробки или выключения/включения fasttrack ничего не сделать - только ждать. Вставить ник Quote
LostSoul Posted August 21, 2019 Posted August 21, 2019 18 минут назад, Pinkbyte сказал: на Mikrotik-ах это приходится делать в таких случаях в отличие от традиционного Linux-а). ситуации, когда на микротике приходится чистить вручную таблицу соединений ПОЛНОСТЬЮ соответствуют аналогичному поведению "обычного линукс" соответствующей версии ядра, ибо это он самый линукс и есть , с надстройкой по администрированию. ну кроме как раз таки случаев с fasttrack - не пользуюсь, не знаю. у меня нет ситуаций , в которых он мог бы работать в принципе. Вставить ник Quote
Pinkbyte Posted August 21, 2019 Posted August 21, 2019 Just now, LostSoul said: ситуации, когда на микротике приходится чистить вручную таблицу соединений ПОЛНОСТЬЮ соответствуют аналогичному поведению "обычного линукс" соответствующей версии ядра, ибо это он самый линукс и есть , с надстройкой по администрированию. Штука в том, что я помню ядро 3.3 достаточно хорошо. И там мне это приходилось делать ровно НОЛЬ раз. Вы забываете, что fasttrack накладывает свои особенности на работу стандартного линуксового conntrack. И грабли - они именно в нём. Но обычно это не критично, потому что глобальные conntrack-правила редко изменяют Вставить ник Quote
LostSoul Posted August 21, 2019 Posted August 21, 2019 что за сценарий использования, в котором применим fasttrack ? ну кроме чисто wifi точки доступа или моста Вставить ник Quote
McSea Posted August 21, 2019 Posted August 21, 2019 Стандартно входящий dstnat разрешается условием connection-nat-state=!dstnat в правиле drop all, т.е /ip fi fi add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN Вставить ник Quote
nkusnetsov Posted August 21, 2019 Posted August 21, 2019 (edited) @alibek , если вы тестируете изнутри сети, то не сработает, т.к. in-interface изнутри сети другой, и для прохода "изнутри-внутрь" нужен nairpin nat. Если тестируете извне - важен порядок правил и не режется ли чего в forward. И не натится ли лишнего в src-nat 6 часов назад, alibek сказал: /ip firewall nat add action=dst-nat chain=dstnat comment=WAP1 dst-port=65101 in-interface=pppoe-out1 protocol=tcp to-addresses=10.20.0.101 to-ports=80 Для тестирования изнутри сети лучше использовать:/ip firewall nat add action=dst-nat chain=dstnat comment=WAP1 dst-port=65101 dst-address=<public-ip> protocol=tcp to-addresses=10.20.0.101 to-ports=80 /ip firewall nat add action=masquerade chain=srcnat comment=hairpin-nat dst-port=80 src-address=10.20.0.0/24 dst-addtress=10.20.0.101 protocol=tcp Edited August 21, 2019 by nkusnetsov Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.