サーバーがネットワーク内からインターネットへのすべての接続をルーティングするネットワークがあるとします。 iptablesを設定して、着信接続をインターネットにルーティングする代わりに、それらをlocalhostポート8080にルーティングする方法を教えてください。
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
これはiptables
で実行できますが、カーネルが3.6以上の場合のみです。
あなたがしなければならないでしょう:
sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080
ip_forward
は必要ありません。パケットは転送されないためですが、sysctlを含めない場合はroute_localnet
(カーネル> = 3.6でのみ機能)、パケットはカーネルによってドロップされます。これは、パケットが外部から送信され、宛先アドレスが127.0.0.1の「martian」と見なされるためです。