Bridge

具有中繼埠和自橋埠的 Linux 橋接器

  • April 19, 2022

我使用命令創建了可辨識 VLAN 的網橋並添加了相關介面:

% ip link add br0 type bridge vlan_filtering 1
% ip link set dev eth0 master br0
...

(並對 eth1、eth2、eth3 重複此操作)

現在,我希望橋接埠能夠處理具有多個標籤的幀,並將這些幀從標籤上剝離並傳遞到埠br0,我有一個監聽守護程序:

% bridge vlan del dev eth0 vid 1
% bridge vlan add dev eth0 vid 2-4094
...

(並對 eth1、eth2、eth3 重複此操作)

完成所有命令後,網橋設置如下所示:

% bridge -c vlan sh
port    vlan ids
br0      1 PVID Egress Untagged

eth3     2-4094

eth2     2-4094

eth1     2-4094

eth0     2-4094

br1      1 PVID Egress Untagged

現在,當我從介面ping後面的主機發送到(具有 IP 192.168.1.1)時,我看到eth0 確實在接收標記幀(在我的情況下 ID 是 10),但是 br0 沒有收到任何東西。我錯過了什麼?eth0``br0``tcpdump

作為參與路由的網橋的一部分,網橋自身介面也必須放在適當的 VLAN 中。

要配置橋接介面而不是其埠之一,self需要附加關鍵字。路由堆棧(在第 3 層)處理 IPv4 或 IPv6 數據包,因此期望接收這種類型的幀,而不是標記幀。因此,離開網橋時必須取消標記 VLAN ID 10(以便路由堆棧接收流量),並且這必須是埠 VLAN ID,因此從路由堆棧到網橋的流量會被標記回來。這種方式只能將一個 VLAN 連結到路由堆棧。

這給出了:

bridge vlan del dev br0 vid 1 self
bridge vlan add dev br0 vid 10 untagged pvid self

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