有没有办法配置 Linux 上的 Vlan 接口以仅接收未标记的帧?

有没有办法配置 Linux 上的 Vlan 接口以仅接收未标记的帧?

设想:

  • 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

相关内容