次を使用して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:54321
192.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