pztrn's wiki
You are here: start » os » linux » iptables » hairpin_nat

This is an old revision of the document!


Hairpin NAT - делаем доступными одни сервисы из LAN другим, используя внешний IP

Hairpin NAT очень полезная штука в случае когда надо дать доступ внутренним сервисам (находящимся в LAN) друг к другу, используя внешний IP адрес (например, “для единообразия” или если не хочется заморачиваться с DNS).

Делается это просто:

iptables -t nat -A PREROUTING -d ${extip} -p tcp -m tcp --dport ${extport} -j DNAT --to-destination ${localhostip}
iptables -t nat -A POSTROUTING -s ${intnet} -d ${localhostip} -p tcp -m tcp --dport ${intport} -j MASQUERADE

Где:

  • extip - внешний IP адрес.
  • extport - внешний порт.
  • intport - порт сервера в локальной сети.
  • localhostip - IP адрес сервера в локальной сети.
  • intnet - внутренняя подсеть (например, 192.168.0.0/24).

Не добавляйте соответствие интерфейсов (параметр -i) в правило, это сделает Hairpin NAT нерабочим в большинстве случаев!

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International