很多用户已经知道要检查 IP、延迟和端口,却容易忽略 DNS 出口。实际访问网站时,浏览器不仅会连接目标服务器,还会先发起域名解析。如果应用流量走了代理或加速链路,但 DNS 查询仍然从本地运营商、路由器或系统默认 DNS 发出,就可能出现 DNS 泄漏。
DNS 泄漏不一定会让网页打不开,但它会暴露“你正在查询哪些域名”和“查询请求从哪里出去”。对跨境办公、开发调试、账号风控、隐私保护和访问稳定性来说,DNS 出口是否一致是一个值得单独检查的指标。
- DNS 泄漏是什么,和 IP 泄漏有什么区别。
- 如何用在线工具和命令行做 dns泄漏查询/测试。
- 发现 DNS 出口异常后,应该按什么顺序排查。
一、DNS 泄漏是什么
DNS 的作用是把域名转换成 IP 地址。比如你访问 example.com,系统通常会先询问 DNS 服务器:“这个域名对应哪个 IP?”拿到结果后,浏览器才会发起后续连接。
所谓 DNS 泄漏,就是应用层连接看起来已经走了代理、加速或指定网络路径,但 DNS 查询却没有跟随这条路径,而是从本地默认 DNS、运营商 DNS、路由器 DNS 或其他意外出口发出。
理想情况: 浏览器请求 -> 代理/加速链路 -> 统一 DNS 出口 -> 目标网站 泄漏情况: 浏览器请求 -> 代理/加速链路 -> 目标网站 DNS 查询 -> 本地运营商 DNS -> 暴露真实网络出口
二、DNS 泄漏和 IP 泄漏有什么区别
| 类型 | 暴露内容 | 常见影响 |
|---|---|---|
| IP 泄漏 | 真实公网 IP 或本地网络地址。 | 目标服务看到的访问来源不符合预期。 |
| DNS 泄漏 | DNS 查询出口、递归 DNS 服务商和大致网络位置。 | 域名查询记录可能没有走预期线路,影响隐私和调度结果。 |
| WebRTC 泄漏 | 浏览器通过实时通信接口暴露局域网或公网地址。 | 浏览器环境下更常见,需要单独检测。 |
所以只看“当前 IP 是否变化”不够。IP 显示正常,DNS 仍可能从另一个出口发出;DNS 出口正常,也不代表 WebRTC 一定没有泄漏。完整检查应该把 IP、DNS、WebRTC 放在一起看。
三、最快的方法:使用在线 DNS 泄漏测试
帮助中心已经提供了 DNS 泄漏测试入口,可以直接访问:
https://www.wenrugou.net/tools/dns-leak-test
测试时建议先记录两个状态:
- 未开启代理或加速时,DNS 出口显示在哪里。
- 开启代理或加速后,DNS 出口是否发生变化。
- DNS 出口国家、地区、服务商是否与预期一致。
- 是否同时出现多个 DNS 出口,且其中包含本地运营商。
如果开启加速后仍然看到本地运营商 DNS,就需要继续排查系统 DNS、浏览器安全 DNS、代理规则和客户端 DNS 接管策略。
四、命令行怎么辅助验证
在线测试更直观,但命令行适合做交叉验证。
Windows 查看当前 DNS 配置
ipconfig /all
重点看当前网卡下的 DNS Servers 字段。如果这里仍是路由器地址、运营商地址或公司内网 DNS,就要结合代理模式判断是否符合预期。
PowerShell 查询 DNS 服务器
Get-DnsClientServerAddress | Select-Object InterfaceAlias,AddressFamily,ServerAddresses
指定 DNS 服务器做解析对比
nslookup example.com 223.5.5.5 nslookup example.com 1.1.1.1 nslookup example.com 8.8.8.8
如果不同 DNS 返回的 IP 差异很大,说明 CDN 调度、缓存或解析策略可能不同。DNS 泄漏排查时,既要看“从哪里查询”,也要看“查询到了什么结果”。
五、curl 看 DNS、连接和首包耗时
DNS 出口异常有时还会带来解析慢、节点调度差、首包时间高等问题。可以用 curl 拆分阶段耗时:
curl -o /dev/null -s -w "dns=%{time_namelookup}\nconnect=%{time_connect}\ntls=%{time_appconnect}\nfirst_byte=%{time_starttransfer}\ntotal=%{time_total}\nremote_ip=%{remote_ip}\n" https://www.wenrugou.net
字段含义:
| 字段 | 含义 | 排查方向 |
|---|---|---|
| dns | DNS 解析耗时。 | 过高时检查解析器、缓存和网络路径。 |
| connect | TCP 建连耗时。 | 过高时检查路由、端口和链路质量。 |
| tls | TLS 握手耗时。 | 过高时检查证书链、RTT 和中间链路。 |
| first_byte | 首字节时间。 | 过高时检查服务端响应或 CDN 回源。 |
六、常见 DNS 泄漏原因
- 浏览器安全 DNS
- Chrome、Edge、Firefox 可能启用独立的安全 DNS,和系统代理链路不一致。
- 系统 DNS 没被接管
- 应用流量走了代理,但系统 DNS 仍然使用默认网卡 DNS。
- 分流规则不完整
- 部分域名或 UDP/53 查询没有进入预期链路。
- 路由器强制 DNS
- 部分网络环境会把所有 DNS 查询转发到指定递归 DNS。
- IPv6 单独泄漏
- IPv4 流量正常,但 IPv6 DNS 或 IPv6 连接没有被同等处理。
七、排障流程:发现 DNS 泄漏后怎么查
1. 先打开 /tools/dns-leak-test,记录 DNS 出口 2. 开启或切换加速/代理线路,再测一次 3. 检查浏览器是否启用安全 DNS 4. 检查系统 DNS Servers 是否仍是本地运营商 5. 检查客户端是否启用 TUN、系统代理或 DNS 接管 6. 检查是否存在 IPv6 泄漏 7. 清理 DNS 缓存后重新测试 8. 对比不同浏览器、不同网络和不同线路
Windows 清理 DNS 缓存:
ipconfig /flushdns
macOS 常用命令:
sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
八、什么时候需要特别关注 DNS 泄漏
- 跨境办公账号经常触发异常登录验证。
- 浏览器显示访问 IP 正常,但 DNS 测试显示本地运营商。
- 同一网站在不同浏览器里访问结果不一致。
- AI 工具、开发平台、云服务控制台时好时坏。
- 公司网络、校园网、酒店网络下 DNS 出口被强制改写。
- 你需要确认工具链是否真正接管 DNS 查询。
九、建议的日常检查模板
测试时间: 当前网络: 当前线路: 页面 URL:/dns-leak-test-guide.html 工具入口:https://www.wenrugou.net/tools/dns-leak-test DNS 出口: 是否出现本地运营商 DNS: 是否出现多个 DNS 出口: 是否启用浏览器安全 DNS: 是否启用 IPv6: 结论:
十、总结
dns泄漏查询/测试不是只给安全人员看的功能。对普通用户、开发者、外贸团队和远程办公用户来说,它能帮助判断 DNS 查询是否走了预期链路,避免“IP 看起来正常,但 DNS 仍从本地出去”的隐蔽问题。
建议把 DNS 泄漏测试和 IP 检测、WebRTC 检测、端口检测一起使用。先确认出口,再看延迟、丢包、路由和应用层状态,排障会清晰很多。
