将 NAT 后面的 Windows 客户虚拟机路由到主机上的多个连接网络

将 NAT 后面的 Windows 客户虚拟机路由到主机上的多个连接网络

我已将 Windows Server 2016 配置为 Hyper-V 角色。主机连接到两个网络:

  • 10.101.8.0/22(部门本地链接-仅限本地网络)
  • 10.13.80.0/24(ad.company.com 互联网连接网络)

我创建了一个 NAT 网络172.16.0.0/16,并在其下方创建了一些内部 vSwitch,以便客户机通过 NAT 进行通信。每个虚拟机只有一个网络接口连接到单个 vSwitch,该 vSwitch 为 NAT 网络提供接口。它们的 IP 地址和 DNS 服务器是手动设置的。每个客户机都会从每个连接的网络添加一个 DNS 服务器。

从 NAT 后面的 Linux 客户机,我可以同时访问连接到主机的两个网络,没有问题。 Server 2016 管理操作系统也可以连接到这两个网络,没有问题。 但是,主要问题是Windows 客户机似乎只能在任意时刻与主机上的两个网络之一进行通信,并且会在两个网络之间进行切换,似乎无法确定

例如,在 Linux(RHEL 7)上,我可以同时与两个网络上的主机通信。但是在 Windows 客户机上(使用 Windows 8.1 和 Server 2016 客户机进行测试),我只能在任意给定时间访问连接到主机的两个网络中的一个。发往一个网络的连接可以正常工作,而发往另一个网络的连接将始终超时。

有连接的网络似乎偶尔也会“切换”。如果我tracert对网络上的目的地执行没有连接时,它会挂起一段时间(30 秒到一两分钟),但最终会恢复连接。对我来说,这似乎只是掷骰子决定我碰巧连接到哪个网络。但是,当发生这种“切换”时,将失去与另一个网络的连接。当连接经常使用时,活动网络连接似乎相对稳定……

我尝试过更改连接 DNS 后缀设置,也尝试过启用/禁用 NetBIOS。我检查了客户机和主机上的路由表,似乎没有什么不对劲。不知道从哪里开始进行故障排除。我没有在管理操作系统上运行任何 dhcp/路由角色。

答案1

我可以解决(某种程度上)主要问题,方法是添加专用于本地网络流量的第二个网络接口,删除默认路由,并手动添加新的“默认”路由以使用特定接口和另一个网络路由dept.local

我执行了以下命令,其中172.16.1.1是虚拟交换机的 IP,if 4用于“默认”路由,if 7用于dept.local网络。

route delete 0.0.0.0
route add -p 0.0.0.0 mask 0.0.0.0 172.16.1.1 metric 200 if 4
route add -p 10.101.8.0 mask 255.255.252.0 172.16.1.1 metric 100 if 7

但是,我仍然不清楚为什么尝试通过同一接口路由时流量不起作用,即使网关相同,以及为什么这在 Linux 上不是问题。如果有人可以向我解释这一点和/或提供不需要第二个接口的更好的解决方案,我将很乐意接受答案。

相关内容