捕获特定以太网类型的 vlan 标记数据包和非 vlan 标记数据包的过滤器

网络工程 VLAN 电容
2021-07-30 04:53:28

我正在尝试捕获 ethertype 的流量0x88b8其中一些可能带有 vlan 标记,而另一些可能没有,但是andandor操作符的行为并不符合我的预期。

我的第一次尝试是这样的:

(vlan and ether proto 0x88b8) or ether proto 0x88b8

我同时在两台单独的笔记本电脑上测试了这个捕获过滤器,其中一台接收 vlan 标记的数据包,另一台接收未标记的数据包。

在这种情况下,接收未标记数据包的人什么也没收到。

我在pcap 过滤器手册页上搜索并找到了以下内容:

否定具有最高优先级。交替和串联具有相同的优先级并从左到右关联。

所以我认为订单在某种程度上很重要。因此,经过一些反复试验后,我确定了这一点:

ether proto 0x88b8 or (vlan and ether proto 0x88b8)

这适用于两台笔记本电脑。

我的测试是否产生了正确的表达?它在某种程度上是多余的吗?为什么它们不同,为什么后者有效?还有什么我应该注意的吗?

1个回答

你偶然发现了正确的过滤器。如果您深入研究,您会发现vlan指令在过滤器中从该点开始更改数据包匹配偏移量。因此,您需要在任何标记匹配之前拥有所有未标记的匹配项。

(您可以告诉 tcpdump 根据您的过滤器表达式转储 BPF“程序”并查看vlan的效果。)