2009-05-06 86 views
3

我有規則設置丟棄udp/tcp數據包與匹配的字符串。然而,我的程序使用libpcap捕獲數據包,仍然能夠看到這個數據包。iptables和libpcap

這是爲什麼呢/,應該是什麼iptable的規則,它是由libpcap的見過丟棄數據包?

反正是有,也許比iptables規則等,它是由libpcap的/ tcpdump的見過砸這個包?

回答

7

Yes, libpcap sees all the packets.。 它們在被netfilter處理之前被捕獲。

+0

感謝,任何其他方式,除了iptables的,放棄該數據包,他們到達之前的libpcap? – Kazoom 2009-05-06 13:16:44

+0

如果這些是非lan數據包您可以將它們放在路由器上。 – 2009-05-06 17:28:23

-2

世界上沒有辦法對網絡過濾器之前的libpcap看到的數據包,網絡過濾是一個內核模塊,並處理所有的數據包,他們打的用戶模式之前,它甚至可以看到分組內核看到它之前。 你能解釋一下嗎? 它可能libpcap也在netfilter上設置鉤子來覆蓋iptables中的鉤子。真正的問題是,在netfilter上查找和設置什麼鉤子並不是微不足道的,只能在內核模式下完成。研究libpcap如何獲取數據包。

0

你嘗試改變你使用網絡過濾器鉤子的優先級?如果您嘗試使用傳入數據包的最高優先級掛鉤,它將在數據包套接字內核代碼之前獲取數據包,這是libpcap用來捕獲數據包的方式。

*我假設你使用的是Linux *

編輯: Libpcap庫使用不同的方式來捕獲數據包 - 根據操作系統。在Linux上它使用的是使用netfilter框架在內核代碼中實現的包套接字。