Linux IP 桥接和 vlan_filtering

Linux IP 桥接和 vlan_filtering

我在 Linux 中使用 DSA 来支持以太网交换机 (KSZ9897)。交换机运行正常,但我在通过 Linux(内核 4.19)设置桥接 VLAN 过滤功能时遇到问题。

我创建网桥并添加成员端口,如下所示:

ip link add name br0 type bridge
ip link set dev lanB master br0
ip link set dev lanA master br0

此时,Linux 创建了 br0 接口,我可以通过此接口 ping 到连接到“lanB”接口的 PC。

现在我想使用 VLAN 来分隔 lanA 和 lanB。启用vlan过滤,并设置PVID:

ip link set dev br0 type bridge vlan_filtering 1
bridge vlan add dev lanB vid 2 pvid untagged master
bridge vlan add dev lanA vid 3 pvid untagged master

通过 VLAN 设置,我可以转储网桥 VLAN 状态:

bridge vlan show
port     vlan ids
lanB     2 PVID Egress Untagged

lanA     3 PVID Egress Untagged

br0      1 PVID Egress Untagged

说到这里,我们就遇到了问题。现在我需要将 br0 接口设置为 2 PVID,以便我可以在 CPU 和 LANB 之间 ping 通。但我收到一个错误:

bridge vlan add dev br0 vid 2 pvid
RTNETLINK answers: Operation not supported

如果我无法更改 CPU 端口的 pvid,我不知道如何完成此操作。我的最终目标是ip link add link br0 name br0.2 type vlan id 2添加一个 VLAN 接口以便与 lanB 进行通信。但如果不将 br0 交换机端口配置为 VLAN 2 的一部分,此操作将会失败。

我这样做是错误的还是遗漏了什么?

答案1

我发现更改网桥 VLAN 的命令需要稍微不同的语法。 'self' 必须附加到设备:

bridge vlan add dev br0 self vid 2 pvid

然后该命令将按预期工作。

相关内容