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

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

 

  • J.Ripp

    Хорошая инструкция, для того, что бы или вспомнить или сделать. Но так и не раскрывает, как петлю обратной связи, через внешку.

    • http://vk.com/id3942838 Алексей Варич

      Чаго, простите? Какую такую петлю обратной связи, через внешку? Что это за зверь такой?

  • https://www.facebook.com/app_scoped_user_id/1502875490038607/ Aleksandr Tymoschuk

    Видимо опечатка? miRKotik

    • http://vk.com/id3942838 Алексей Варич

      видимо =)

  • http://vk.com/id2564293 Дмитрий Берлев

    Вы забыли об основном:
    /ip firewall nat
    add chain=srcnat src-address=192.168.100.0/24
    dst-address=192.168.100.20 protocol=tcp dst-port=80
    out-interface=LAN action=masquerade

    Иначе получается нерабочая схема, когда клиент ждет ответа от сервера по другому адресу:

    • http://trustore.ru Алексей

      dst-nat же, как другой адрес?

      • Дмитрий

        В том то и дело, что dst-nat, клиент (например 192.168.100.32) после отправки пакета на 123.45.67.89 ждёт ответа именно от 123.45.67.89 (куда и отправлял пакет), а сервер 192.168.100.20 отвечает пакетом в котором src address 192.168.100.20, а не 123.45.67.89, следовательно клиент отвергнет такой пакет, так как src address отличается от изначального dst address. В двух словах: клиент ждёт ответа с того адреса (внешнего), на который отправлял пакет, а получает ответ с внутреннего адреса. Для того, чтобы это не происходило и добавляется данное правило.

        • http://vk.com/id3942838 Алексей Варич

          Почему-то не сохранился отредактированный комментарий.
          дефолтный маскарад перекрывает все потребности и правил новых добавлять не надо.
          Однако, если делать внутрисетевую маршрутизацию, то в этом случае вы будете исключать адреса назначения локальной сети из маскарада, в этом случае придётся добавлять правило.
          В целом Вы правы.