我在使用Linux、QEmu和VMware ESX的第二层桥接网络配置中遇到了问题。该配置在小型孤立网络上运行良好,但一旦引入到我们的大型企业网络中,网络层就会出现问题。
我正在使用从源代码构建的Ubuntu12.04.2和QEmu 1.5.2的服务器版本,用仿真一个SPARC主机。下面显示了我试图实现的配置,其中is显示了分配is的位置,不同接口显示了MAC地址的最后一个字节。
le0 (on QEmu hosted machine)
192.168.1.103
:56
|
tap0 (on Ubuntu machine)
:7e
|
br0 (on Ubuntu machine)
:19
|
eth1 eth0 (eth1 and eth0 on Ubuntu machine)
192.168.1.100
:19 :0f
| |
===========================
Corporate Network
===========================
|
eth0
192.168.1.102
:84eth0和eth1接口都是通过VMware创建的,VMware通过一个物理NIC连接它们。
Ubuntu机器的/etc/network/interfaces文件如下所示。
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet manual
auto tap0
iface tap0 inet manual
pre-up tunctl -u my-user -t tap0
up ip link set tap0 up
auto br0
iface br0 inet manual
bridge_ports tap0 eth1
bridge_fd 15
bridge_hello 2
bridge_maxage 20
bridge_stp off
bridge_waitport 60
bridge_pathcost eth1 32768
bridge_maxwait 0
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1 在孤立网络和企业网络中,ARP数据包都是通过桥链实现的,而192.168.1.102对192.168.1.103具有正确的ARP信息,反之亦然。在隔离的网络上,主机可以互相切换,而且所有的主机似乎都可以通过跨网桥的应用层连接。
然而,在企业网络上,当从主机192.168.1.103切换到192.168.1.102时,ping数据包通过桥向192.168.1.102向外发送。然后,192.168.1.102主机尝试发送ICMP答复,这永远不会使它返回到192.168.1.103主机。
192.168.1.102上的ARP缓存似乎是正确的,192.168.1.103的IP地址映射到:56 MAC地址。但是,如果我在Ubuntu机器的eth1接口上运行tcpdump,我会看到ICMP请求从192.168.1.103主机发出,但没有看到回复返回(尽管它们在从eth0转储到该机器上时离开了192.168.1.102 )。
我已经取消了STP,尽管它是在公司网络上运行的。brctl showstp br0的输出显示即使在企业网络上也要转发桥。
你知道为什么这不适用于一个更大、更复杂的网络,而是孤立地工作吗?我们在公司网络上的交换设备会有损坏的MAC地址表吗?
发布于 2013-08-08 19:11:18
这个问题的解决方案是在VMware ESX虚拟交换机上启用杂乱模式,正如所描述的这里。物理交换机和Ubuntu网络接口的设置都是正确的,但是VMware阻止传入的通信量到达eth1接口。
https://serverfault.com/questions/529069
复制相似问题