web-dev-qa-db-ja.com

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

以下を使用して、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に配信するにはどうすればよいですか?

2
Hooman

私はそれを行う方法を考え出しました!

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

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