设想:
- eth0
- 具有 VLAN 10 11 12 13 14 15 的中继接口
- 交换机上的本机 VLAN 配置为 10
- eth0.11
- vlan 接口,查看进入 eth0 的所有带有 vlan 11 标记的流量
- ...
- eth0.15
- vlan 接口,查看进入 eth0 的所有带有 vlan 15 标记的流量
问题是——我希望能够捕获 'eth0' 上的所有流量,但是仅有的vlan 10 流量(任何未标记的流量)。
现在,在 eth0 上捕获将会给我来自 vlan 10 的未标记帧,以及来自 vlan 11 至 15 的标记帧。
解决方法是重新配置交换机,使该端口上有一个未使用的本机 VLAN,并标记 VLAN 10,但这会使该端口配置变得特殊/不同于所有其他端口。(想象一下一个正常的数据+语音网络端口,其中本机 VLAN 上有常规流量,并为语音标记帧。)在这种情况下,我希望能够捕获数据帧,但不能捕获语音。
另一个相关需求是桥接时 - 如果我只想将 vlan0 桥接到 Linux 机器上的另一个端口 - 而不桥接所有标记的帧 - 相同的需求可能会发挥作用。
有没有办法配置一个 vlan 接口,使其明确地只看到未标记的流量,而不看到其中的标记帧?
答案1
是的,你可以使用ebtables
过滤掉带标签的数据包。例如,您可以使用类似下面的命令:
ebtables -A INPUT -p 802_1Q -j DROP