Windows 上的拆分 DNS

Windows 上的拆分 DNS

我有一个内部网络,其中所有服务都在内部域下注册(例如coolcorp.io:)。

当用户连接到 VPN 时,我希望他们能够解析内部服务*.coolcorp.io,而无需通过我们的内部 DNS 服务器进行任何其他“公共”名称解析。

在 macOS 和 Linux 中,我可以/etc/resolver在该特定域下创建自定义解析器设置。

我不确定如何在 Windows 上执行此操作。我们没有 AD,DNS 不应该是我们的 VPN 的默认网关。

答案1

作为背景,让我们看看 DNS 堆栈在 Windows 上的工作方式。

当需要解析 FQDN 时,例如 a.contoso.com

  • 如果在缓存或 hosts 文件中未找到匹配项
  • 操作系统查看名称解析策略表,这是一个与接口无关的列表,您可以在其中指定用于名称或后缀的 DNS 服务器 IP 地址或代理服务器
  • 如果 NRPT 表中没有匹配项,则在接口上发送查询,并选择来自最优先接口的响应(Lan > VPN > Wi-Fi > 蜂窝)

现在,对于您的特定情况,最好的做法是为 *.coolcorp.io 和公司 DNS 服务器添加 NRPT 条目。在 Windows 10 上,这可以通过 VPNv2 CSP 中用于 MDM 的 DomainNameInformationList 属性成为 Windows VPN 配置文件的一部分https://docs.microsoft.com/en-us/windows/client-management/mdm/vpnv2-csp。NRPT 策略也可以通过 Add-DnsClientNrptRule powershell 命令行添加。这将确保 *.coolcorp.io 的所有解析都转到 VPN 服务器。接下来,在您的 VPN 配置文件中,您现在不需要提供 DNS 服务器地址或 DNS 后缀。

答案2

如果我没看错的话,那么我猜这取决于您如何从 VPN 分配 IP,以及您是否有能力设置 DNS 服务器地址,我猜你会这样做,但不是每个实现都一样。您需要在该 DNS 服务器上配置要内部回答的区域,并保持递归不变(尽管如果该 DNS 服务器公开,这通常不是一个好主意,因为它会使您面临潜在的拒绝服务攻击,如果是这样,您可能需要更复杂)。这样,您的 DNS 服务器将首先回答它能回答的问题,如果它没有查询的区域,它将默认转发到互联网根目录。

相关内容