Networking

Linux IP 網橋和 vlan_filtering

  • March 2, 2022

我在 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 的一部分,這將失敗。

我是在接近這個錯誤還是錯過了什麼?

我發現更改網橋 vlan 的命令需要稍微不同的語法。‘self’ 必須附加到設備:

bridge vlan add dev br0 self vid 2 pvid

然後該命令按預期工作。

引用自:https://unix.stackexchange.com/questions/556649