2010-10-18 46 views
0

参考C++ iptables redirection forming separate packets,我现在面临着一个非常奇怪的问题。我想所有入站流量重定向UDP端口5060上的端口56790,和所有出站流量从5060到端口56789.我用这些iptables规则:C++奇怪的RAW套接字和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模式的界面。

我看到报文,只有在56789 i.e.SENDING一边,我没有看到任何56790包,而Wireshark的显示,许多数据包发送到端口5060

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

+0

我已经在两台ubuntu 10.04机器上试过了这个。同样的事情正在发生。 PREROUTING REDIRECT根本不起作用。出了什么问题? ! :( – SkypeMeSM 2010-10-19 05:40:32

+0

我认为你应该使用“mangle”表,如果你正在使用“-j REDIRECT”动作 – 2010-12-28 22:15:45

+0

在任何情况下,iptables配置是serverfault的主题,投票移动。 – 2010-12-28 22:16:22

回答

0

原始套接字在修改之前(传入)获取原始数据包的副本。在传出时,它被颠倒过来。