
Написал краткую инструкцию по настройке переадресации портов в MikroTik.
Mikrotik — переадресация портов
Данное руководство было бы неполным без мануала по настройке NAT Loopback.
Нат-петля (NAT loopback, NAT hairpinning) представляет собой функцию в роутере, которая позволяет устройствам в локальной сети обращаться к узлам внешней сети, используя внешний IP-адрес роутера. Когда устройство в локальной сети отправляет пакет на внешний адрес, роутер перехватывает этот пакет и заменяет внутренний IP-адрес отправителя на свой внешний IP-адрес.
Для того, чтобы изнутри локальной сети попасть по внешнему IP или доменному имени на ресурс внутри той же локальной сети, можно использовать несколько способов.
Первый способ: Split DNS. Он довольно прост, для этого внутри вашей локальной сети нужен собственный DNS сервер, который будет отдавать локальные IP адреса для нужных вам сервисов. Или можно просто прописать локальный IP адрес для нужного домена в C:\Windows\System32\drivers\etc\hosts
или /etc/hosts
. Этот способ удобен для организаций или для одного компьютера. Однако, если у вас домашняя сеть на несколько компьютеров, то DNS сервер поднимать избыточно, а бегать всем править hosts — лениво.
Второй способ: NAT Loopback. Минус состоит в том, что мы начинаем локальный трафик гонять через роутер, создавая ему избыточную нагрузку. Но для дома или микроофиса — пойдёт. Второй минус: сервер получатель не будет видеть IP адрес источника, вместо этого он будет видеть IP адрес маршрутизатора.
Опять же, нат-петлю тоже можно настроить несколькими способами. Опишем здесь классический. Для этого потребуется создать два правила. Будем перенаправлять HTTP и HTTPS трафик, 80 и 443 порт.
Первое правило
Первое правило пробрасывает порт из локальной сети на сервер в той же локальной сети.
- Enabled — правило будет сразу включено после создания
- Comment — название правила, укажем любое, к примеру, NAT Loopback HTTP(S)
General:
- Chain — dstnat, правило Destination Nat
- Src. Address — 192.168.1.0/24, это локальная подсеть, откуда будут обращения
- Dst. Address — 46.39.246.23, внешний IP адрес нашего сервиса
- Protocol — tcp, протокол
- Dst. Port — 80,443
Action:
- Action: dst-nat, выполняем переадресацию Destination Nat
- To Address — 192.168.1.11, IP адрес сервера в локальной сети, на который нужно перенаправить трафик


Второе правило
Второе правило меняет адрес источника на адрес маршрутизатора в локальной сети.
- Enabled — правило будет сразу включено после создания
- Comment — название правила, укажем любое, к примеру, NAT Loopback HTTP(S) masquerade
General:
- Chain — srcnat, правило Source Nat
- Src. Address — 192.168.1.0/24, это локальная подсеть, откуда будут обращения
- Dst. Address — 192.168.1.11, IP адрес сервера в локальной сети, на который нужно перенаправить трафик
- Protocol — tcp, протокол
- Dst. Port — 80,443
- Out. Interface List — LAN, исходящие интерфейсы в локальной сети
Action:
- Action: masquerade, подменить адрес источника на адрес маршрутизатора


Таким образом для проброса портов у вас будет создаваться три правила: одно для внешних подключений, два для локальной сети.
P.S.
Дополнительный способ, уменьшающий количество правил:
https://blog.mark99.ru/pravilnyj-nat-loopback-hairpin-nat-v-mikrotik