pcap过滤器选择严格传入和传出网络的数据包

时间:2017-04-21 13:47:01

标签: networking libpcap

假设我是基于中心的本地网络10.0.0.0/24的路由器,可以访问互联网。

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

我正在使用libpcap实现一个小数据包计数器,以了解该网络中来自/到达互联网的用户的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 \)但是没有更好的语法?

1 个答案:

答案 0 :(得分:0)

标记您的标准的简单方法可能是“仅捕获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地址。

还有更多的可能性。