2010-11-26 48 views
2

我在一個數據包a.k.a隧道內有一個數據包。所以它的形式是[IP頭1] [IP頭2] [PAYLOAD]。讀完第一個標題(由庫完成)後,我將在iptables的INPUT鏈中獲取[IP HEADER 2]的數據包。我想重新將數據包注入到iptables的起始位置,即在PREROUTING鏈中。最終目標是將數據包轉發給遠程主機(這就是爲什麼我希望數據包位於PREROUTING鏈中)。我已經閱讀了有關libipq的一些信息,但我不確定這是否是最好的方式。如何在Iptables中重新註冊數據包?

+0

nfnetlink_queue已經取代ip_queue(與libnetfilter_queue而不是libipq)。 http://stackoverflow.com/search?q=nfqueue – ephemient 2010-11-30 20:00:25

回答

1

雖然可能有一些附加目標來做到這一點。我的直覺是你會使用MARK目標來標記這個數據包,然後使用iproute2來設置你想要的路由。

喜歡的東西:

iptables -t mangle -A INPUT -s 192.168.1.2 -j MARK --set-mark 0xAA 

ip rule add fwmark 0xAA table Reroute_Tunnel

然後,它是由你來加入,並決定Reroute_Tunnel表做什麼

+0

將嘗試它,看起來很有前途。 – 2010-12-01 00:03:34