個別のパケットを形成する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ソケットに関係する問題だと思いますか?