我使用过滤器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
并显式地考虑源和目的地。
发布于 2022-03-08 02:19:46
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将!=
重命名为~=
,并将!=
的含义更改为现在的!(field == value)
。这意味着ip.addr != 10.0.0.0/8
现在变成了!(ip.addr == 10.0.0.0/8)
。
此更改有效地将逻辑从OR更改为和:!(ip.src == 10.0.0.0/8) && !(ip.dst == 10.0.0.0/8)
(A+B)=!*B
对于版本3.6或更高版本,请使用~=
而不是!=
。
对4.0.0版生效:
操作符"~=“被取消,并将在以后的版本中删除。使用"!==",它的含义相同。
因此,请使用:
https://serverfault.com/questions/1095609
复制相似问题