我试图过滤掉本地机器的IP地址192.168.5.22。
我使用ip.src != 192.168.5.22|| ip.dst !=192.168.5.22,我不断看到我的地址弹出。
发布于 2013-09-23 20:00:22
米奇是对的。与您所拥有的负面匹配,您需要这两个条件是真实的过滤您的IP,因此,而不是或。你也可以这样写:
not (ip.addr == 192.168.5.22)把它写成ip.addr != 192.168.5.22似乎更符合逻辑,但是虽然这是一个有效的表达式,但它将匹配连接的另一端,因为它不是特定的ip,而且仍然是真的。例如,当从192.168.5.22连接到192.168.5.254时,ip.addr != 192.168.5.22不匹配*.22 IP,它匹配*.254,因此数据包匹配筛选表达式。下面是一个过滤http的完整示例:
not ip.addr == 192.168.5.22 and not tcp.dstport == 80tcp.dstport != 80有类似的问题;tcp.dstport != 80的意思是“只匹配tcp流量,但只有tcp不是dstport == 80”。
虽然不是严格来说您的问题,但我更喜欢在捕获过滤器中进行过滤(双击capture-options对话框中的接口名称),它的语法与tcpdump完全一样。它避免捕获要忽略的数据包,从而使捕获占用的内存和磁盘更少。缺点是,如果以后要检查数据包,并且不能在捕获会话期间以这种方式更改筛选器,则不会捕获这些数据包。例如,为了防止捕获到任何主机的http和ssh通信量,以及从192.168.5.22到192.168.5.22的任何数据包,
not host 192.168.5.22 and not port 80 and not port 22如果只希望筛选进出该主机的http通信量,则可以这样做:
not (host 192.168.5.22 and port 80)发布于 2013-09-23 18:49:15
你的or应该是and
ip.src != 1.2.3.4 && ip.dst != 1.2.3.4发布于 2022-11-22 22:59:24
现在是2022年,IPv6已经成为一件事了!IPv6使这个问题变得更加棘手,因为您通常会有多个v6地址,并且它们经常会更改。列举每一个都是痛苦的。相反,我们知道链接本地IPv6前缀是FE80::/10,因此,为了排除来自这个范围的通信量,并且它的目的地是这个范围,我们使用这个筛选器:
not (ipv6.dst == fe80::/10 and ipv6.src == fe80::/10))
综合起来,此筛选器将排除本地IP、IPv6和广播/多播数据包:
not (ipv6.dst == fe80::/10 and ipv6.src == fe80::/10) and
not (ip.dst == 192.168.0.0/16 and ip.src == 192.168.0.0/16) and
not (ip.dst == 10.0.0.0/8 and ip.src==10.0.0.0/8) and
not (eth.dst[0] & 1)请注意,上述仅在192.168.*和10.* IP范围内排除本地IP通信量。您可能正在使用其他本地范围。and not (eth.dst[0] & 1)排除任何将以太网多播比特设置为true的数据包。如果您希望看到多播通信量,只需排除它。(最好只是排除多播协议,比如使用not mdns)
https://serverfault.com/questions/541075
复制相似问题