以下を使用して、UDPでport 12345
から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
に配信するにはどうすればよいですか?
私はそれを行う方法を考え出しました!
NATでREDIRECTを使用する必要があります!ただし、その前に、この接続に対応するエントリをconntrackから消去する必要があります。次のようなもの
conntrack -D -p udp -d 192.168.0.1 --dport=55555