C ++奇怪的RAW套接字和iptables问题

时间:2010-10-18 09:57:13

标签: c++ linux sockets udp iptables

关于C++ iptables redirection forming separate packets,我现在面临一个极其奇怪的问题。我试图将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模式后,我使用RAW SOCKETS在两个端口上进行侦听。

我只看到56789即.SENDING端的数据包,我在56790上看不到任何数据包,而wireshark显示许多数据包被传送到端口5060.

为什么会这样?有任何想法吗?你认为这是iptables规则的问题还是与原始套接字有关?

1 个答案:

答案 0 :(得分:0)

原始套接字在修改(传入)之前获取原始数据包的副本。在外向时它会逆转。