我在运行 Hyper-V 的 Windows Server 2012 R2 机器上有来宾 VM。当前,来宾正在使用本机 vlan(vlan ID 1)。我可以从主机和网络与来宾通信。但是,来宾是 Zebra/Motorola VX9000 wlan 控制器,它还需要处理 vlan ID 10 和 15 上的流量。主机使用的交换机端口在 vlan 1 上没有标记,我更新了端口以在 vlan 上也有标记10 和 15. 我还通过 powershell 发出以下命令:
Set-VMNetworkAdapterVlan -VMName MyGuest -Trunk -AllowedVlanIdList "10,15" -NativeVlanId 1
不幸的是,执行此命令后,我失去了与客人交流的能力。如果我为来宾打开 Hyper-V 控制台,它没有任何网络访问权限。尝试从主机或网络上的其他位置 ping 来宾会导致一条Destination host unreachable
消息。
我可以通过将适配器返回到未标记模式来“修复”它:
Set-VMNetworkAdapterVlan -VMName MyGuest -Untagged
现在我可以再次与客人交流,但这并不能真正解决任何问题。我仍然需要这个客人能够处理 vlan 10 和 15 上的流量。
我不明白为什么会这样。在切换到中继模式之前,未标记的数据包是 vlan ID 1。现在不应该还是这样吗?我怎样才能让这个客人在我需要的所有 vlan 上进行通信?
我从 ping 时看到的错误消息中得到的最好的结果与没有路由时看到的类似。在将端口设置为中继(可能在主机上)后,是否需要发出单独的命令来为这些网络创建路由?
我只有几个以这种方式设置的虚拟机,它们也没有在本机 VLAN 上交谈。我们为解决这个问题所做的是将本地 VLAN 设置为网络上未使用的 VLAN,将您要使用的 VLAN 放入允许的范围内,然后切换 VM 内的所有 NIC 以标记它们的流量。
我找到了解决方案!
alejanp 在此链接上的帖子让我尝试使用 vlan 0,以下命令似乎正在工作:
简而言之,我将本地 vlan 设置为 0,并将我真正的本地 vlan 包含在允许列表中。
当然,这只能在访客所需的未标记 vlan 与主机/交换机端口的未标记 vlan 匹配时才有效。值得庆幸的是,今天就是这种情况。