在Windows上拆分DNS

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

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

在macOS和Linux中,我可以在/etc/resolver下创build一个自定义的parsing器设置给特定的域。

我不知道我怎么能在Windows上做到这一点。 我们没有AD,DNS不应该是我们VPN的默认网关。

有关背景信息,请查看DNS堆栈如何在Windows上工作。

当FQDN的分辨率需要发生时,请说a.contoso.com

  • 如果在caching或主机文件中找不到匹配项
  • 操作系统查看名称parsing策略表,这是一个接口不可知的列表,您可以在其中指定用于名称或后缀的DNS服务器IP地址或代理服务器
  • 如果在接口上发送NRPT表查询中没有匹配,并且select了来自最优选接口的响应(Lan> VPN> Wi-Fi> Cellular)

现在针对您的具体情况,最好的做法是为* .coolcorp.io和公司DNS服务器添加一个NRPT条目。 在Windows 10上,可以通过VPNM2的CSP中的DomainNameInformationList属性( https://docs.microsoft.com/en-us/windows/client-management/mdm/vpnv2-csp)将其作为Windows VPNconfiguration文件的一部分。 NRPT策略也可以通过Add-DnsClientNrptRule powershell命令行开关添加。 这将确保* .coolcorp.io的所有分辨率转到VPN服务器。 接下来,在您的VPNconfiguration文件本身,您现在不需要提供DNS服务器地址或DNS后缀。

如果我正确地读了你的话,那么我想这取决于你如何从你的VPN分配IP地址,以及你是否有能力设置DNS服务器地址,猜测你可能并不是每个实现都是一样的。 你想configuration你想要在DNS服务器上进行内部回答的区域,并保持recursion完整(尽pipe如果这个DNS服务器暴露给公众,这通常是一个坏主意,因为它会打开你到潜在的拒绝服务攻击,如果是这样的话,你可能需要更复杂一些)。 这样你的DNS服务器将会首先回答它的内容,如果它没有查询区域,它将默认转发到因特网根目录。