[技术分享– TMG 篇] 20110421, 无法访问 Windows Server 2008 R2 Hyper-V 中单播模式 NLB 结点的虚拟或专有 IP 地址

《本文转译自 Microsoft Enterprise Networking Team 的博客文章 “ Cannot access the virtual or dedicated IP address of an NLB node (Guest) running in Unicast Mode on Windows Server 2008 R2 Hyper-V ”》

当您为 Windows Server 2008 R2 Hyper-V 上运行的虚拟机(也称客户机)配置单播模式 (unicast mode) 的网络负载均衡 (NLB) 时,您可能无法 ping 通虚拟机的虚拟 IP (virtual IP) 或专有 IP (dedicated IP) 地址。

针对这个问题,如果您在执行 ping 命令的源端主机上进行网络抓包,会发现主机发送了 ARP 请求询问 NLB 结点的物理 (MAC) 地址,但并未得到响应。而 NLB 结点上截获的数据包则显示,该结点响应了 ARP 请求,但响应报文未能抵达源端主机。

导致这个现象的原因是 ARP 响应报文的源 MAC 地址与虚拟机设置的虚拟网卡 (NIC) 的 MAC 地址不匹配,因此 Hyper-V 的虚拟交换机 (Virtual Switch) 丢弃了该响应报文。

当单播的 NLB 结点响应 ARP 请求时,响应报文中的以太网源地址 (Ethernet Source Address) 域并非实际的 MAC 地址。这是因为虚拟 MAC 地址 02-BF-XX-XX-XX-XX 覆盖了网络适配器的实际 MAC 地址,使得单播 NLB 结点发出的所有数据包都会使用虚假的 MAC 地址 (02-BF-XX-XX-XX-XX-XX),导致网络交换机无法得到 NLB 结点的实际的 MAC 地址。

Windows Server 2008 R2 中的虚拟交换机默认在所有端口禁用了 MAC 欺骗 (MAC Spoofing),当发现以太网源地址域中的虚假 MAC 地址与下图所示的实际 MAC 地址不符时将丢弃数据包。

001

解决该问题的方法是在虚拟机(或称客户机)的网络适配器上启用 MAC 地址欺骗,步骤如下:

注意:操作时请关闭虚拟机。

1. 打开虚拟机设置(在 Hyper-V 管理器 (Hyper-V Manager) 上右击主机,点击设置 (Settings…))。

2. 在硬件列表中选择绑定到 NLB 的网络适配器。

3. 在右侧面板中勾选“启用 MAC 地址欺骗 (Enable spoofing of MAC addresses)”复选框。

4. 点击确定并启动虚拟机。

注意:请确保在所有 NLB 结点上完成上述配置。

002

请参考如下 JHoward 的博客文章来获取更多关于 MAC 欺骗的信息:

https://blogs.technet.com/jhoward/archive/2009/05/21/new-in-hyper-v-windows-server-2008-r2-part-2-mac-spoofing.aspx

- Saravanan N