DNS泄漏是什么?检测、区别与修复方法详解
简答:DNS泄漏指设备访问网站时,网页连接走了预期通道,但 DNS 查询却从本地网络、浏览器或其他应用单独发出。它不等于 IP 泄漏,也不代表一定发生了数据内容泄露;应结合实际网络路径、DNS 设置和多次复测判断。
定义:DNS泄漏是指域名解析请求没有按照用户预期的系统、VPN、代理或加密 DNS 路径发送,而是被其他解析器处理。
先看结论:DNS泄漏到底泄漏了什么
访问一个网站时,设备通常先把域名转换成 IP 地址,再建立网页连接。这个转换过程就是 DNS 查询。DNS 解析器可以是运营商提供的服务器、路由器转发器、系统手动设置的服务器,也可以是浏览器或客户端指定的加密 DNS 服务。DNS 的递归解析和缓存机制可参考 RFC 8499 DNS 术语说明。
在代理或 VPN 场景中,典型的 DNS 泄漏路径是:网页连接进入隧道,但域名查询仍发往本地路由器或运营商 DNS。此时,解析服务可能看到你查询过哪些域名;但这不等于它能直接看到 HTTPS 页面正文、账号密码或完整网页内容。HTTPS 仍负责保护浏览器与网站之间的加密连接。
| 现象 | 是否等于 DNS 泄漏 | 应如何判断 |
|---|---|---|
| 没有使用代理时,系统使用运营商 DNS | 通常不属于“泄漏” | 先确认是否存在需要保护或接管的预期路径 |
| 代理已连接,但 DNS 查询仍由本地网络处理 | 可能属于 DNS 泄漏 | 检查客户端 DNS 接管、TUN、浏览器 DoH 和 IPv6 |
| 检测到多个 DNS 服务器 | 不一定 | 可能是转发、负载均衡、缓存或不同协议共同产生 |
| DNS 返回了错误 IP | 更接近 DNS 污染或解析异常 | 对照多个解析器和不同网络重复查询 |
最快判断:先在关闭客户端和开启客户端两种状态下,分别查询同一个随机域名或新生成的测试域名,再记录检测到的解析服务、出口网络和 IPv4/IPv6 状态。一次结果只能说明当前浏览器、当前网络和当前测试路径,不能证明所有应用都没有泄漏。
DNS泄漏、DNS污染、IP泄漏和WebRTC泄漏有什么区别
| 问题 | 主要暴露或影响 | 常见判断方法 |
|---|---|---|
| DNS泄漏 | 域名查询交给了非预期解析器 | 对比客户端开启前后的 DNS 出口、抓包或系统配置 |
| DNS污染 | 收到的域名解析结果可能被篡改或返回异常地址 | 使用多个解析器、不同网络和 A/AAAA 记录交叉对比 |
| IP泄漏 | 网站看到的连接出口仍是本地公网地址或非预期地址 | 检查网页连接出口、IPv4、IPv6 和路由路径 |
| WebRTC泄漏 | 浏览器实时通信接口可能暴露局部网络地址或候选地址 | 仅在支持 WebRTC 的浏览器环境中单独测试 |
| DoH或DoT | 改变 DNS 查询的传输方式,不自动等于代理隧道 | 确认查询是否通过指定加密解析器,以及应用是否绕过系统设置 |
DNS over HTTPS(DoH)只是把 DNS 消息放入 HTTPS 连接中,并不会改变 DNS 查询和响应的基本逻辑。微软文档说明,DoH 可降低 DNS 查询在传输途中被观察、修改或篡改的风险,但客户端仍然需要正确配置解析器。可查看 Microsoft 关于 DNS over HTTPS 的说明。
因此,“启用了 DoH”只能说明某一条 DNS 查询路径使用了加密传输,不能自动证明其他浏览器、游戏、终端工具、IPv6 请求或客户端内部 DNS 都经过同一条路径。
怎么检测DNS泄漏:先做三次对照再下结论
- 准备记录表。记录日期、网络类型、是否开启客户端、浏览器名称、IPv4/IPv6 状态、检测到的 DNS 服务商和出口地区。日期按本页核对日记录为 2026-10-25。
- 关闭代理或 VPN 做基线。在普通网络下打开 DNS 检测页面,或使用系统命令查询一个新生成的随机域名。这个结果只代表普通网络的默认解析路径。
- 开启客户端后重新测试。不要只刷新原页面;切换连接状态、清理浏览器 DNS 缓存,再使用新的随机域名测试。
- 分别检查 IPv4 和 IPv6。有些客户端只接管 IPv4,系统或浏览器仍可能通过 IPv6 发出 DNS 查询。若测试页面分别展示两种协议,应分别记录。
- 至少重复三次。更换一次网络或节点、关闭并重新开启客户端、再测试一次。如果只有一次出现不同解析器,先不要直接认定泄漏,可能是缓存、转发或检测页面自身的观察范围造成。
Windows 自带的 nslookup 可显示默认 DNS 服务器,也可指定某个 DNS 服务器进行查询。微软文档列出了默认服务器、指定服务器、A/AAAA 记录和超时等用法,参见 Microsoft nslookup 命令文档。
nslookup example.com
nslookup -type=A example.com
nslookup -type=AAAA example.com
nslookup example.com 1.1.1.1
命令输出中的“Server”或“Address”只能说明这一次查询使用了哪个解析器,不能单独证明网页浏览、其他应用或客户端内部 DNS 的全部路径。若需要更深入确认,可使用抓包工具观察传统 DNS 的 53 端口流量;Wireshark 文档提供了 dns 显示过滤器和 port 53 捕获过滤器说明,见 Wireshark DNS 文档。
为什么在线检测结果不能直接等于“有泄漏”
在线检测页面通常只能观察当前浏览器发起的测试请求。浏览器可能使用自己的安全 DNS,客户端可能接管系统 DNS,路由器可能继续转发请求,应用也可能内置独立解析器。因此,浏览器显示的结果不一定代表所有应用的结果。
- 缓存影响:域名已经解析过时,浏览器、系统或路由器可能直接使用缓存,不会马上发出新查询。
- DoH影响:Firefox 的 DoH 设置可以让浏览器通过 HTTPS 向指定解析器发送查询,也可能因网络策略、企业管理、VPN 或连接失败而回退到系统解析器。具体保护级别可查看 Firefox DNS over HTTPS 配置说明。
- 转发影响:检测页面看到的可能是最终递归解析器,也可能是运营商、路由器或本地服务的转发结果。
- 多解析器影响:负载均衡、备用解析器、IPv4/IPv6 双栈和不同应用的并行查询,都可能让结果看起来不止一个。
- 测试范围影响:一次浏览器测试无法覆盖游戏、办公软件、命令行工具、手机应用以及客户端自己的 DNS 模块。
所以,看到多个 DNS 地址不应直接当作泄漏;更可靠的判断是:你是否明确要求某个客户端或隧道接管 DNS,而测试结果是否持续显示查询仍从预期之外的网络发出。
按设备修复DNS泄漏:最短操作路径
Windows 10/11
- 确认系统 DNS。打开命令提示符运行
nslookup,记录默认 Server 和 Address;再用ipconfig /all查看当前网卡的 DNS 服务器。 - 检查客户端接管方式。如果使用客户端的 TUN 或全局接管模式,确认 DNS 接管开关已启用,并避免浏览器 DoH、IPv6 或其他应用绕过客户端。
- 验证。清理 DNS 缓存后关闭并重新开启客户端,再运行
nslookup和在线检测。若修改 Windows 的 DNS over HTTPS,可参考微软关于 Windows 11 DNS 加密的说明,不要把服务器端 DoH 配置误当成普通客户端设置。
Windows 的 DNS 客户端支持 DoH 和 DoT,但具体可用选项会受系统版本、策略和网络环境影响。不要只更换一个公共 DNS 就认为泄漏已经修复。
macOS
- 打开“系统设置”→“网络”→选择当前 Wi-Fi 或有线网络→“详细信息”。
- 检查 DNS 服务器、代理、IPv6 和客户端网络扩展是否与预期一致;如果客户端提供 DNS 接管或 TUN,确认其状态为已启用。
- 切换网络或关闭再开启客户端后复测,分别记录浏览器与系统命令的结果。
macOS 的图形界面名称可能随版本变化。修改前建议记录原 DNS 和代理参数,避免排障后无法恢复。
Android
- 打开“设置”→“网络和互联网”→“私人 DNS”;部分厂商会把它放在连接或更多连接设置中。
- 在“自动”和“私人 DNS 提供商主机名”之间选择与当前客户端方案不冲突的设置。Google 的说明提醒,私人 DNS 只保护 DNS 问答,不会保护其他网络流量,见 Google Android 私人 DNS 设置说明。
- 开启客户端后,重新打开浏览器或应用,再分别测试 IPv4、IPv6 和 DNS 出口。若客户端使用 TUN,确认私人 DNS 没有绕开客户端。
iPhone
- 打开“设置”→“无线局域网”,点击当前网络右侧的信息按钮。
- 检查 DNS、HTTP 代理和“限制 IP 地址跟踪”等选项。Apple 的 Wi-Fi 设置文档说明,连接到网络后可以在该页面配置 DNS 和 HTTP 代理,见 Apple iPhone Wi-Fi 设置说明。
- 重新连接网络,关闭并开启客户端,再用新测试域名复测。若启用了 iCloud Private Relay,也要把它作为独立的网络路径记录,不要与普通 DNS 接管混为一谈。
客户端和浏览器场景:重点检查谁在发DNS请求
排查客户端时,不要只看“已连接”或网页能否打开。应分别确认三个状态:导入或配置是否成功、DNS 接管是否开启、测试请求是否确实经过预期路径。
- 系统代理模式:通常只影响遵守系统代理的应用,命令行工具、游戏、部分浏览器和后台服务可能不使用它。
- TUN模式:通常可以接管更多系统流量,但仍需检查 IPv6、应用自带 DNS 和排除规则。
- 浏览器 DoH:浏览器可能绕过系统 DNS,Firefox 允许用户调整 DoH 保护级别;开启或关闭后应重新测试,而不是沿用旧结果。
- 客户端日志:优先查看 DNS、TUN、路由、连接和错误日志,关注“query”“resolver”“fallback”“timeout”“IPv6”等字段。日志只能说明客户端自身观察到的状态,仍需结合外部复测。
如果使用 Clash 或 Mihomo 一类客户端,重点核对 DNS 是否接管、是否启用 fake-ip 或 redir-host、是否存在 fallback、直连规则和 IPv6 例外。具体字段和菜单会因版本、内核及配置文件不同而变化;未看到对应选项时,不要照抄其他版本的配置。
复测模板:
日期:2026-10-25
网络:Wi-Fi / 移动数据 / 有线
客户端:关闭 / 开启
模式:系统代理 / TUN / 其他
浏览器:
IPv4:
IPv6:
DNS检测结果:
nslookup默认Server:
是否清理缓存:
是否更换网络后复测:
结论:未发现持续异常 / 需要继续排查
修复后如何判断是否真的改善
- 先恢复一个可控的基线:关闭客户端,在同一网络下测试一次。
- 开启客户端并保持同一浏览器、同一设备,再测试一次。
- 切换一次网络,例如从 Wi-Fi 换到移动数据,排除路由器转发造成的干扰。
- 换一个浏览器或命令行工具,判断是否只有单一应用绕过了系统设置。
- 分别检查 A 和 AAAA 查询,避免只验证 IPv4 而遗漏 IPv6。
- 如果仍有异常,查看客户端日志和抓包;仅凭某个在线页面显示多个解析器,不足以下结论。
合格的排查结论应写清楚范围,例如“在 2026-10-25、某 Wi-Fi、某浏览器和某客户端配置下,连续三次测试未观察到预期之外的 DNS 出口”。不要把一次测试扩大成“所有设备、所有应用都没有泄漏”的保证。
涉及跨境办公或多设备连接时,应同时遵守所在地法律与服务条款。多网络、多设备对照后仅目标服务异常时,可考虑已公开主体信息的服务。
常见问题
没有使用代理时看到运营商DNS,算DNS泄漏吗?
通常不能直接这样判断。DNS泄漏的前提是存在一条预期路径,例如客户端、VPN或企业网络要求 DNS 通过指定通道处理。普通网络默认使用运营商或路由器 DNS,本身不自动等于泄漏。
检测到多个DNS服务器是不是一定有问题?
不一定。多个结果可能来自转发、备用解析器、负载均衡、IPv4与IPv6双栈、浏览器DoH或不同应用并行查询。应比较开启前后、不同网络和多次复测结果。
DNS泄漏会让别人看到我访问的完整网页吗?
DNS查询通常暴露的是域名解析请求,不等于完整网页内容。HTTPS会继续保护浏览器与网站之间的加密传输,但域名层面的信息仍可能被查询路径上的解析服务观察到。
把DNS改成公共DNS就能修复泄漏吗?
不能保证。手动更换 DNS 只改变解析器地址,未必改变请求是否绕过客户端、是否通过 IPv6 发出,浏览器或应用也可能使用自己的 DoH或内置解析器。
为什么浏览器检测正常,但某个应用仍然连接异常?
浏览器和应用可能使用不同的 DNS 路径。应用可能不遵守系统代理、使用内置解析器、只走 IPv4或IPv6,或者被客户端规则设置为直连。应查看应用和客户端日志,并分别测试。
开启DoH后是不是就不会发生DNS泄漏?
DoH能加密某条 DNS 传输路径,但不自动接管所有应用,也不等于网页流量经过同一条隧道。还要确认浏览器、系统、客户端、IPv4和IPv6是否使用一致的预期路径。
清理DNS缓存后还需要重新测试吗?
需要。缓存可能让设备暂时不发起新的查询。修改设置后建议清理浏览器和系统缓存,关闭并重新开启客户端,再用新的随机域名至少复测三次。