Jump to content
Калькуляторы

Вопрос по firewall

Что-то не соображу, как должен быть настроен 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

И веб-интерфейс недоступен, счетчик правила не тикает.

Share this post


Link to post
Share on other sites

Это несущественно, с connection-nat-state=dstnat такое же поведение.

Если убираю dst-port — все работает. Добавляю dst-port — работать перестает.

Пробовал вместо диапазона 65000-65535 указывать одиночный порт 65101 — то же самое, с заданным портом правила веб-интерфейс снаружи недоступен.

Share this post


Link to post
Share on other sites

8 минут назад, VolanD666 сказал:

Вы это учли?

Не знал, но сейчас попробовал добавить.

Не помогло. Как только добавляю в правило dst-port=80, правило сразу перестает работать.

Share this post


Link to post
Share on other sites

Какой адрес? IP-адрес я в правиле вообще не указывал, задавал только chain, action, protocol. Когда добавляю еще и dst-post — перестает работать.

Share this post


Link to post
Share on other sites

Оставьте одно правило разрешающее все DNAT-соединения и почистите таблицу соединений(да, на Mikrotik-ах это приходится делать в таких случаях в отличие от традиционного Linux-а). Не, если у вас правилами NAT рулит один человек, а файрволом другой, то я бы заморочился, а так - не плодите сущности.

 

Ну и да, правило с разрешением всех NAT-соединений желательно поместить повыше, в район тех правил где разрешаются related и established-соединения(но после правил fasttrack)

 

Еще учтите, что может залипнуть fasttrack и новодобавленные "хитрые"(не знаю как точно назвать) правила применятся минут так через энцать(в отличие от простых топорных allow tcp как у вас). Тут кроме ребута всей шайтан-коробки или выключения/включения fasttrack ничего не сделать - только ждать.

Share this post


Link to post
Share on other sites

18 минут назад, Pinkbyte сказал:

на Mikrotik-ах это приходится делать в таких случаях в отличие от традиционного Linux-а).

ситуации, когда на микротике приходится чистить вручную таблицу соединений ПОЛНОСТЬЮ соответствуют аналогичному поведению "обычного линукс" соответствующей версии ядра, ибо это он самый линукс и есть , с надстройкой по администрированию.

ну кроме как раз таки случаев с fasttrack - не пользуюсь, не знаю.

у меня нет ситуаций , в которых он мог бы работать в принципе.

 

Share this post


Link to post
Share on other sites

Just now, LostSoul said:

ситуации, когда на микротике приходится чистить вручную таблицу соединений ПОЛНОСТЬЮ соответствуют аналогичному поведению "обычного линукс" соответствующей версии ядра, ибо это он самый линукс и есть , с надстройкой по администрированию.

 

Штука в том, что я помню ядро 3.3 достаточно хорошо. И там мне это приходилось делать ровно НОЛЬ раз. Вы забываете, что fasttrack накладывает свои особенности на работу стандартного линуксового conntrack. И грабли - они именно в нём. Но обычно это не критично, потому что глобальные conntrack-правила редко изменяют

Share this post


Link to post
Share on other sites

Стандартно входящий 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

 

 

Share this post


Link to post
Share on other sites

@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 by nkusnetsov

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.