4

我已设置规则以丢弃具有匹配字符串的 udp/tcp 数据包。但是,我使用 libpcap 捕获数据包的程序仍然能够看到这个数据包。

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

无论如何,也许除了 iptables 规则之外,在 libpcap/tcpdump 看到它之前丢弃这个数据包?

4

3 回答 3

9

是的,libpcap 可以看到所有的数据包。. 它们在被 netfilter 处理之前被捕获。

于 2009-05-06T13:10:23.913 回答
0

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

* 我假设你使用的是 linux *

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

于 2016-06-05T16:08:28.657 回答
-4

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

于 2009-06-03T04:55:09.853 回答