tcpdumpfilter,排除私人IPstream量

对于通用filter来排除我的转储中私人IP地址之间的所有stream量,我想出了以下内容:

sudo tcpdump -n ' (not ( (src net 172.16.0.0/20 or src net 10.0.0.0/8 or src net 192.168.0.0/16) and (dst net 172.16.0.0/20 or dst net 10.0.0.0/8 or dst net 192.168.0.0/16) ) ) and (not ( (dst net 172.16.0.0/20 or dst net 10.0.0.0/8 or dst net 192.168.0.0/16) and (src net 172.16.0.0/20 or src net 10.0.0.0/8 or src net 192.168.0.0/16) ) )' -w test2.dump 

看起来非常过分,但它似乎也起作用,这个filter是否比需要的时间长很多,并且有更好的方式来expression这个逻辑,或者filter有什么问题吗?

我正在Mac OS X v10.6.2上运行内置的tcpdump 4.0.0和libpcap 1.0.0,看来我可以逃脱这个:

 'not (src net (10 or 172.16/12 or 192.168/16) and dst net (10 or 172.16/12 or 192.168/16))' 

我跑了几个快速testing,似乎是做你在问什么:来自任何RFC 1918私人地址子网的stream量都被省略了,但包括一个或两个端点具有公共地址的所有stream量。

请注意,您在172.16networking的原始filter中出现错误。 您以错误的方向移动了子网掩码4位。 172.16实际上是/ 12,而不是你写的。 也就是说,172.16.0.0 – 172.31.255.255都是RFC 1918专用地址,而你的filter只能捕获172.16.0.0 – 172.16.15.255。

不是你的第二块

 (not ( (dst net 172.16.0.0/20 or dst net 10.0.0.0/8 or dst net 192.168.0.0/16) and (src net 172.16.0.0/20 or src net 10.0.0.0/8 or src net 192.168.0.0/16) ) ) 

像你的第一块一样,只能逆转? 我会说,这是一个对称的操作,所以它不会有所作为? (这意味着你可以删除第二个块。)