【问题标题】:iptables and libpcapiptables 和 libpcap
【发布时间】:2010-10-24 04:30:28
【问题描述】:

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

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

除了 iptables 规则之外,是否有在 libpcap/tcpdump 看到这个数据包之前丢弃它?

【问题讨论】:

    标签: linux-kernel iptables libpcap


    【解决方案1】:

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

    * 我假设您使用的是 linux *

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • libpcap 不使用 netfilter 挂钩来捕获数据包。 libpcap 在数据包被传递到 TCP/IP 堆栈之前捕获数据包
      【解决方案3】:

      Yes, libpcap sees all the packets.。 它们在被 netfilter 处理之前被捕获。

      【讨论】:

      • 谢谢,除了 iptables,还有什么其他方法可以在这些数据包到达 libpcap 之前丢弃它们?
      • 如果这些是非局域网数据包,你可以将它们丢弃在路由器上。
      • 此外,基于 libpcap 的程序通常允许您提供标准 tcpdump 格式的过滤器。
      • aprtables 或 ebtables 是否有可能在 libpcap 挂钩之前阻止数据包?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多