2017-04-21 40 views
0

假设我是基于集线器的本地网络10.0.0.0/24提供访问互联网的路由器。pcap过滤器选择数据包严格传入和传出网络

+------+ 
| 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 \)但是是不是有更好的语法?

回答

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地址。

还有更多的可能性。

+0

对不起,例子不清楚。实际上,我想要将来自网络中* any *主机的数据包捕获到外部主机或其他方式。例如,在这里我想捕获A和B.我将编辑这个问题,目前尚不清楚。 – FunkySayu

+0

但是你的答案给了我一个主意。像'host \(ether $ ROUTER_MAC而不是ip $ ROUTER_IP \)'。我不确定这种语法是否允许,并且'ether host $ ROUTER_MAC而不是主机ip $ ROUTER_IP'不是同一个请求。 – FunkySayu