Bridge
具有中繼埠和自橋埠的 Linux 橋接器
我使用命令創建了可辨識 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