Я хочу перенаправить входящий внешний трафик на службу, которая прослушивает 127.0.0.1. Перенаправление очень просто - просто:
iptables -t nat -A PREROUTING \
-d local_ip --dport 80 \
-j DNAT --to-destination 127.0.0.1:port
но это оставляет пакет на eth0
и он просто регистрируется как марсианский и по умолчанию сбрасывается. Я могу включить route_localnet
на eth0
чтобы исправить это, но это подвергает весь интерфейс странным трюкам маршрутизации.
Как правильно переслать без route_localnet
?
В верный способ справиться с этим - заставить приложение прослушивать правильный интерфейс и / или IP-адрес, а не 127.0.0.1, и использовать iptables только для разрешения трафика, а не для использования странных трюков NAT.