【问题标题】:pcap filter selecting packets strictly incoming and outgoing a networkpcap 过滤器严格选择传入和传出网络的数据包
【发布时间】:2017-04-21 13:47:00
【问题描述】:

假设我是基于集线器的本地网络10.0.0.0/24 的路由器,提供对互联网的访问。

+------+
| pc A +-----+
+------+     |
          +--+--+   +-------------+
          | hub +---+ router (me) +---- internet
          +--+--+   +-------------+
+------+     |
| pc B +-----+
+------+

我正在使用 libpcap 实现一个小型数据包计数器,以了解该网络中从/到 Internet 的用户的 PPS。例如,我想收集数据包:

  • 从 A(或任何内部,例如 B)到 stackoverflow.com(或任何外部)
  • 从 stackoverflow.com 到 A(即答案)

但我想过滤数据包:

  • 从 A 到 B(这是一个基于集线器的网络,所以我看到了)
  • 从 A(或任何内部)到我或其他方式

我能做的最好的过滤器是net 10.0.0.0/24 and \( not src net 10.0.0.0/24 or not dst net 10.0.0.0/24 \),但没有更好的语法吗?

【问题讨论】:

    标签: networking libpcap


    【解决方案1】:

    也许更简单的表达标准的方法是“仅捕获 A 和路由器之间的 ip 数据包”。

    这可以这样表达:

    ip and ether host AA:AA:AA:AA:AA:AA and ether host BB:BB:BB:BB:BB:BB 其中AA:AA:AA:AA:AA:AA 是A 的MAC 地址,BB:BB:BB:BB:BB:BB 是路由器的MAC 地址。

    ip and not ether host CC:CC:CC:CC:CC:CC and ether host BB:BB:BB:BB:BB:BB,其中CC:CC:CC:CC:CC:CC 是您的MAC。这将捕获路由器和网络上任何人之间的 IP 数据包,除了您自己。

    另一个选项是ip and host 1.2.3.4 and ether host BB:BB:BB:BB:BB:BB,其中1.2.3.4 是A 的IP 地址。

    还有更多的可能性。

    【讨论】:

    • 抱歉,示例不清楚。实际上,我想从网络中的 any 主机捕获数据包到外部主机或其他方式。例如,这里我想同时捕获 A 和 B。我将编辑问题,不清楚。
    • 你的回答给了我一个想法。像host \( ether $ROUTER_MAC and not ip $ROUTER_IP \) 这样的东西。我不确定这种语法是否允许,ether host $ROUTER_MAC and not host ip $ROUTER_IP 不是同一个请求。
    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2017-03-16
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多