我试图桥接一个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
解决方法
如果将接口(在您的情况下为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
(在BROUTING链中,ACCEPT表示“桥接”,DROP表示“路由”,或实际上“根据ethertype进行处理”,对于802_1Q类型,表示“传递到适当的VLAN子接口”.)
在这种情况下,网桥不会获得任何标记流量,但由于ebtables处理会产生稍微增加的开销.>重新配置网络以使接口上的所有流量都被标记,并且根本不需要桥接未标记的流量.