0

個別のパケットを形成するC++iptablesリダイレクトに関して、私は現在、非常に特殊な問題に直面しています。UDPポート5060のすべての着信トラフィックをポート56790にリダイレクトし、すべての発信トラフィックを5060からポート56789にリダイレクトしようとしています。次のiptablesルールを使用しました。

iptables -t nat -I PREROUTING -p udp ! -s localhost --dport 5060 -j REDIRECT --to-port 56790
iptables -t nat -I OUTPUT -p udp ! -s localhost --sport 5060 -j REDIRECT --to-port 56789

ioctlを使用してインターフェイスをPROMISCUOUSモードに設定した後、RAWSOCKETSを使用して両方のポートでリッスンします。

56789 ieSENDING側にのみパケットが表示され、56790にはパケットが表示されませんが、wiresharkは多くのパケットがポート5060に配信されていることを示しています。

なぜこれが起こるのでしょうか?何か案は?iptablesルールやrawソケットに関係する問題だと思いますか?

4

1 に答える 1

0

rawソケットは、変更(着信)する前に元のパケットのコピーを取得します。発信時にそれは逆になります。

于 2010-12-28T20:32:08.047 に答える