【发布时间】:2010-10-24 04:30:28
【问题描述】:
我已设置规则以丢弃具有匹配字符串的 udp/tcp 数据包。但是,我使用 libpcap 捕获数据包的程序仍然能够看到这个数据包。
为什么是这个/,在libpcap看到之前丢弃数据包的iptable规则应该是什么?
除了 iptables 规则之外,是否有在 libpcap/tcpdump 看到这个数据包之前丢弃它?
【问题讨论】:
标签: linux-kernel iptables libpcap
我已设置规则以丢弃具有匹配字符串的 udp/tcp 数据包。但是,我使用 libpcap 捕获数据包的程序仍然能够看到这个数据包。
为什么是这个/,在libpcap看到之前丢弃数据包的iptable规则应该是什么?
除了 iptables 规则之外,是否有在 libpcap/tcpdump 看到这个数据包之前丢弃它?
【问题讨论】:
标签: linux-kernel iptables libpcap
您是否尝试更改您使用的 netfilter 挂钩的优先级?如果您尝试使用最高优先级挂钩传入的数据包,它将在数据包套接字内核代码之前获取数据包,这是 libpcap 用来捕获数据包的方式。
* 我假设您使用的是 linux *
编辑: Libpcap 根据操作系统使用不同的方法来捕获数据包。在 linux 上,它使用包套接字,它是使用 netfilter 框架在内核代码中实现的。
【讨论】:
libpcap 无法在 netfilter 之前看到数据包,netfilter 是一个内核模块,它会在所有数据包到达用户模式之前对其进行处理,它甚至可以在内核看到之前看到数据包。 你能解释一下吗? libpcap 也可能在 netfilter 上设置了覆盖 iptables 的钩子。真正的问题是,在 netfilter 上查看和设置什么钩子绝非易事,只能在内核模式下完成。调查 libpcap 如何获取数据包。
【讨论】:
Yes, libpcap sees all the packets.。 它们在被 netfilter 处理之前被捕获。
【讨论】: