我正在使用Shrew Soft VPN 客户端 v2.2.2连接到远程网络。一切正常,只是我遇到了 DNS 泄漏https://dnsleaktest.com/。
在 VPN 客户端中,我已经检查过使用 VPN 服务器提供的 DNS 服务器:
我还检查了自动获取拓扑或隧道全部:
根据https://dnsleaktest.com/两个 DNS 服务器均被使用:本地服务器和远程服务器 (VPN)。因此会发生某种负载平衡。使用Get-DnsClientServerAddress
PowerShell,我可以确认 Windows 知道两个 DNS 服务器(本地和远程)。本地 DNS 服务器从物理 NIC 接收,而远程 DNS 服务器从虚拟 Shrew Soft NIC 接收。因此我很确定正在发生负载平衡,这在这种情况下是非常不受欢迎的。
有什么我可以舒适地配置以使用本地 DNS 服务器吗?未连接连接到 VPN,并且仅在以下情况下使用 VPN DNS 服务器连接的使用 VPN?
答案1
您可以运行命令脚本来修改泄漏接口上的 DNS 服务器。
即,如果您的物理接口名为“以太网”,并且其 IP 是静态配置的,DNS 也是静态配置的,那么请使用以下行以管理员身份运行命令脚本:
netsh dnsclient delete dnsserver "Ethernet" all
您将收到一条消息
There are no Domain Name Servers (DNS) configured on this computer.
也许,或者你只是在我只有一个的情况下才得到这个。当我在这个接口的 DHCP 配置上尝试此操作时,当我删除静态 DNS 服务器时,DNS 服务器由 DHCP 设置。Windows 确实希望您拥有一个 DNS 服务器。
VPN 启动后。然后查看是否出现泄漏。在拆除 VPN 之前,使用以下方法将 DNS 服务器重新添加到界面:
netsh dnsclient add dnsserver "Ethernet" 192.168.1.1 (for example)
答案2
总结
与其他接口相比,将最高优先级(最低度量值)应用于您的 VPN 接口,然后重新启动机器以使所有服务了解新度量:
Set-NetIPInterface -InterfaceIndex <INDEX_OF_VPN_IF> -InterfaceMetric 1
解释
Windows 10 使用自动度量功能自动确定每个网络接口的度量。您可能认为 Windows 仅将度量用于路由目的,但它也使用它来选择主 DNS 服务器。您可以在这个优秀的答案。
在我的例子中,我的虚拟 VPN 接口分配了 55 个指标,我的物理 WiFi 接口分配了 50 个指标,我的物理以太网接口分配了 5 个指标。您可以使用以下 PowerShell 命令检查当前指标:
Get-NetIPInterface | Select-Object -Property InterfaceIndex, InterfaceAlias, InterfaceMetric
然后我将虚拟 VPN 接口的度量标准更改为1
:
Set-NetIPInterface -InterfaceIndex <INDEX_OF_VPN_IF> -InterfaceMetric 1
更改立即可见Get-NetIPInterface
,但服务似乎尚未意识到该更改。重新启动后,一切都按预期运行。VPN 接口及其 DNS 服务器具有最高优先级,我不再遭受 DNS 泄漏。
但它可能不是 100% 稳定,因为如果 VPN 连接的 DNS 服务器没有及时响应,其他 DNS 服务器仍然可用并且会被选中。