DNS 泄露检测

此工具检测你的 DNS 请求实际由哪些 DNS 服务器处理。如果你在使用 VPN,DNS 请求应该走 VPN 的 DNS 服务器。如果没有,说明存在 DNS 泄露。

什么是 DNS 泄露?

使用 VPN 时,所有网络流量(包括 DNS 查询)都应通过 VPN 加密隧道。DNS 泄露是指你的 DNS 查询绕过 VPN 隧道,直接发送到 ISP(运营商)或其他第三方的 DNS 服务器,导致你访问的网站域名被暴露。

  • 无泄露:只出现 VPN 提供商自己的 DNS 服务器,且地区与 VPN 出口一致
  • 可能泄露:出现 ISP 的 DNS、公共 DNS(如 8.8.8.8)或未知 DNS 服务器
  • 严重泄露:DNS 解析器的地区与你的真实位置一致(而非 VPN 出口位置),暴露了你的真实地理位置

DNS 泄露的 7 大原因

1. 操作系统的"智能多宿主"机制(最常见)

Windows 8/10/11 的 Smart Multi-Homed Name Resolution 会同时向所有网络接口发送 DNS 查询(包括 VPN 隧道和本地网卡),哪个先回就用哪个。即使 VPN 连上了,系统仍可能从本地 ISP 的 DNS 获取结果。

2. VPN 配置不当(无 DNS 推送)

VPN 服务端没有通过 DHCP 推送自己的 DNS 服务器地址给客户端,导致客户端继续使用系统默认的 DNS(通常是 ISP 的路由器或手动配置的公共 DNS)。

3. IPv6 DNS 泄露

很多 VPN 只隧道 IPv4 流量,不处理 IPv6。如果你的网络支持 IPv6,DNS 查询可能通过 IPv6 直接绕过 VPN 隧道,走到 ISP 的 IPv6 DNS 服务器。

4. 透明 DNS 代理(ISP 劫持)

部分 ISP 在网络层部署透明 DNS 代理,会拦截所有发往 53 端口的 DNS 流量并替换为自己的 DNS 响应——即使你手动设置了其他 DNS 服务器(如 1.1.1.1)。

5. WebRTC 泄露关联

浏览器的 WebRTC 功能可能泄露真实本地/公网 IP。虽然这不是直接的 DNS 泄露,但攻击者可以通过 WebRTC 获取你的真实 IP 后推断你的 ISP DNS。

6. VPN 连接中断(Kill Switch 缺失)

VPN 连接短暂断开时,如果没有 Kill Switch(网络锁),操作系统会立即回退到默认路由和 DNS 配置,期间所有 DNS 查询都会泄露到 ISP。

7. 手动配置的 DNS 覆盖 VPN

如果你在网络适配器中手动设置了 DNS(如 Google 8.8.8.8 或 Cloudflare 1.1.1.1),某些 VPN 客户端可能无法覆盖这个设置,导致 DNS 查询直接走公共 DNS 而非 VPN 隧道。

如何彻底杜绝 DNS 泄露(8 种方案)

✅ 1. 使用内置 DNS 保护的 VPN

选择自带 DNS 泄露保护的 VPN 客户端(如 NordVPN、Mullvad、ProtonVPN)。这些客户端会自动接管系统 DNS 设置,强制所有 DNS 走 VPN 隧道。

✅ 2. 开启 VPN Kill Switch

Kill Switch 在 VPN 断开时自动阻断所有网络流量,防止 DNS 在 VPN 中断瞬间泄露。大多数主流 VPN 都有此功能,务必开启。

✅ 3. 禁用 Windows 智能多宿主 DNS

通过组策略或注册表禁用:
计算机配置 → 管理模板 → 网络 → DNS 客户端 → 禁用智能多宿主名称解析
或注册表:HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient 设置 DisableSmartNameResolution = 1

✅ 4. 禁用 IPv6(如果 VPN 不支持)

在网络适配器设置中取消勾选 "Internet 协议版本 6 (TCP/IPv6)",或在 VPN 客户端中启用 IPv6 泄露保护。部分 VPN 已支持 IPv6 隧道——如果支持就不需要禁用。

✅ 5. 使用 DNS-over-HTTPS (DoH) 或 DNS-over-TLS (DoT)

加密的 DNS 协议(DoH/DoT)通过 HTTPS(443 端口)或 TLS(853 端口)发送 DNS 查询,ISP 的透明代理无法拦截或劫持。推荐配置:

  • Cloudflare DoH: https://cloudflare-dns.com/dns-query
  • Google DoH: https://dns.google/dns-query
  • Quad9 DoH: https://dns.quad9.net/dns-query

在浏览器设置或系统网络设置中启用"安全 DNS"/"加密 DNS"即可。

✅ 6. 在路由器级别配置 VPN

将 VPN 配置在路由器上(而非每台设备上),所有通过该路由器的流量自动走 VPN 隧道,从根本上防止单台设备的 DNS 泄露。适用于 OpenWrt、Asus Merlin、pfSense 等路由器固件。

✅ 7. 锁定 DNS 到 VPN 的 DNS 服务器

在 VPN 连接后,将系统 DNS 手动设置为 VPN 提供商的 DNS 地址(通常在 VPN 客户端文档中可找到),而不是使用公共 DNS。部分 VPN 客户端有"独占 DNS"选项。

✅ 8. 禁用 WebRTC(浏览器层面)

防止 WebRTC 泄露辅助 DNS 关联攻击:

  • Firefox:地址栏输入 about:config,搜索 media.peerconnection.enabled,设为 false
  • Chrome:安装 "WebRTC Leak Prevent" 扩展,或使用 Brave 浏览器(默认屏蔽)

检测原理

我们的检测分为 3 步:

  • 第 1 步 — 生成唯一域名:服务器为每次测试生成多个随机子域名(如 abc123.leak.example.com),确保不会命中任何 DNS 缓存。
  • 第 2 步 — 触发 DNS 解析:浏览器请求这些域名的资源(图片),触发 DNS 查询。你的操作系统会将查询发送到它配置的 DNS 服务器。
  • 第 3 步 — 记录解析器 IP:我们的权威 DNS 服务器记录是哪些 DNS resolver IP 来查询了这些域名。通过地理定位这些 IP,我们就能判断你的 DNS 请求是否走了 VPN 隧道。

如果出现的 DNS 服务器位于你的真实地理位置(而非 VPN 出口位置),说明 DNS 泄露了。

FAQ

Q: 不用 VPN 的时候也会"泄露"吗?

不用 VPN 时,DNS 查询走你系统配置的 DNS 是正常行为,不算泄露。"DNS 泄露"特指使用 VPN 时 DNS 查询绕过了 VPN 隧道。

Q: 检测到多个 DNS 服务器正常吗?

正常。大型 DNS 服务(如 Google DNS、Cloudflare)使用 Anycast 和负载均衡,同一个请求可能被不同数据中心的多台服务器处理。只要它们都属于你的 VPN 提供商或你信任的 DNS 服务,就是安全的。

Q: DNS 泄露有什么风险?

隐私暴露:ISP 可以看到你访问了哪些网站域名;② 位置泄露:DNS 服务器位置可以暴露你的真实地理位置;③ 审查风险:在网络审查地区,ISP 可能利用 DNS 查询进行内容过滤或记录;④ 中间人攻击:未加密的 DNS 查询可被篡改,将你重定向到钓鱼网站。

Q: 用了 DoH/DoT 还会泄露吗?

DoH/DoT 加密了 DNS 查询内容,ISP 无法看到你查询了什么域名。但如果 DoH 服务器不在 VPN 隧道内,ISP 仍然知道你在与某个 DoH 服务器通信(虽然不知道具体内容)。最佳实践是 VPN + DoH 双重保护。

💬 留言讨论