2011-11-15 55 views
8

我正在嘗試創建一個內核模塊,它將能夠通過netfilter掛接接收到的數據包發送修改過的數據包。我正在使用提供的代碼框架here。我在內核中創建一個原始套接字只需使用此代碼:通過內核模塊發送數據包

了sendpacket功能由這家名爲:

len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len)); 

socketptr是原始套接字我創建,開發作爲net_device的傳入通過掛鉤功能給我,並複製爲原始分組的修改副本。

從調用返回dev_queue_xmit表明數據包已成功傳輸,但我無法在線路上看到數據包。我有兩個問題:首先,我希望能夠更好地調試正在發生的事情,所以有關這方面的建議非常感謝。另外,我想知道是否正確處理套接字的創建,或者是否有某種類型的配置丟失。這對我來說都是非常新的,所以很可能是我錯過了一些愚蠢的東西。

+0

你能解釋你在做什麼時說:「我看不到電線上的數據包。」我建議安裝wireshark或其他嗅探器程序。 – Michel

+0

對不起,我應該澄清。正在使用的接口是「venet0」,它是openvz容器使用的接口。我使用Wireshark觀察該接口上的流量,但沒有看到數據包。 – bschulte3

+0

你確定iptables已經正確配置通過這樣的數據包嗎? – Dan

回答