Bocchi

本地 DNS 污染怎么解决?从判断到修复的完整步骤

更新于 2026-11-09 · bocchi.icu

简答:本地 DNS 污染不要一开始就反复换 DNS:先用 nslookup 或 dig 对比实际 DNS 服务器和返回结果,再按“浏览器缓存→系统缓存→hosts→路由器或代理 DNS→加密 DNS”的顺序处理。若不同 DNS 返回的地址明显不同,或出现异常 IP、NXDOMAIN 与实际状态不符,才更像解析链路问题;解析已正确但网页仍打不开,就应继续检查代理、TCP、TLS 或网站本身。

定义:DNS 污染是域名查询过程中收到错误或被篡改的解析结果,表现为域名返回异常 IP、错误页面或不存在,而不等同于 DNS 泄漏、DNS 劫持或网站故障。

先试这一步:确认是不是本地 DNS 问题

本文适用于 Windows、macOS、Linux、Android 和 iPhone 的普通网络排查,重点是 DNS 解析,不讨论任何具体服务商的状态、价格或测速。本文资料核验日期为 2026-11-09。Bocchi Network 是第三方使用指南站,不是任何客户端、系统或网络服务的官方网站。

现象先查什么较合理的判断下一步
只有一个设备打不开浏览器缓存、系统缓存、hosts更像本机配置或缓存清缓存并检查 hosts
同一 Wi-Fi 下多个设备都异常路由器 DNS、上游网络更像网络侧解析问题更换路由器 DNS,并用另一网络对比
解析地址正常但网页打不开代理、端口、TCP、TLS不一定是 DNS 污染继续做连接层排查
不同 DNS 返回完全不同地址查询服务器和返回记录可能存在缓存、分流或解析链路差异清缓存后再次对比,必要时启用加密 DNS

Windows 的 nslookup 会使用配置的 DNS 服务器进行查询,不依赖本机 DNS 客户端缓存;微软文档也建议用它测试失败域名。可参考 DNS 客户端排查文档。

  1. 打开命令行,执行 nslookup www.example.com,把域名替换成实际打不开的域名。
  2. 记录输出中的 Server、Address 和最终解析地址。
  3. 换到手机热点或其他网络重复查询。
  4. 如果只有原网络异常,优先检查路由器、上游 DNS 或代理软件;如果所有网络都异常,可能是域名本身、权威解析或目标服务问题。

在 macOS 或 Linux 中可执行 dig www.example.com。重点看 SERVER、status、ANSWER SECTION 和返回地址。多个地址不一定是污染,CDN 或负载均衡本来就可能根据网络位置、时间和查询来源返回不同地址,因此不能仅凭“IP 不一样”下结论。

按层级修复:先缓存,再 DNS,再连接

1. 清理浏览器和系统缓存

DNS 失败结果也可能被缓存。RFC 9520 说明,解析失败会进入负缓存,因此更换 DNS 后仍可能在一段时间内看到旧的失败结果。先关闭相关网页和应用,再执行对应系统操作。

  • Windows:以管理员身份打开命令提示符,执行 ipconfig /flushdns。微软文档说明,该命令会清空并重置 DNS 客户端解析缓存;也可以在 PowerShell 中执行 Clear-DnsClientCache。来源:ipconfig 文档、Clear-DnsClientCache 文档。
  • macOS:先退出浏览器,再重新连接当前网络;如果问题仍在,可使用系统自带的 DNS 查询工具执行 dig www.example.com 检查实际解析。不同 macOS 版本的缓存服务和命令可能不同,未核实的旧版命令不建议直接照抄。
  • Linux:如果系统使用 systemd-resolved,可执行 sudo resolvectl flush-caches。该命令会清理该服务维护的本地 DNS 资源记录缓存,是否生效取决于系统实际使用的解析服务。参考 resolvectl 手册。
  • Android:先断开并重新连接 Wi-Fi 或移动网络,再检查“私人 DNS”设置。Android 9 及更高版本支持系统级 DNS over TLS,但具体菜单名称可能随厂商界面变化。参考 Android 网络安全资料。
  • iPhone:在“设置→无线局域网”中进入当前网络详情,检查 DNS 配置是否被手动修改;Apple 的设备说明显示,连接 Wi-Fi 后可在网络详情中配置 DNS。参考 Apple Wi-Fi 设置说明。

2. 检查 hosts 文件

hosts 文件可能在 DNS 查询之前直接把域名映射到固定地址。Windows 通常位于 C:\Windows\System32\drivers\etc\hosts;macOS 和 Linux 通常位于 /etc/hosts。先备份文件,再检查是否存在与故障域名有关的异常行。

  • 不要直接删除所有内容,保留系统原有注释和本机必要记录。
  • 对不认识的域名映射先整行注释,而不是立即永久删除。
  • 不要下载并覆盖来历不明的 hosts 文件。
  • hosts 只适合定位或临时验证,不适合长期固定 CDN 地址;目标 IP、证书或服务入口变化后,固定映射可能失效。

3. 更换 DNS,并避免多层设置互相覆盖

更换 DNS 前先确认到底是谁在解析:系统、浏览器、路由器、代理客户端和应用都可能各自发起 DNS 查询。只改系统 DNS,但浏览器或代理仍使用自己的解析器,问题可能不会改变。

  1. 记录当前 DNS 服务器,避免改完后无法回滚。
  2. 优先在一个层级修改:先改系统或路由器,不要同时修改所有设备。
  3. 断开并重新连接网络,清理本机缓存。
  4. 重新执行 nslookup 或 dig,确认实际使用的服务器已经变化。
  5. 如果仍异常,再检查浏览器的安全 DNS、代理客户端的 DNS 分流、TUN 模式和路由器自定义 DNS。

4. 何时使用 DoH 或 DoT

DoH 是通过 HTTPS 加密 DNS 查询,DoT 是通过 TLS 加密 DNS 查询。加密传输可以减少查询在传输途中被读取或篡改,但它不会自动修复错误的 hosts、错误的代理分流、目标网站故障或已经缓存的错误结果。DoH 的协议定义和安全目标可参考 DNS over HTTPS 说明。

启用加密 DNS 后,应确认是否真的由目标设备或客户端接管解析。若系统启用了私人 DNS,但代理客户端的 TUN 或 DNS 模块又接管了查询,最终路径可能与预期不同。企业办公网络、内网域名和需要门户认证的公共 Wi-Fi 还可能依赖本地 DNS,遇到无法登录或内网域名失效时,应先恢复自动 DNS 再测试。

不同问题不要混为 DNS 污染

概念典型表现怎么验证处理方向
DNS 污染或错误响应域名返回异常地址、错误页面或不符合预期的 NXDOMAIN对比不同网络和不同解析服务器清缓存、检查 hosts、调整 DNS 或使用加密 DNS
DNS 劫持解析请求被强制转到指定服务器或返回拦截页面查看实际 DNS 服务器、路由器设置和客户端日志恢复可信配置,检查路由器和代理接管
DNS 泄漏设备虽然使用了代理或隧道,但查询仍发往不期望的解析服务器检查客户端 DNS、系统 DNS 和测试页面的结果统一 DNS 接管范围,确认 TUN、路由和分流策略
网站或连接故障解析地址正常,但 TCP、TLS、HTTP 或应用层失败继续检查端口、证书、代理日志和其他网站转向连接问题排查,不要继续反复换 DNS

判断“正常 CDN 多 IP”还是“异常污染”时,不要只看 IP 数量。应同时比较域名、查询类型、TTL、查询服务器、不同网络和 HTTPS 连接结果;如果解析结果变化但都能完成正确的 TLS 校验并访问目标,可能只是正常调度。反之,若固定返回不相关地址、跳转到陌生页面,或不同网络差异稳定且可复现,才值得继续追查。

修复后的闭环验证与回滚

  1. 验证 DNS:重新执行 nslookup 或 dig,记录实际 DNS 服务器和返回地址。
  2. 验证缓存:关闭并重新打开浏览器,必要时重启网络连接;不要只凭一次查询判断已修复。
  3. 验证 HTTPS:确认浏览器访问的是预期域名,证书域名没有异常,不要因出现锁形图标就认定整条链路完全正常。
  4. 验证应用:分别测试浏览器、办公软件和需要代理的应用,因为应用可能使用独立 DNS 或代理设置。
  5. 验证 DNS 泄漏:在你信任的检测环境中查看实际查询出口,并与客户端配置、系统 DNS 和路由器设置相互核对。单次检测只能说明当时的查询路径,不能代表所有应用和所有网络。
  6. 回滚:恢复原 DNS、关闭刚启用的 DoH 或 DoT、撤销 hosts 修改,并重启相关网络服务。企业网络或内网环境优先恢复自动获取 DNS。

如果清缓存、换 DNS 和检查 hosts 后仍然失败,下一步应按顺序测试:域名解析是否成功、目标 IP 的 TCP 端口是否可达、TLS 握手是否正常、代理是否接管、应用是否使用了另一套 DNS。不要把解析成功等同于网页一定可用。

最小自查清单

  • 现象:是单个设备、整个 Wi-Fi,还是所有网络都异常?
  • 解析:nslookup 或 dig 显示的 DNS 服务器是谁?
  • 缓存:是否清理了浏览器、系统、路由器和应用可能使用的缓存?
  • 配置:hosts、系统 DNS、浏览器安全 DNS、代理 DNS 是否互相覆盖?
  • 结果:返回地址是否只是正常多 IP 调度,还是明显指向无关地址?
  • 连接:解析正确后,TCP、TLS、HTTP 和应用层是否分别验证?
  • 安全:是否使用了来历不明的 DNS 地址、DoH 地址或 hosts 文件?

如果你只想先做一件事:在故障设备上执行一次 nslookup,记下实际 DNS 服务器和返回地址,再用另一网络重复测试。这个结果比盲目反复更换 DNS 更有定位价值。

常见问题

换了 DNS 还是打不开,下一步先做什么?

先清理本机 DNS 缓存和浏览器缓存,再用 nslookup 或 dig 确认实际使用的 DNS 服务器。如果查询结果已经正确,就不要继续反复换 DNS,应检查 hosts、代理、TCP 端口、TLS 证书和应用自己的网络设置。

DNS 返回多个 IP,是不是一定被污染?

不是。CDN、负载均衡和不同网络位置都可能导致同一域名返回多个地址。应结合查询服务器、TTL、不同网络、返回地址是否属于目标服务,以及 HTTPS 是否能正确完成来判断,不能只看 IP 数量。

清空 DNS 缓存会不会删除订阅、账号或浏览器数据?

清空系统 DNS 缓存只针对域名解析记录,不会删除账号、订阅内容或浏览器历史。但如果同时清理浏览器站点数据,可能影响登录状态,因此应区分“清 DNS 缓存”和“清浏览器全部数据”。

DoH 或 DoT 能彻底解决 DNS 污染吗?

不能保证彻底解决。DoH 和 DoT 主要保护 DNS 查询传输过程,仍可能受到错误 hosts、代理客户端接管、路由策略、目标服务故障或应用独立 DNS 的影响。启用后必须复测实际查询路径。

手机上没有看到私人 DNS 或加密 DNS 选项怎么办?

菜单名称和系统版本可能不同。先查看系统网络设置、当前 Wi-Fi 的 DNS 配置和设备管理限制;不要安装来历不明的 DNS 应用或导入未知配置。若无法确认实际解析路径,先恢复自动 DNS 并通过 nslookup、系统网络详情或可信检测进行核验。

相关阅读

参考资料

  1. Microsoft Learn:DNS 客户端排查
  2. Microsoft Learn:ipconfig 命令
  3. Microsoft Learn:Clear-DnsClientCache
  4. man7:resolvectl 手册(man7.org)
  5. Android:网络安全与 DNS over TLS(source.android.com)
  6. Apple Support:管理 iPad Wi-Fi 设置
  7. MDN:DNS over HTTPS
  8. IETF RFC 9520:DNS 解析失败的负缓存