Linux 虚拟网桥支持 VLAN 吗?

Linux 虚拟网桥支持 VLAN 吗?

Linux 虚拟网桥(例如配置为ipbrctl)是否支持 VLAN?例如,配置不同 VLAN 中的接入端口和仅启用某些 VLAN 的中继端口。我的内核中唯一的选项(3.2.0-4-686-pae)有关 VLAN 和网桥的配置文件是CONFIG_BRIDGE_EBT_VLAN,但据我了解,这可以过滤 802.1q VLAN 字段ebtables

答案1

没问题,这是大多数 openWRT 系统将 wlan 和交换机端口连接到同一 LAN 的方式。这是我的 openWRT 系统上的配置示例,该系统有两个 wifi 网络,一个供私人使用,一个供客人使用:

# brctl show
bridge name     bridge id               STP enabled     interfaces
br-vlan2        7fff.a0f3c15eb708       no              eth0.2
                                                        wlan0
                                                        wlan1
br-vlan3        7fff.a0f3c15eb708       no              eth0.3
                                                        wlan0-1
                                                        wlan1-1

一些额外的解释:

典型的openwrt硬件(上面是TP-Link WDR4300)有一个处理所有物理端口的交换机;有时,物理 WAN 端口是ethSoC CPU 上的单独接口。交换机通过中继连接到 CPU(此连接上的数据包带有 VLAN 标记)。因此 eth0.2 是 VLAN2,它仅连接到 4 个物理交换机端口,并去除了 VLAN 标记。

因此,您应该将 br-vlan2 简单地视为“LAN 网络”,由于需要而使用 VLAN,因为从 CPU 到交换机只有一个连接。

Linux 中的以太网桥可以将 VLAN 和物理接口作为成员。这符合我的预期,因为 VLAN 接口的行为就像 Linux 中的物理接口一样,有自己的路由、防火墙等,就像任何物理接口一样。我希望你也可以向网桥添加不同的 VLAN,如果你不介意接下来的疯狂的话:)

我还没有尝试过桥接物理接口,例如eth0也承载 VLAN 标记流量的物理接口...我不知道这些标记的数据包是否也会被桥接。

答案2

一个技巧是使用 vconfig 命令明确告诉网桥可以传递 vlan 流量。下面的代码将在命令行上执行此操作,并会在重新启动后消失。要使其在重新启动时发生,请参阅https://serverfault.com/questions/414115/linux-vlans-over-bridge

brctl addbr br0
brctl addif br0 eth0
vconfig add br0 100
ifconfig br0.100  127.16.0.128 netmask 255.255.255.0

上面的 ifconfig 也应该在 eth0 上工作,因为 br0 和 eth0 是桥接的。

相关内容