我正在尝试设置 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 的网络配置,我看到了以下内容:
在交换机上,我将 VLAN 1 设置为主(未标记),其他所有都标记,并将服务器的交换机端口设置为中继。然后,我设置了我的 Vyatta 盒,使其每个我想要访问的 VLAN 都有一个 NIC,我从未能够在 VLAN 上设置中继,并且虚拟机的管理似乎表明在 2008 R2 中无法做到这一点,我不确定它是否真的为其实施了中继。
我确实知道Set-VMNetworkAdapterVlan
PowerShell cmdlet 已添加到 WMF 3.0 管理包中,建议不要在 2008 R2 上安装它,因为它发布时存在严重问题。(我相信 WMF 4.0 即将发布并解决这些问题。)您用于将 Vyatta VM 的网络适配器设置为中继模式的 cmdlet 可能未在 2008 R2 上完全实现。我自己从未见过以中继模式配置的 VM。
唉,我没有 2012 年版的 Vyatta 和 Wireshark 设置来测试您的设置。
答案2
将 NativeVlanId 设置为 0
那么它就可以工作了。