我最近构build了基于linux的网桥来进行数据包监控,但是存在BIG问题。
环境是,
我的问题是,当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有关。)
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上的数据包重复。
我希望这些信息能帮助你。