具有多个 VPN 连接的客户端 DNS

具有多个 VPN 连接的客户端 DNS

我有一个场景,Windows 客户端设备将连接到两个不同的 VPN 网络。远程网络各自具有单独的地址空间10.0.0.0/1610.20.0.0/16。在客户端计算机上建立了 IP 路由,以便这些 IP 范围的流量通过正确的 VPN 连接发送,而所有其他流量则正常通过互联网发送。

我们的乐趣就从这里开始。每个网络还托管自己的 Active Directory 域,我将其称为DomainA.comDomainB.com。理想情况下,我希望用户能够通过 FQDN 访问任一域中的资源,而不仅仅是 IP 地址。因此,例如,server.DomainA.com将解析为10.0.0.50并通过第一个 VPN 连接进行联系,并将server.DomainB.com解析为10.20.0.50并通过第二个 VPN 进行联系。

当然,10.0.0.0/16网络中的 DNS 服务器对 一无所知DomainB.com,网络中的 DNS 服务器10.20.0.0/16对 .com 一无所知DomainA。而互联网 DNS 不知道这两个域的正确地址。

在这种情况下,您将如何让 DNS 解析适用于DomainA.comDomainB.com互联网?我觉得我应该能够告诉 Windows“使用 X DNS 服务器DomainA.com”和“使用 Y DNS 服务器DomainB.com”。有什么办法吗?如果没有,我是否可以对客户端设备或远程网络进行其他更改?

答案1

我找到了答案。您可以使用 Windows名称解析策略表 (NPRT).这本质上是确切地问题中要求的是:一种告诉 Windows 使用特定域的特定 DNS 服务器的方法。您可以使用组策略配置 NRPT,但在我的例子中,我使用 PowerShell 进行配置,具体来说添加DnsClientNrptRule

下面是我用于管理给定 NRPT 规则的最终 PowerShell 脚本:

$Domain = ".DomainA.com"
[string[]]$NameServers = "10.0.0.4", "10.0.0.5"

Get-DnsClientNrptRule | Where Namespace -eq $Domain | ForEach-Object {Remove-DnsClientNrptRule -Name $_.Name -Force}
Add-DnsClientNrptRule -Namespace $Domain -NameServers $NameServers

(请注意.域名字符串的开头。)

我首先删除该域的所有现有规则,因为 NRPT 规则不会相互覆盖。相反,冲突会导致不应用任何规则。

另外需要注意的是,我读到过这nslookup不遵守 NRPT 规则。所以如果你正在测试这个,不要被它愚弄。在我的测试中pingmstsc和其他 Windows 组件在遵守这些规则的情况下运行良好。

相关内容