MikroTik Hairpin NAT
Какво е Hairpin NAT:
Hairpin NAT (известен още като NAT Loopback или NAT Reflection) е топология, при която устройство в локалната мрежа (LAN) достъпва друго устройство в същата мрежа чрез публичния IP адрес на рутера (WAN), заедно с пренасочване на портове.
Реален пример:
Домашният ми NVR Dahua трябва да бъде достъпен чрез приложението DMSS с един и същ публичен IP адрес — независимо дали телефонът е в Интернет или в домашната Wi-Fi мрежа.
Как работи: Когато LAN клиент изпраща заявка към публичния IP на рутера, рутерът трябва да: (1) пренасочи заявката към NVR (dstnat), (2) маскира source адреса на клиента с адрес на рутера, за да може NVR-ът да отговори обратно към рутера, а не директно към клиента (srcnat masquerade).
Правила
1. Стандартно Masquerade (Интернет достъп)
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
2. Port Forwarding от Интернет
Пренасочва трафик идващ от ether1 (WAN) на порт 37777 към NVR-а на адрес 192.168.1.200:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=37777 in-interface=ether1 protocol=tcp \
to-addresses=192.168.1.200 to-ports=37777
3. Hairpin NAT — dstnat (прихваща LAN заявките)
Прихваща заявки от локалната мрежа (src-address=192.168.1.0/24), адресирани към рутера (dst-address-type=local), и ги пренасочва към NVR-а:
/ip firewall nat
add action=dst-nat chain=dstnat dst-address-type=local dst-port=37777 protocol=tcp \
src-address=192.168.1.0/24 to-addresses=192.168.1.200 to-ports=37777
4. Hairpin NAT — srcnat masquerade (NVR да отговори)
Маскира source адреса на LAN клиента с адреса на рутера, за да може NVR-ът да изпрати отговора обратно към рутера (а не директно към клиента, което би счупило сесията):
/ip firewall nat
add action=masquerade chain=srcnat dst-address=192.168.1.200 dst-port=37777 \
protocol=tcp src-address=192.168.1.0/24
Важен ред: Правило 3 трябва да е преди правило 2 в списъка с NAT правилата, иначе port forwarding правилото от WAN може да прихване и локалния трафик. Проверете реда с /ip firewall nat print.
Пълна конфигурация
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1
add action=dst-nat chain=dstnat dst-port=37777 in-interface=ether1 protocol=tcp \
to-addresses=192.168.1.200 to-ports=37777
add action=dst-nat chain=dstnat dst-address-type=local dst-port=37777 protocol=tcp \
src-address=192.168.1.0/24 to-addresses=192.168.1.200 to-ports=37777
add action=masquerade chain=srcnat dst-address=192.168.1.200 dst-port=37777 \
protocol=tcp src-address=192.168.1.0/24
С тази конфигурация приложението DMSS работи с един и същ публичен IP адрес — независимо дали е свързано от Интернет или от домашната мрежа.
Заключение
Hairpin NAT изисква два допълнителни реда към стандартния port forwarding. Ключовото е правилото 3 (dst-address-type=local) да прихваща LAN заявките към рутера, и правило 4 (masquerade dst-address=192.168.1.200) да маскира source-а само за конкретния NVR — без да засяга останалия локален трафик.