Linux kernel iptables和libpcap

Linux kernel iptables和libpcap,linux-kernel,iptables,libpcap,Linux Kernel,Iptables,Libpcap,我已经设置了删除具有匹配字符串的udp/tcp数据包的规则。然而,我使用libpcap捕获数据包的程序仍然能够看到这个数据包 为什么会这样,在libpcap看到数据包之前,丢弃数据包的iptable规则应该是什么 在libpcap/tcpdump看到此数据包之前,是否还有其他可能的iptables规则来丢弃此数据包?。 它们在被netfilter处理之前被捕获 libpcap无法在netfilter之前查看数据包,netfilter是一个内核模块,在所有数据包进入用户模式之前对其进行处理,它甚至

我已经设置了删除具有匹配字符串的udp/tcp数据包的规则。然而,我使用libpcap捕获数据包的程序仍然能够看到这个数据包

为什么会这样,在libpcap看到数据包之前,丢弃数据包的iptable规则应该是什么

在libpcap/tcpdump看到此数据包之前,是否还有其他可能的iptables规则来丢弃此数据包?


它们在被netfilter处理之前被捕获

libpcap无法在netfilter之前查看数据包,netfilter是一个内核模块,在所有数据包进入用户模式之前对其进行处理,它甚至可以在内核看到数据包之前查看数据包。 你能进一步解释一下吗?
可能libpcap还在netfilter上设置钩子,覆盖iptables中的钩子。真正的问题是,在netfilter上查看和设置什么钩子绝非小事,只能在内核模式下完成。调查libpcap是如何获取数据包的。

是否尝试更改所用netfilter挂钩的优先级?如果您尝试为传入数据包挂接最高优先级,它将在数据包套接字内核代码之前获取数据包,这是libpcap捕获数据包的方式

*我假设您正在使用linux*

编辑:
根据操作系统的不同,Libpcap使用不同的方式捕获数据包。在linux上,它使用了使用netfilter框架在内核代码中实现的数据包套接字。

谢谢,除了iptables之外,还有其他方法可以丢弃这些数据包,在它们到达libpcap之前?如果这些是非lan数据包,您可以将它们放到路由器上。另外,基于libpcap的程序通常允许您提供标准tcpdump格式的筛选器。在libpcap挂钩之前,aptables或ebtables是否可能阻止数据包?libpcap不使用netfilter挂钩捕获数据包。libpcap在将数据包传递到TCP/IP堆栈之前捕获数据包