Windows DNS 泄漏防护
在 Windows 上,严格路由如何阻止 TUN 模式下的 DNS 泄漏,以及无法使用它时该怎么办。
在 TUN 模式下,Windows 仍可能通过你平常的网卡(而不是隧道)发送 DNS 查询。这样你的运营商就能看到你查询了哪些网站,这就是 DNS 泄漏。本页介绍 Throne 如何防止 DNS 泄漏、如何确认防护已开启,以及无法使用该防护时该怎么办。
本页只涉及 TUN 模式。严格路由(Strict Route)在 系统代理(System Proxy)模式下不起作用;在该模式下,忽略代理的应用会自行连接并解析域名。
严格路由
Windows 可能会同时把同一个 DNS 查询发送给所有网卡的 DNS 服务器。即使 Windows 最终采用了来自隧道的应答,该查询也已经在隧道之外、通过你平常的网卡发送出去了。
严格路由 可以阻止这种情况。在 TUN 模式运行期间,Throne 会添加 Windows 防火墙过滤规则,用于:
- 在除隧道以外的所有网卡上阻止 DNS 查询(端口 53),使 Windows 从 Throne 获得应答;
- 在
Tun 启用 IPv6(Tun Enable IPv6)关闭时阻止其他应用的 IPv6 连接,以免经由 IPv6 泄漏。
ThroneCore 本身不会被阻止。TUN 模式停止或 Throne 退出时,这些过滤规则会随之消失。它们也可能阻止那些必须在隧道之外访问 DNS 服务器或使用 IPv6 的程序。
从 Throne 1.2.1 起,严格路由 在 Windows 10 和 11 上默认开启。开启后,你就不需要下文的注册表备用方案。
确认已开启
- 打开
设置(Settings)→Tun 设置(Tun Settings)。 - 确认已勾选
严格路由。 - 点击
确定(OK)。 - 如果
Tun 模式(Tun Mode)已开启,请将其关闭后再重新开启。Throne 会提示“重启 Tun 以生效。”(Restart Tun to take effect)
未开启的情况
以下情况下,严格路由 可能处于关闭状态:
- Windows 7、8 或 8.1。
严格路由无法在 Windows 10 之前的 Windows 上工作,因此 Throne 不会开启它。 - 你在出错后关闭了它。 如果 Windows 无法设置这些过滤规则,配置档将无法启动,Throne 会显示“严格的路由不可用”(Strict routing unavailable)。该消息建议关闭
严格路由,但这样也会失去防护。如果能排除故障原因,请重新开启它。 - 你是从 Throne 1.2.0 开始使用的。 该版本中
严格路由默认关闭,而更新会保留你已保存的设置。请现在勾选它。
如果无法使用 严格路由,请采用下文的注册表备用方案。
注册表备用方案
在不使用 严格路由 的情况下,你可以关闭 Windows 中同时向所有网卡发送 DNS 查询的功能。其组策略名称为 关闭智能多宿主名称解析(Turn off smart multi-homed name resolution)。这种方法的防护效果弱于 严格路由:它只改变 Windows 选择 DNS 服务器的方式,并不阻止任何流量。该策略存在于 Windows 8 及更高版本中,因此 Windows 7 上这两种防护都不可用。
使用组策略(专业版、企业版、教育版)
- 在开始菜单中搜索
编辑组策略(Edit group policy)并打开它。 - 依次进入
计算机配置(Computer Configuration)→管理模板(Administrative Templates)→网络(Network)→DNS 客户端(DNS Client)。 - 双击
关闭智能多宿主名称解析。 - 选择
已启用(Enabled),然后点击确定(OK)。 - 重启 Windows。
使用注册表(Windows 家庭版)
Windows 家庭版没有组策略编辑器。以下命令会在注册表中设置相同的策略:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v DisableSmartNameResolution /t REG_DWORD /d 1 /f
- 复制上面的命令。
- 在开始菜单中搜索
cmd。 - 右键点击
命令提示符(Command Prompt),选择以管理员身份运行(Run as administrator)。 - 粘贴命令并按
Enter。 - 重启 Windows。
要撤销此设置,请以同样的方式运行以下命令,然后重启 Windows:
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v DisableSmartNameResolution /f
如果你使用的是组策略,请改为将该策略设回 未配置(Not Configured)。
浏览器
加密 DNS
浏览器可以使用自带的加密 DNS(DNS over HTTPS),Windows 11 也可以为网卡启用它。这些查询不使用端口 53,因此不会被 严格路由 阻止,也不会使用 Throne 的 DNS 设置。此时泄漏测试会显示该 DNS 服务商的服务器。
如果你希望所有查询都经过 Throne 的 DNS,请在浏览器的隐私或安全设置中关闭安全 DNS 选项,并在 Windows 设置中为网卡关闭 DNS over HTTPS。
QUIC
关闭 QUIC 并不能解决 DNS 泄漏,它针对的是另一个问题。许多网站(例如 Google 和 YouTube)使用 QUIC(基于 UDP 的 HTTP/3),而有些代理服务器对 UDP 的支持很差,甚至完全不支持。如果这些网站通过隧道访问时加载缓慢或无法打开,而其他网站正常,请在浏览器中关闭 QUIC,让它改用 TCP。
在 Chrome 中:
- 打开
chrome://flags/。 - 搜索
QUIC。 - 将
Experimental QUIC protocol设为Disabled。 - 点击
Relaunch。
仍有泄漏?
- 检查路由设置。 有些结果是正常的。例如,被规则设为直连的域名会有意使用
直连 DNS(Direct DNS)进行解析,而这通常就是你的运营商的 DNS 服务器。DNS 泄漏测试中列出了预期的结果。 - 检查安全软件。 有些杀毒软件和防火墙产品会自行过滤或重定向 DNS。请在暂停它们后再测试,或者为 Throne 添加例外。
- 检查其他 VPN 应用。 使用 TUN 模式时,请断开其他 VPN 客户端,它们也可能修改 DNS 设置和防火墙规则。