Wireshark 过滤-试图过滤掉我自己的本地 IP

Wireshark 过滤-试图过滤掉我自己的本地 IP

我正在尝试过滤掉本地机器的 IP 地址192.168.5.22

我用过ip.src != 192.168.5.22|| ip.dst !=192.168.5.22并且一直看到我的地址弹出。

答案1

Mitch 是对的。对于像你这样的否定匹配,你需要两个条件都满足才能过滤掉你的 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 == 80

tcp.dstport != 80 也存在类似的问题;tcp.dstport != 80 意味着“仅匹配 TCP 流量,但仅限于目的端口不为 80 的 TCP”

虽然这并非您的问题,但我更喜欢在捕获过滤器中进行过滤(双击捕获选项对话框中的接口名称),其语法与 tcpdump 完全相同。它通过避免捕获您告诉它忽略的数据包来减少捕获占用的内存和磁盘。缺点是,如果您以后想检查这些数据包,则不会捕获它们,并且您无法在捕获会话期间更改以这种方式选择的过滤器。例如,为了避免捕获往返于任何主机的 http 和 ssh 流量以及往返于 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)

答案2

or应该是一个and

ip.src != 1.2.3.4 && ip.dst != 1.2.3.4

答案3

现在是 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

相关内容