Networking
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 的一部分,這將失敗。我是在接近這個錯誤還是錯過了什麼?
我發現更改網橋 vlan 的命令需要稍微不同的語法。‘self’ 必須附加到設備:
bridge vlan add dev br0 self vid 2 pvid
然後該命令按預期工作。