我有规则设置丢弃带匹配字符串的udp / tcp数据包。但是,我使用libpcap捕获数据包的程序仍能看到这个数据包。
为什么这个/,在libpcap看到之前丢弃数据包的iptable规则应该是什么?
在libpcap / tcpdump看到这个数据包之前,有没有iptables规则可能会丢弃它?
答案 0 :(得分:7)
Yes, libpcap sees all the packets.。 它们在被netfilter处理之前被捕获。
答案 1 :(得分:0)
您是否尝试更改使用的netfilter挂钩的优先级?如果您尝试以最高优先级挂接传入数据包,它将在数据包套接字内核代码之前获取数据包,这是libpcap用于捕获数据包的方式。
*我假设你使用的是linux *
编辑: 根据操作系统,Libpcap使用不同的方式来捕获数据包。在linux上,它使用数据包套接字,使用netfilter框架在内核代码中实现。
答案 2 :(得分:-3)
没有办法让libpcap在netfilter之前看到数据包,netfilter是一个内核模块,并且在它们达到用户模式之前处理所有数据包,它甚至可以在内核看到数据包之前查看数据包。 你能解释一下吗? 它可能是libpcap也在netfilter上设置钩子,覆盖iptables中的钩子。真正的问题是,在netfilter上查找和设置哪些挂钩远非微不足道,而且只能在内核模式下完成。调查libpcap如何获取数据包。