我使用过滤器ip.addr != 10.0.0.0/8 && !(ip.addr == 224.0.0.0/3)
来识别我们网络与外部之间的任何流量(并排除 D 类地址空间)。此过滤器不再起作用。
如果我把它写成这样,它确实可以工作ip && (!(ip.src == 10.0.0.0/8) || !(ip.dst == 10.0.0.0/8)) && !(ip.addr == 224.0.0.0/3)
,但我需要添加ip
并明确考虑源和目标。
答案1
ip.addr
是一个多值字段,相当于ip.src || ip.dst
在 3.6 版之前,ip.addr != 10.0.0.0/8
将被解释为(ip.src != 10.0.0.0/8 || ip.dst != 10.0.0.0/8)
。
3.6 版将!=
to重新命名为~=
,并将 to 的含义改为!=
now !(field == value)
。这意味着ip.addr != 10.0.0.0/8
now 变成了!(ip.addr == 10.0.0.0/8)
。
此更改有效地将逻辑从“或”更改为“与”:!(ip.src == 10.0.0.0/8) && !(ip.dst == 10.0.0.0/8)
[布尔逻辑:!(A + B)=!A *!B]
对于 3.6 或更新版本,请使用~=
代替。!=
从版本 4.0.0 开始生效:
运算符“~=”已弃用,并将在将来的版本中删除。请使用“!==”,其含义相同。
因此,使用:
- !=(最高版本 3.6)
- ~= (版本 3.6 至版本 4.0)
- !==(版本 4.0 或更高版本)