具有中继端口和自桥接端口的 Linux 桥接器

具有中继端口和自桥接端口的 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

现在,当我pingeth0接口后面的主机发送到br0(具有 IP 192.168.1.1)时,我看到tcpdumpeth0 确实正在接收标记帧(在我的情况下 ID 是 10),但是 br0 没有收到任何内容。我缺少什么?

答案1

网桥自身接口是网桥参与路由的部分,也必须放入适当的 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

相关内容