我正在尝试桥接 dot1q 主干,但似乎无法弄清楚。我可以使用 eth0.2 接口连接到主干上的主机,但是当我将接口与 br0 桥接并尝试连接时,我什么也没得到。我在这里错过了一些简单的东西吗?
auto lo
iface lo inet loopback
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_stp off
bridge_fd 9
bridge_hello 2
bridge_maxwait 0
auto br0.100
iface br0.100 inet static
address 192.168.100.99
netmask 255.255.255.0
auto eth0.2
iface eth0.2 inet static
address 10.1.2.225
netmask 255.255.255.0
network 10.1.2.1
broadcast 10.2.1.255
gateway 10.1.2.1
mtu 1500
Run Code Online (Sandbox Code Playgroud)
Ser*_*sov 11
如果将接口(eth0
在您的情况下)添加到网桥,默认情况下其 VLAN 子接口 ( eth0.2
) 将不再获得传入流量 - 所有数据包都将传递到网桥。在 Linux 2.6.37 之前,VLAN 子接口有时可以根据您的硬件工作(如果硬件和驱动程序支持 RX VLAN 加速 ( NETIF_F_HW_VLAN_RX
),则在桥接之前处理 VLAN,并且 VLAN 子接口工作);自 2.6.37 起,所有卡和驱动程序的行为都相同。
有几种具有不同缺点的解决方案:
将 VLAN 子接口添加到网桥而不是物理接口。但在这种情况下,网桥的所有端口都可以访问所有 VLAN,这可能是不希望的。
使用ebtables
到802.1Q标记通信传递到VLAN接口:
ebtables -t broute -A BROUTING -i eth0 -p 802_1Q -j DROP
Run Code Online (Sandbox Code Playgroud)
(BROUTING
链中的ACCEPT
意思是“桥接”,DROP
意思是“路由”,或者实际上是“根据以太网类型处理”,对于 802_1Q 类型来说,这意味着“传递到适当的 VLAN 子接口”。)
在这种情况下,网桥不会得到任何标记的流量,但由于 ebtables 处理,开销会稍微增加。
重新配置网络,使接口上的所有流量都带有标记,而根本不需要桥接未标记的流量。