Решил написать простой гайд по Hairpin NAT, потому что многие пользователи не могут разобраться, как это настроить. Я не сетевой специалист и открыт к любой критике по поводу того, как это можно сделать лучше. Официальная страница wiki от Mikrotik по Hairpin NAT:
Шаг 1 — добавляем LAN в “address-list”
Перечисляем все свои LAN вот так:
/ip firewall address-list add address=192.168.10.0/24 comment=Management list=LANs
/ip firewall address-list add address=192.168.11.0/24 comment=Work list=LANs
/ip firewall address-list add address=192.168.12.0/24 comment=Security list=LANs
/ip firewall address-list add address=192.168.13.0/24 comment=Home list=LANs
/ip firewall address-list add address=192.168.14.0/24 comment=Guest list=LANs
Шаг 2 — добавляем WAN в “address-list”
Если у вас один динамический IP — добавьте ваш домен из “/ip cloud” в адрес-лист под названием “WANs”, и Mikrotik сам будет разрешать его в IP. Другой вариант — использовать кастомный скрипт в “/ip dhcp-client”, чтобы автоматом обновлять IP WAN в списке.
Если у вас несколько WAN — тут всё немного сложнее. Я написал простое решение для нескольких динамических WAN здесь:
Перечисляем все WAN вот так:
/ip firewall address-list add address=123.123.123.123 list=WANs
Шаг 3 — отмечаем соединения с LAN на WAN
Используйте это правило:
/ip firewall mangle add action=mark-connection chain=prerouting comment="Mark connections for hairpin NAT" dst-address-list=WANs new-connection-mark="Hairpin NAT" passthrough=yes src-address-list=LANs
Шаг 4 — применяем Hairpin NAT
Правило, которое ставим перед всеми остальными NAT:
/ip firewall nat add action=masquerade chain=srcnat comment="Hairpin NAT" connection-mark="Hairpin NAT" place-before=0
Шаг 5 — проброс портов
Настраиваем проброс портов вот так:
/ip firewall nat add action=dst-nat chain=dstnat comment="Port forward: something1" dst-address-list=WANs dst-port=5001 protocol=tcp to-addresses=192.168.0.8 to-ports=5001
/ip firewall nat add action=dst-nat chain=dstnat comment="Port forward: something2" dst-address-list=WANs dst-port=5002 protocol=tcp to-addresses=192.168.0.9 to-ports=5002
Шаг 1 — добавляем LAN в “address-list”
Перечисляем все свои LAN вот так:
/ip firewall address-list add address=192.168.10.0/24 comment=Management list=LANs
/ip firewall address-list add address=192.168.11.0/24 comment=Work list=LANs
/ip firewall address-list add address=192.168.12.0/24 comment=Security list=LANs
/ip firewall address-list add address=192.168.13.0/24 comment=Home list=LANs
/ip firewall address-list add address=192.168.14.0/24 comment=Guest list=LANs
Шаг 2 — добавляем WAN в “address-list”
Если у вас один динамический IP — добавьте ваш домен из “/ip cloud” в адрес-лист под названием “WANs”, и Mikrotik сам будет разрешать его в IP. Другой вариант — использовать кастомный скрипт в “/ip dhcp-client”, чтобы автоматом обновлять IP WAN в списке.
Если у вас несколько WAN — тут всё немного сложнее. Я написал простое решение для нескольких динамических WAN здесь:
Перечисляем все WAN вот так:
/ip firewall address-list add address=123.123.123.123 list=WANs
Шаг 3 — отмечаем соединения с LAN на WAN
Используйте это правило:
/ip firewall mangle add action=mark-connection chain=prerouting comment="Mark connections for hairpin NAT" dst-address-list=WANs new-connection-mark="Hairpin NAT" passthrough=yes src-address-list=LANs
Шаг 4 — применяем Hairpin NAT
Правило, которое ставим перед всеми остальными NAT:
/ip firewall nat add action=masquerade chain=srcnat comment="Hairpin NAT" connection-mark="Hairpin NAT" place-before=0
Шаг 5 — проброс портов
Настраиваем проброс портов вот так:
/ip firewall nat add action=dst-nat chain=dstnat comment="Port forward: something1" dst-address-list=WANs dst-port=5001 protocol=tcp to-addresses=192.168.0.8 to-ports=5001
/ip firewall nat add action=dst-nat chain=dstnat comment="Port forward: something2" dst-address-list=WANs dst-port=5002 protocol=tcp to-addresses=192.168.0.9 to-ports=5002
