2010-10-18 14 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

原始套接字在修改之前(傳入)獲取原始數據包的副本。在傳出時,它被顛倒過來。