Windows 10 Always On VPN、Split DNS、NRPT,以及如何配置使用哪个DNS服务器?

Gra*_*ant 6 vpn internal-dns split-dns split-tunnel windows-10

这是设置:

  • Windows 10 1803 客户端
  • 服务器 2012R2 RRAS 服务器
  • 按照这些说明设置 Always On VPN 设备隧道,使用拆分隧道。
  • Device VPN 只有到 1 个 DC/DNS 服务器和我们的配置管理器服务器的路由,因此可以对其进行管理,并且新用户可以在离开办公室时进行身份验证。当用户需要完全访问办公网络时,他们可以连接到一个单独的用户 VPN。这很有效,但 DNS 除外。
  • AD域名是example.local
  • 公共域名是example.com

问题:

  • 我们将拆分 DNS 用于我们的公共域名 - 因此 mail.example.com 在使用我们的内部 DNS 服务器时解析为内部 IP 地址,以及来自外部世界的公共地址。
  • 我需要 VPN 客户端将其解析为公共地址。设备 VPN 不允许他们与 mail.example.com 的内部地址通信,因此他们无法收到电子邮件。
  • 我还希望(但不是必须)其他位置的本地服务的 DNS 解析正常工作 - 例如。当我在其他公司的办公室时,即使连接了 VPN,othercorp.local 的 DNS 也能正常工作。

我想要发生的事情:

  • 例如,本地查询通过 VPN 到达我们的内部 DNS 服务器
  • 其他所有内容,包括 example.com,都使用由笔记本电脑所连接的 LAN/Wifi 连接提供的 DNS 服务器。
  • 另一个基于用户的 VPN(通过 VPN 路由所有流量)继续使用我们的内部 DNS 服务器处理所有事情。

我试过的:

  • 为 example.local设置名称解析策略表规则,指向我们的内部 DNS 服务器。这似乎确实有效,例如查询 example.local 会通过 VPN ......但其他一切也是如此。
  • 为 example.com 设置 NRPT 规则,带有空白的 DnsServers 字段,应确保它们被排除在外。好像没什么效果。
  • 为 example.com 设置 NRPT 规则,并为 DnsServer 设置公共解析器。这确实有效,但在远程位置中断,除了他们自己的 dns 解析器(我的用户前往的许多站点都这样做)之外的任何东西都阻止了,并且不能解决本地服务问题。
  • 在网络连接中的 VPN 连接上设置“使用以下 DNS 服务器地址”,并将其留空。无效,VPN 连接仍然设置为使用我们的内部服务器。
  • 设置“使用以下DNS服务器地址”,并放入8.8.8.8这样的公共DNS服务器。连接后,我最终在该接口上有 3 个 DNS 服务器,我们的内部服务器位于列表顶部,8.8.8.8 位于列表底部。

我怀疑,如果我可以让 VPN 根本不列出任何 DNS 服务器,NRPT 规则将仅适用于 example.local,并且一切都会正常工作。但是我找不到办法让它不使用 RRAS 服务器提供的那些。

小智 5

您可以尝试的一种潜在解决方法是建立 Server 2016 DNS 服务器并实施 DNS 策略以执行具有地理定位意识的拆分 dns。这将允许您告诉来自设备 VPN 子网的 DNS 查询使用外部 IP 而不是内部 IP。

powershell 命令如下所示。

设备 VPN 子网

Add-DnsServerClientSubnet -Name "DeviceVPNSubnet" -IPv4Subnet "192.168.1.0/24"  
Run Code Online (Sandbox Code Playgroud)

设备 VPN 区域范围

Add-DnsServerZoneScope -ZoneName "example.com" -Name "DeviceVPNZoneScope"  
Run Code Online (Sandbox Code Playgroud)

默认A记录(应该已经存在)

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "192.168.0.5"
Run Code Online (Sandbox Code Playgroud)

设备 VPN A 记录

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "203.0.113.5" -ZoneScope "DeviceVPNZoneScope" 
Run Code Online (Sandbox Code Playgroud)

设备 VPN 解析策略

Add-DnsServerQueryResolutionPolicy -Name "Device VPN Policy" -Action ALLOW -ClientSubnet "eq,DeviceVPNSubnet" -ZoneScope "DeviceVPNZoneScope,1" -ZoneName "example.com"  
Run Code Online (Sandbox Code Playgroud)

请参阅:使用 DNS 策略对主服务器进行基于地理位置的流量管理


Gra*_*ant 1

我想出了解决办法。

将接口指标调整为比现有以太网/wifi 适配器更大的数字将使其更喜欢本地网络上的 DNS 服务器,但 NRPT 规则仍然可以通过 VPN 将我自己的域的 DNS 查询发送到我的服务器。

但是,无法在 powershell、VBscript、.NET 或 VPNv2 CSP 中调整 VPN 连接的接口指标。

如果 VPN 已连接,则可以使用 Set-NetIPInterface cmdlet 在 powershell 中更改指标,但当 VPN 未连接时,它根本不会显示。并且那里的更改不会在重新启动后持续存在。

更改它的唯一方法似乎是编辑文件C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk并更改行IpInterfaceMetricIpv6InterfaceMetric更高的数字。我把它们都改为100。

之后,结合 NRPT 规则,DNS 将按预期工作 - example.local 的所有查询都会发送到我的 AD DNS 服务器。其他任何内容(包括 example.com)都会发送到其本地网络的 DNS 服务器。