Как да настроите Hairpin NAT в MikroTik RouterOS v6/v7. Пълна конфигурация, схема, диагностика и сравнение със split-DNS. Работи за TCP и UDP.
Стъпка по стъпка за RouterOS v7 и v6 + диагностика, чести грешки и сравнение със split-DNS.
⚠ Ръководството е за системни администратори и напреднали потребители на MikroTik. Показваме кога е нужен Hairpin NAT и как да го настроите правилно, за да отваряте локален съρвър през публичния IP.
Hairpin NAT позволява на клиенти от LAN да достъпват вътрешен сървър чрез неговия публичен IP адрес. Без него заявката остава в рутера и се проваля. Hairpin пренаписва трафика така, че да изглежда като „външен“ и връзката да мине успешно.
При опит за достъп до вътрешен сървър през публичния IP на същия рутер, пакетите не напускат устройството и отговорът не достига клиента. Hairpin NAT пренасочва и пренаписва връзката, така че тя да „завие обратно“ към сървъра с коректни адреси.
192.168.88.10, публикуван като 203.0.113.10:8080, трябва да е достъпен по същия адрес и от LAN.interface lists – LAN и WAN.dst-nat правило за външния достъп до сървъра./ip firewall nat add chain=dstnat in-interface-list=WAN dst-address=203.0.113.10 protocol=tcp dst-port=8080 action=dst-nat to-addresses=192.168.88.10 to-ports=8080 comment="External access" /ip firewall nat add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.10 action=masquerade comment="Hairpin NAT" Уверете се, че WAN интерфейсите са членове на in-interface-list=WAN.
/ip firewall nat add chain=dstnat in-interface=<WAN-IFACE> dst-address=203.0.113.10 protocol=tcp dst-port=8080 action=dst-nat to-addresses=192.168.88.10 to-ports=8080 comment="External access" /ip firewall nat add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.10 action=masquerade comment="Hairpin NAT" /ip firewall nat add chain=dstnat in-interface-list=WAN dst-address=203.0.113.10 protocol=udp dst-port=1194 action=dst-nat to-addresses=192.168.88.10 to-ports=1194 /ip firewall nat add chain=dstnat in-interface-list=WAN dst-address=203.0.113.10 protocol=tcp dst-port=8000-8100 action=dst-nat to-addresses=192.168.88.10 [ Клиент 192.168.88.99 ] │ │ (LAN) ▼ ┌──────────────┐ │ MikroTik │───► Интернет (203.0.113.10) └──────────────┘ │ │ (LAN) ▼ [ Сървър 192.168.88.10:8080 ] Без Hairpin NAT http://203.0.113.10:8080 няма да се отвори от LAN, въпреки че сайтът е достъпен отвън. След Hairpin – работи нормално.
srcnat и конкретният dstnat да са над общите правила.accept за connection-state=established,related?/ip firewall nat print detail /ip firewall connection print where dst-address~"192.168.88.10" /tool torch interface=<LAN-IFACE> src-address=192.168.88.0/24 dst-address=192.168.88.10 /ip firewall filter add chain=forward connection-state=established,related action=accept comment="Allow established,related" /ip firewall filter print where action=fasttrack-connection /ip firewall filter disable X /ip firewall filter enable X | Подход | Плюсове | Минуси | Кога? |
|---|---|---|---|
| Hairpin NAT | Еднакъв URL отвън/отвътре; без промени по клиентски DNS | Доп. NAT правило; внимание с реда | Малки/средни мрежи, бърза реализация |
| Split-horizon DNS | Чист вътр. трафик; по-малко conntrack | Нужен вътрешен DNS; различно поведение вътр./вън | По-големи среди с централен DNS |
dst-nat с protocol=udp.8000–8100).Пишете на office@ntg.bg или заявете безплатна консултация. Още ръководства: WireGuard site-to-site, MikroTik DNS forwarders.
Съвет: поддържайте коментари и подредба в NAT правилата – по-лесна диагностика при конфликти.