Windows 8 Hyper-V 和 VLAN

Windows 8 Hyper-V 和 VLAN

我正在尝试设置 Windows 8 的 Hyper-V,以便:

  • 连接有 2 个 VMS 的交换机
  • 连接到所述交换机并设置为中继的 Vyatta 盒(本机 VLAN 1,允许 VLAN 1-4000)
  • 具有访问 vlan 2002 的 Windows 2008 R2 服务器

我已经创建了上述虚拟机,并且都连接到同一个交换机。我已使用以下命令从 PowerShell 将 Vyatta 的网络接口设置为中继模式:

$z = (Get-VMNetworkAdapter -VMName vyatta)[1]
Set-VMNetworkAdapterVlan -VMNetworkAdapter $z -Trunk -NativeVlanId 1 -AllowedVlanIdList 1-4000
Get-VMNetworkAdapterVlan
VMName                       VMNetworkAdapterName Mode     VlanList
------                       -------------------- ----     --------
                             swname               Untagged
windowsvm                    Network Adapter      Access   2002
vyatta                       Network Adapter      Trunk    1,1-4000

据我对 VLAN 和 Hyper-V 的了解,这应该是我需要做的一切。但是,它似乎会剥离标签并将其替换为本机 VLAN 的标签。

在 Vyatta 上的上述接口上进行捕获(tcpdump -s0 -XX -nnpi eth0)时,从 Windows 机器到达的 ARP 数据包如下所示:

11:26:50.908865 ARP, Request who-has 10.16.32.1 tell 10.16.32.2, length 28
        0x0000:  ffff ffff ffff 0015 5d01 dc03 0806 0001  ........].......
        0x0010:  0800 0604 0001 0015 5d01 dc03 0a10 2002  ........].......
        0x0020:  0000 0000 0000 0a10 2001                 ..........

请注意 0x000C-x000F 显示 0001(VLAN ID = 1)而不是 07d2(VLAN ID = 2002)。

我还注意到,如果我更改 AllowedVlanIdList 以使其不包含 2002,我将不再看到 ARP 请求。

有人知道如何强制 Hyper-V 保留标签吗?或者这是 W8 Hyper-V 的限制吗?

答案1

我不确定 Windows Server 2008 R2 是否支持您在那里使用的网络设置,无论是在 Virtual Machine Manager 2008 R2 中还是在 2008 R2 上的 Hyper-V Manager 中,我都看不到如何在每个虚拟机级别设置 VLAN 中继。在我的设置中,根据 Virtual Machine Manager 2008 R2 的网络配置,我看到了以下内容:

Virtual Machine Manager 2008 R2 主机属性窗口,显示“网络”选项卡,其中选择了 LAN 适配器并将 VLAN 设置为中继模式。

在交换机上,我将 VLAN 1 设置为主(未标记),其他所有都标记,并将服务器的交换机端口设置为中继。然后,我设置了我的 Vyatta 盒,使其每个我想要访问的 VLAN 都有一个 NIC,我从未能够在 VLAN 上设置中继,并且虚拟机的管理似乎表明在 2008 R2 中无法做到这一点,我不确定它是否真的为其实施了中继。

我确实知道Set-VMNetworkAdapterVlanPowerShell cmdlet 已添加到 WMF 3.0 管理包中,建议不要在 2008 R2 上安装它,因为它发布时存在严重问题。(我相信 WMF 4.0 即将发布并解决这些问题。)您用于将 Vyatta VM 的网络适配器设置为中继模式的 cmdlet 可能未在 2008 R2 上完全实现。我自己从未见过以中继模式配置的 VM。

唉,我没有 2012 年版的 Vyatta 和 Wireshark 设置来测试您的设置。

答案2

将 NativeVlanId 设置为 0

那么它就可以工作了。

相关内容