我有一个场景,Windows 客户端设备将连接到两个不同的 VPN 网络。每个远程网络都有单独的地址空间,10.0.0.0/16
并且10.20.0.0/16
分别。IP 路由在客户端计算机上建立,以便这些 IP 范围的流量通过正确的 VPN 连接发送,所有其他流量通过 Internet 正常发送。
这就是我们的乐趣开始的地方。每个网络还托管它自己的 Active Directory 域,我将其DomainA.com
称为DomainB.com
. 理想情况下,我希望用户能够通过 FQDN 访问任一域中的资源,而不仅仅是 IP 地址。因此,例如,server.DomainA.com
将解析到10.0.0.50
并通过第一个 VPN 连接进行联系,server.DomainB.com
并将解析到10.20.0.50
并通过第二个 VPN 进行联系。
当然,网络中的DNS服务器对.com10.0.0.0/16
一无所知DomainB.com
,网络中的DNS服务器对.com10.20.0.0/16
也一无所知DomainA
。并且互联网 DNS 不知道任何一个域的正确地址。
在这种情况下,您将如何让 DNS 解析为DomainA.com
和DomainB.com
Internet 工作?我觉得我应该能够告诉 Windows“使用 X DNS 服务器DomainA.com
”和“使用 Y DNS 服务器DomainB.com
”。有没有办法做到这一点?如果没有,我可以对客户端设备或远程网络进行其他更改吗?
我找到了答案。您可以使用 Windows名称解析策略表 (NPRT)。本质上,这正是问题中所要求的:一种告诉 Windows 为特定域使用特定 DNS 服务器的方法。您可以使用组策略配置 NRPT,但在我的情况下,我使用 PowerShell 配置它,特别是Add-DnsClientNrptRule。
下面是我用于管理给定 NRPT 规则的最终 PowerShell 脚本:
(注意
.
域名字符串开头的。)我首先删除该域的所有现有规则,因为 NRPT 规则不会相互覆盖。相反,冲突导致不应用任何规则。
作为另一个旁注,我读过它
nslookup
不尊重 NRPT 规则。因此,如果您正在对此进行测试,请不要被此愚弄。在我的测试ping
中,mstsc
其他 Windows 组件与这些规则完美配合。