, последнее обновление:
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 нерабочим в большинстве случаев!