アクティブな UDP 接続の iptables ポート転送

アクティブな UDP 接続の iptables ポート転送

次を使用してport 12345、からへの UDP ポート転送を設定しようとしています。port 54321

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

これは新しい接続では正常に機能しますが、現在アクティブな接続では機能しません。

意味を明確にするために、ルールを追加する前に、192.168.0.2:55555<--->からのアクティブな接続があり192.168.0.1:12345、すべての着信接続を にリダイレクトしようとしているとし192.168.0.1:12345ます192.168.0.1:54321

上記の 2 つのルールを追加すると、からのパケットを除き、宛ての他のすべてのパケット192.168.0.1:12345は で受信されます。192.168.0.1:54321192.168.0.2:55555

接続の状態がこれに関係していると思います。どうすればこの問題を解決して、192.168.0.1:55555宛先からのパケットport 12345を に配信できるでしょうかport 54321?

答え1

やり方が分かりました!

NAT で REDIRECT を使用する必要があります。ただし、その前に、この接続に対応するエントリを conntrack から削除する必要があります。次のようになります。

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

関連情報