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=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;
 }
}

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

winbox new shedule

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