0887 371 498 support@itservice-bg.net
07.08.2021 · Самуил Арсов · MikroTik, Рутери

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 — без да засяга останалия локален трафик.