web-dev-qa-db-ja.com

iptablesはlocalhostにリダイレクトしますか?

サーバーがネットワーク内からインターネットへのすべての接続をルーティングするネットワークがあるとします。 iptablesを設定して、着信接続をインターネットにルーティングする代わりに、それらをlocalhostポート8080にルーティングする方法を教えてください。

13
DankMemes
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
6
Alex Antonov

これは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」と見なされるためです。

31
Juan Cespedes