基于ubuntu 13.10的Linux桥的另一端口上不存在ARP响应

我最近构build了基于linux的网桥来进行数据包监控,但是存在BIG问题。

环境是,

  1. 总体环境。
    • 监控目标是vSphere上的虚拟机。
    • 在vSphere主机上configuration了两个vSwitch。
    • vSwitch 1configuration了用于外部网桥通信的NIC。
    • 对于bridge-vm连接,vSwitch 2configuration为不使用NIC。
    • 都configuration为“允许Promiscous模式”。
  2. ENV。 的桥梁。
    • 基于Ubuntu 13.10,安装为最小的虚拟机。
    • br0configuration了eth0(到vS1)和eth1(到vS2)

我的问题是,当VM ping到GW时,ARP请求被发出,并且有来自GW的响应。 但响应数据包仅在eth0和br0上显示。

superhero@vim-firewall:~$ sudo tcpdump -i eth0 -n host 192.168.10.172 tcpdump: WARNING: eth0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 12:13:45.809949 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 12:13:45.810060 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 12:13:45.810742 ARP, Reply 192.168.10.1 is-at 00:00:aa:aa:aa:d9, length 46 ... superhero@vim-firewall:~$ sudo tcpdump -i br0 -n host 192.168.10.172 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes 12:13:51.810928 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 12:13:51.811031 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 12:13:51.811579 ARP, Reply 192.168.10.1 is-at 00:aa:aa:aa:aa:d9, length 46 ... superhero@vim-firewall:~$ sudo tcpdump -i eth1 -n host 192.168.10.172 tcpdump: WARNING: eth1: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 12:13:57.812937 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 12:13:57.813040 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46 ... 

我需要帮助!

PS。 目前,只有ARP是问题。 如果我手动添加一个GW的MAC,networking连接是好的,除了访问本地子网的原因。

哎呀! 我终于find了工作解决scheme!

我花了大约10多个小时为这个问题提供了三天,但解决scheme不干净,更接近于解决方法。 我需要真正的解决scheme或更好的解决方法。 请帮忙。

无论如何,我从vmware cummunityfind以下信息。 (问题的根源与vmware有关。)

  1. https://communities.vmware.com/message/1509541#1509541
  2. https://communities.vmware.com/message/2208190#2208190

URL(1)是来自具有相同问题的原作者的评论,关于问题的原因。 问题是由vSwitch的行为造成的 。 如果有两个或两个以上的物理网卡被绑定,则它们会做出重复的ARP请求,而linux网桥会接收到来自外部网卡/端口的重复请求。 所以陷入了MAC端口映射的混乱。

我做了testing(从vSwitch dettach备用网卡),然后networking工作正常。 (带单网卡vSwitch)

另一个评论,URL号(2)描述了一个解决方法。 如果我从linux网桥将老化时间设置为0,它将作为虚拟集线器(将所有数据包发送到所有端口),因此ARP响应到达内部networking上的虚拟机。

在我的情况下,我的桥只有两个端口的内部和外部连接,所以这不是一个大问题恕我直言。 但有一些不明确的地方。

如果有办法阻止来自备用网卡的环路/备份请求,或者忽略重复的请求或者其他巧妙的方式来处理网桥的MAC表,那么现在让我们来看看。

感谢阅读,希望能帮助你解决同样的问题!

我发现这个问题的另一个工作解决scheme! https://communities.vmware.com/message/2141853#2141853

您可以设置Esxi主机的“高级系统”选项:Net.ReversePathFwdCheckPromisc = 1此选项用于混合模式下禁用具有多个上行链路和端口组的vSwitch上的数据包重复。

我希望这些信息能帮助你。