我正在使用Shrew Soft VPN 客户端 v2.2.2连接到远程网络。一切正常,除了我根据https://dnsleaktest.com/遇到 DNS 泄漏。
在 VPN 客户端中,我已经检查了使用 VPN 服务器提供的 DNS 服务器:
我还检查了自动获取拓扑或全部隧道:
根据https://dnsleaktest.com/使用了两个 DNS 服务器:本地服务器和远程服务器 (VPN)。所以会发生某种负载平衡。在 PowerShell 中使用Get-DnsClientServerAddress
,我可以确认 Windows 知道两个 DNS 服务器(本地和远程)。本地 DNS 服务器从物理网卡接收,远程 DNS 服务器从虚拟 Shrew 软网卡接收。所以我很确定,负载平衡正在发生,这在这种情况下是非常不可取的。
有什么我可以轻松配置以在未连接到 VPN 时使用本地 DNS 服务器并在连接到 VPN 时仅使用 VPN DNS 服务器?
您可以运行命令脚本来修改泄漏接口上的 DNS 服务器。
即,如果您的物理接口被命名为“以太网”并且它的 IP 是静态配置的 DNS 静态配置,那么以管理员身份使用以下行运行命令脚本:
您将收到一条消息
也许,或者也许你只是在我只有一个的情况下得到那个。当我在此接口的 DHCP 配置上尝试此操作时,当我删除静态服务器时,DNS 服务器是由 DHCP 设置的。Windows 真的希望你有一个 DNS 服务器。
在您的 VPN 启动后。看看你会不会漏水。在你拆除你的 VPN 之前,将你的 DNS 服务器添加回接口
TL;博士
与其他接口相比,将最高优先级(最低指标值)应用于您的 VPN 接口并重新启动计算机以使所有服务都知道新指标:
解释
Windows 10 使用自动指标功能自动确定每个网络接口的指标。您可能会认为,Windows 仅将指标用于路由目的,但它也使用它来选择主 DNS 服务器。您可以在这个出色的答案中阅读更多相关信息。
在我的例子中,55 被分配给我的虚拟 VPN 接口,50 被分配给我的物理 WiFi 接口,5 被分配给我的物理以太网接口。您可以使用以下 PowerShell 命令检查当前指标:
然后,我将虚拟 VPN 接口的指标更改为
1
:更改立即可见
Get-NetIPInterface
,但服务似乎并没有意识到该更改。重新启动后,一切都按预期工作。带有 DNS 服务器的 VPN 接口具有最高优先级,我不再遭受 DNS 泄漏。但它可能不是 100% 稳定的,因为如果 VPN 连接的 DNS 服务器没有及时响应,其他 DNS 服务器仍然可用并且将被选择。