我试图建立一个带有2个以太网接口的
Linux网桥,但无法使其正常工作.我正在使用Gentoo Linux并认为它很容易,但我最终无法通过网桥获取数据包.所有这些都是在Hyper-V下进行虚拟化,这对任何事情都很重要(但我对此表示怀疑).
这是我的配置.
- ------ ------------------ -------- -----------
- | NUX3 |------------|eth1 BRIDGE eth0|---------| ROUTER |-------/ INTERNET /
- ------ ------------------ -------- -----------
- 192.168.1.195/24 192.168.1.197/24 (br0) 192.168.1.101/24
- 00:15:5d:00:01:12 00:15:5d:00:01:08 (eth0) 00:15:5d:00:01:03
- 00:15:5d:00:01:13 (eth1)
#cat /etc/conf.d/net
- bridge_br0=( "eth0 eth1" )
- config_eth0=( "null" )
- config_eth1=( "null" )
- config_br0=( "192.168.1.197 netmask 255.255.255.0 brd 192.168.1.255" )
- routes_br0=( "default via 192.168.1.101" )
#brctl show
- bridge name bridge id STP enabled interfaces
- br0 8000.00155d000108 no eth0
- eth1
#brctl showstp br0
- <...>
- eth0 (1) state forwarding
- eth1 (2) state forwarding
- <...>
#cat /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- net.bridge.bridge-nf-call-arptables = 0
- net.bridge.bridge-nf-call-iptables = 0
#ifconfig
- <...>
- br0 UP BROADCAST RUNNING MULTICAST
- inet addr:192.168.1.197 Bcast:192.168.1.255 Mask:255.255.255.0
- <...>
- eth0 UP BROADCAST RUNNING PROMISC MULTICAST
- <...>
- eth1 UP BROADCAST RUNNING PROMISC MULTICAST
- <...>
#brctl showmacs br0
- port no mac addr is local? ageing timer
- 1 00:15:5d:00:01:03 no 1.51
- 1 00:15:5d:00:01:08 yes 0.00
- 2 00:15:5d:00:01:12 no 36.22
- 2 00:15:5d:00:01:13 yes 0.00
BRIDGE可以ping通ROUTER而不是NUX3,NUX3既不能ping通BRIDGE也不能ping通ROUTER.一切对我来说都很好,但我显然错过了一些东西.如果有人能指出我,我会很高兴的!
谢谢.
解决方法
主机上的基础网络设备可能未启用混杂模式.例如,在VMWare中,如果底层虚拟网络适配器不是promisc,那么guest虚拟机网桥将失败 – 即使它认为它能够进入混杂模式,它也不能.
我从来没有使用HyperV,但逻辑应该是相同的,如果主机不允许访客进入混杂模式,网桥不能来回传递数据包,因为网卡只处理被寻址的帧特别是它.
如果禁用网桥,你可以ping NUX3和路由器,对吗?