iptables DNAT は、ローカルを含むすべてのトラフィックを DNAT ポートに送信します。

iptables DNAT は、ローカルを含むすべてのトラフィックを DNAT ポートに送信します。

現在、次の iptables ルールがあります。

iptables-save -c
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*nat
:PREROUTING ACCEPT [5163:300376]
:POSTROUTING ACCEPT [35:11935]
:OUTPUT ACCEPT [30:11635]
[12:760] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 10090 
[5:300] -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.5.67:10090 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020
# Generated by iptables-save v1.4.7 on Wed Oct 21 13:24:24 2020
*filter
:INPUT ACCEPT [24586:5363323]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [41609:7761875]
[13520:2056828] -A INPUT -p tcp -m tcp --dport 10090 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 18080 -j ACCEPT 
[0:0] -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Wed Oct 21 13:24:24 2020

すべての着信トラフィックに対して期待どおりに機能しますが、このサーバーからのトラフィックもDNATアドレス:ポートに送信されます。上記のように、すべての着信トラフィックがDNATになるようにこれをどのように変更できますか?ただし、これを行うと、DNATアドレスに送信されるのではなくhttpサイトにカールできます。

ありがとう、コブス

答え1

大丈夫です。問題を解決しました。 PREROUTINGルールが必要ですが、出力httpが機能するようにするには、OUTPUTルールを削除するだけです。

正しい作業方法は、すべての外部接続がDNATを介してip:portに移動することです。すべての着信接続だけでなく、すべての着信接続に対してもこれを行います。入ってくるのは良くて出るのは悪い

関連情報