积极答复者
谁碰到过这样的Hyper-v网络问题?

问题
-
用Windows Server 2008 R2 Enterprise中的Hyper-v管理器做了1台虚拟机
网卡是Broadcom BCM5708C,将网卡虚拟成交换机(另一块网卡在排错时禁用了),虚拟网络是用的外部模式,没有启用“允许管理系统共享此适配器”(该网卡上也没有启用TCP/IP协议)。
Guest中的虚拟网卡在192.168.1.0/24网段,地址192.168.1.8,网关192.168.1.10(随便设的,改成什么都无所谓),DNS192.168.1.2(网络里另一台虚拟服务器,只做内部地址解析)
突然发现该虚拟机访问内部资源的时候,DNS有50%的几率解析不出来,查了DNS服务器没有问题。而出解析问题的时候,该虚拟机可以解析到外部的域名(DNS服务器没有设置转发,按道理说是发不出去的)。更妖的是,可以Ping得通外部网站如www.163.com!!!(外部IP是一直可以ping通,不论DNS是否正常的时候)。ipconfig的结果一切正常,查了本机路由表,都很正常,没有特殊的路由,默认路由是到192.168.1.10,这是个不存在的地址,理论上不会起作用。做tracert,第一跳是192.168.2.1,这个地址是网络里另外一个网段192.168.2.0/24的网关,物理网卡可以连到该网段。
不知虚拟机是如何得到192.168.2.1这个地址的,疑心是DHCP,因为该网段中有DHCP,做DNS测试,有点印证这个观点,50%的几率可以解析出192.168.2.0/24中的域名,说明获得网关的同时也获得了DNS。但是上DHCP服务器上去看,没有看到分配地址给这台物理机或虚拟机网卡的痕迹。
另外,192.168.2.0网段中的所有机器也可以访问该虚机,同样是用192.168.2.1做网关。
启用“允许管理系统共享此适配器”,问题依旧,在共享出来的网卡上设了一个网关192.168.2.10(随便设置的),但是问题依旧,虚拟机仍然可以走192.168.2.1这条路由,但是物理机本身此时ping不通虚机了,而其他192.168.2.0/24中的机器都可以ping通该虚拟机。
关闭物理机/虚机上的所有TCP Checksum Offload选项,问题依旧
将虚拟机上的网关删掉(不设置网关),倒是ping不出去了
打上所有补丁,该问题依旧,操作系统从中文换成英文,该问题依旧,换了两台Dell,一台IBM,问题依旧存在。
有心把DHCP上的网关和DNS改一下看看,但实验条件不允许
问了熟悉微软的一个朋友,说是用Hyper-v的时候,最好物理机和虚拟机都在同一个网段里。但我觉得,如果这个问题被同一个网段这种方式掩盖的话,会有安全或是其他的问题。
不知有没有朋友遇到同样的状况,有条件的朋友,不妨测试一下,这个测试环境应该不难搭建。
答案
-
问题暂时解决
怀疑与最初生成虚拟机的一个镜像做过NLB有关,尽管NLB的配置已经删除过了。
按如下文章中的Enable Spoofing of MAC addresses以后,现象消失,暂时还没有发现新的问题。
http://robwhitehouse.com/virtualisation/enable-nlb-in-a-hyper-v-guest/.- 已标记为答案 许珈毓Moderator 2010年2月8日 5:57
全部回复
-
可能测试做了太多,不太容易理顺,看起来比较复杂吧
只用了一张网卡,专用于虚拟机的网络连接,用于管理的网卡都禁用了以避免干扰,管理操作直接在物理机的KVM上完成
DNS不是该问题的关键,而是最开始因为DNS才发现问题,所以也可以简化掉
那么来个最简单的环境,一台物理机上做一台虚拟机,虚拟网卡设为外部模式且没有启用“允许管理系统共享此适配器”
虚拟机IP为192.168.1.8/24 ,虚拟机网关为任意一空地址
同一物理网络中,有一台DHCP服务器,还有一个网关,但是地址都在192.168.2.x/24网段中
______________________________________________________________________________________
| | |
| | |
物理机网卡上没有启用TCP/IP DHCP服务器 到Internet的Gateway
虚拟机IP 192.168.1.8/24 IP 192.168.2.3 IP 192.168.2.1/24
虚拟机网关随意设置一个空地址 网关 192.168.2.1/24
分配192.168.2.X/24的地址
按我所知道的常识,这时候虚拟机192.168.1.8应该不可以和任何192.168.1.x/24网段以外的IP地址通信,但是现在的现象是可以,它 自己会找到网关192.168.2.1,通过网关访问Internet, 而且可以和192.168.2.x/24这个网络中的任何一台计算机通信 -
问题暂时解决
怀疑与最初生成虚拟机的一个镜像做过NLB有关,尽管NLB的配置已经删除过了。
按如下文章中的Enable Spoofing of MAC addresses以后,现象消失,暂时还没有发现新的问题。
http://robwhitehouse.com/virtualisation/enable-nlb-in-a-hyper-v-guest/.- 已标记为答案 许珈毓Moderator 2010年2月8日 5:57