Iptablesを使用して、特定のポートから別のポートにすべての着信トラフィックを転送したいと思います。問題は、ローカルホストからのトラフィックに対して事前ルーティングが機能しないことです。この トピック は解決策を提案します:
iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 8080
このソリューションはほとんどの場合に機能します。ただし、 http:// myserver:44 に接続すると、myserverはローカルマシンでホストされているIPアドレスに解決されますが、127.0.0.1ではないため、両方のルールがバイパスされているようです。
Eth0 IPアドレスに対して行われたローカルマシンからの転送要求もキャッチする方法はありますか?
OUTPUTルールで-d 127.0.0.1
を実行する代わりに、-o lo
を実行できます。これは、宛先が何であっても、ループバックインターフェイスを通過するすべてのトラフィックに一致します。
ちなみに、「 http:// myserver:44 」に送信した場合でも、トラフィックはローカルであるため、「127.0」に解決されなくても、ループバックインターフェイスを通過します。 .0.1 '。