Mirkotik loopback

Для чего нужен loopback?

Например вы хотите проверить как работает ваш web-server который расположен во внутренний сети из интернета, или просто как работает ваш dst-nat но при этом сами находитесь внутри и сервера который бы находился в интернете с удалённым доступом у вас нет, и нет знакомых которые бы могли проверить как работает тот или иной сервис.

Более подробно о loopback можно почитать на вики.

Итак, приступим к настройке loopback на микротике, если у вашего интернет подключения адрес статический, то достаточно добавить одно правило в раздел Firewall вкладка NAT. В моём примере я буду использовать порт 80 tcp, но по аналогии можно настроить на любой другой порт.

Можно настроить как через GUI так и через терминал.

GUI:

выбираем IP — Firewall, вкладка NAT, жмём плюс (+) — создать новое правило.

Chain: dstnat
Dst.Address: — наш внешний статический IP
Protocol: tcp
Dst. Port: 80
In. Interface: — интерфейс который смотрит в локальную сеть (внутрь)

winbox firewall rule

Переходим на вкладку Action:

Action: dst-nat
To Addresses: ip адрес вашего веб сервера
To Ports: 80

winbox nat rule

Это всё.

терминал

Через терминал как обычно проще, запускаем новый терминал и набираем

ip firewall nat add chain=dstnat dst-address=123.45.67.89 protocol=tcp dst-port=80 in-interface=ether3-Master-local action=dst-nat to-addresses=192.168.100.20 to-ports=801ip firewall nat add chain=dstnat dst-address=123.45.67.89 protocol=tcp dst-port=80 in-interface=ether3-Master-local action=dst-nat to-addresses=192.168.100.20 to-ports=80

Это что касается статического адреса, для динамического делаем всё тоже самое + скрипт + комментарий на правило что бы потом могли его менять скриптом.

Комментарий используемый в моём случае будет — http-loopback-mts

Ниже текст скрипта:

#############################################################
#Description:LoopBack-for-dynamic-interface
####################################################################
#Указываем имя интерфейса:local DynIface «pppoe-mts»;
#Получаем IP интерфейса:local DynIfaceIP [ /ip address get [/ip address find interface=$DynIface ] address ]; #Проверяем изменился IP адрес или нет.:local DynIfaceIPLast [/ip firewall nat get [find comment=»http-loopback-mts»] dst-address];
#Если изменился меняем IP адрес в нашем правиле.:if ([ :typeof $DynIfaceIP ] = nil ) do={ :log info («No ip address present on » . $DynIface . «, loopback don’t work.») } else={ :if ($DynIfaceIP != $DynIfaceIPLast) do={ :log info «Loopback update! ($DynIfaceIP)» /ip firewall nat set [find comment=»http-loopback-mts»] dst-address=$DynIfaceIP; }}123456789101112131415161718192021
###################################################################
#Description:LoopBack-for-dynamic-interface
####################################################################

#Указываем имя интерфейса:local DynIface «pppoe-mts»;

#Получаем IP интерфейса:local DynIfaceIP [ /ip address get [/ip address find interface=$DynIface ] address ];

#Проверяем изменился IP адрес или нет.:local DynIfaceIPLast [/ip firewall nat get [find comment=»http-loopback-mts»] dst-address];

#Если изменился меняем IP адрес в нашем правиле.:if ([ :typeof $DynIfaceIP ] = nil ) do={ :log info («No ip address present on » . $DynIface . «, loopback don’t work.») } else={ :if ($DynIfaceIP != $DynIfaceIPLast) do={ :log info «Loopback update! ($DynIfaceIP)» /ip firewall nat set [find comment=»http-loopback-mts»] dst-address=$DynIfaceIP; }}

Добавляем этот скрипт в микротик — System-Sripts. Назовём например dynamic-loopback. И затем добавляем в планировщик System-Sheduler у меня провайдер довольно редко меняет IP поэтому интервал я установлю один раз в час, в поле On-Event: впишем команду /system script run dynamic-loopback. Вот и всё.

winbox new shedule

Вопросы и пожелания можно оставлять ниже в комментариях.