Birds – Flying beyond the wall

不同网络下 DNS 异常怎么排查

更新于 2026-10-30 · birds.mom

简答:同一域名只有某个网络打不开时,先不要急着换 DNS。分别记录默认 DNS、指定 DNS 和权威 DNS 的返回结果,再继续验证 TCP、TLS 与 HTTP;NXDOMAIN、SERVFAIL、超时和返回不同 IP 的处理方法并不相同。

定义:DNS 异常是域名解析阶段出现错误、超时、错误答案或结果不一致,不能把所有网页打不开都归因于 DNS。

先做跨网络对照:最快判断故障在哪一层

建议先选一个明确有问题的域名,保持查询时间接近,分别在家庭宽带、手机热点、公司网络或其他可用网络中测试。不要一开始同时修改路由器、设备 DNS 和客户端配置,否则现场会被改变,后续很难判断是哪一层恢复了。

对照项需要记录如何判断
设备范围同一设备、另一台设备只有一台设备异常,优先检查本机缓存、网卡、代理或 DoH/DoT 设置
网络范围家庭宽带、手机热点、公司或公共 Wi-Fi只有一个网络异常,优先检查路由器转发、运营商 DNS、IPv6 或防火墙
域名范围一个域名或多个域名只有一个域名异常,继续查记录、权威服务器、DNSSEC、CDN 和缓存
阶段范围解析、TCP、TLS、HTTP解析成功但访问失败,问题通常已经超出 DNS,需要继续查连接或服务端

记录模板可直接照抄:时间|网络类型|设备|DNS服务器|查询类型|状态码|返回IP|TTL|浏览器错误|curl结果。本页资料核验时间为 2026年10月30日。

最短排查流程:先保存现场,再逐层验证

  1. 确认网络本身可用。

    先访问其他已知正常的网站,或直接测试网关。Windows 可运行 ipconfig /all,检查 IP、默认网关和 DNS 服务器;微软文档也建议从客户端 IP 配置和网络连通性开始排查。若没有有效地址,可尝试 ipconfig /renew,但静态配置设备应先记录原值再修改。参考:Microsoft DNS 客户端排障说明。

    预期结果:设备有有效 IP、默认网关和可用 DNS 地址。失败回退:先恢复 DHCP 或原有静态配置,不要直接改多个 DNS。

  2. 查询默认 DNS,并记录完整结果。

    Windows:

    nslookup example.com

    macOS 或 Linux:

    dig example.com A
    dig example.com AAAA

    把 example.com 替换为实际域名。记录 Server、Address、Status、Answer、TTL 和 A/AAAA 返回值。Windows 的 nslookup 不使用本机 DNS 缓存,适合检查当前配置的 DNS 服务器是否能回应查询;微软对此有明确说明。

  3. 与指定 DNS 做同一查询。

    Windows:

    nslookup example.com 1.1.1.1
    nslookup example.com 8.8.8.8

    macOS 或 Linux:

    dig @1.1.1.1 example.com A
    dig @8.8.8.8 example.com A

    这里的地址只是对照测试示例,不代表必须长期使用。若默认 DNS 失败而指定 DNS 成功,说明问题可能在本地缓存、路由器转发、网络侧 DNS 或拦截策略;仍需在另一网络复测,不能仅凭一次结果下结论。

  4. 继续查权威链路。

    运行:

    dig example.com NS
    dig example.com SOA
    dig +trace example.com

    重点观察 NS 是否一致、SOA 序列号是否合理、某个权威服务器是否超时,以及 A、AAAA、CNAME 是否存在。Google Public DNS 文档指出,旧缓存、权威服务器数据不一致、DNSSEC 验证失败以及 CDN 的地域调度,都可能造成不同结果。参考:Google Public DNS 排障文档。

  5. 解析成功后,验证连接而不是继续改 DNS。

    运行:

    curl -I https://example.com
    curl -4 -I https://example.com
    curl -6 -I https://example.com

    如果 A 查询正常、TCP 或 TLS 失败,应检查 IPv4/IPv6 路径、代理、防火墙、SNI、证书和目标服务,而不是把问题继续归为 DNS。Google 文档也提醒,ping 或 traceroute 只能辅助判断可达性,不能直接代表 DNS 解析速度。

结果判读:不同错误分别意味着什么

结果通常表示下一步
NXDOMAINDNS 服务器表示该名称不存在,可能是域名拼写、记录缺失或负缓存核对域名和记录;Windows 可先运行 ipconfig /flushdns 后复测
SERVFAIL解析器无法完成查询,常见方向包括权威服务器、委派或 DNSSEC查询 NS、SOA,并用多个网络对照;不要直接认定为污染
REFUSED服务器拒绝该查询,可能与递归权限、访问控制或服务器策略有关换网络和 DNS 对照,确认是否只对某类查询拒绝
超时或无响应DNS 服务器不可达、UDP/TCP 53 被阻断,或响应链路异常先检查网关和 DNS 服务器可达性,再分别测试 UDP/TCP;同时排查 DoH/DoT 配置
不同网络返回不同 IP可能是 CDN、地域调度、ECS、IPv4/IPv6 或缓存差异,也可能是异常答案比较 TTL、ASN/地区、A 与 AAAA,并查询权威服务器后再判断
解析正常但网页打不开故障可能发生在 TCP、TLS、HTTP、代理、防火墙或源站使用 curl -I、浏览器开发者工具和 IPv4/IPv6 对照继续定位

Cloudflare 的 DNS 排障资料将常见原因归纳为域名或子域名错误、缺少记录、权威服务器配置、DNSSEC 和缓存等问题;因此“换 DNS 后能打开”只能说明对照结果发生变化,不能单独证明存在 DNS 污染。参考:Cloudflare General DNS issues。

按症状分流:什么时候清缓存,什么时候不要改 DNS

  • 只有一台 Windows 设备异常:先保存 ipconfig /all,再执行 ipconfig /displaydns 查看缓存;确认是负缓存或旧答案后,再执行 ipconfig /flushdns。微软明确建议不要通过禁用 DNS 客户端缓存来解决问题。
  • 同一 Wi-Fi 下多台设备都异常:检查路由器的上游 DNS、DHCP 下发值、IPv6 DNS 和是否启用了自定义 DoH/DoT;恢复自动获取前,先记录当前配置。
  • 手机热点正常、家庭宽带异常:重点检查家庭网络的 DNS 转发、IPv6、UDP/TCP 53 和路由器安全策略。若只换设备 DNS 有效,仍应保留默认 DNS 与指定 DNS 的对照结果。
  • 多个网络都返回同一错误:优先检查域名记录、NS 委派、SOA、DNSSEC、TTL 和服务端配置;不要把服务器侧故障改写成本机 DNS 问题。
  • 返回 IP 不同但都能连接:先考虑 CDN 或地域调度。只有当某个网络返回的地址无法连接、证书不匹配或明显偏离权威结果时,才继续调查异常答案。

验证标准与回退路径

一次排查至少应得到四类可复现证据:默认 DNS 与指定 DNS 的查询结果、A/AAAA/CNAME/NS/SOA 中实际查询过的记录、至少两个网络的对照结果,以及解析后的 TCP/TLS/HTTP 测试。修复后要在原网络重新执行同一组命令,并确认错误是否消失,而不是只看浏览器偶尔能否打开。

如果更换 DNS 后问题没有改善,应恢复原 DNS 配置并继续查路由、IPv6、代理、防火墙或服务端;如果问题改善,也应记录改善前后的 DNS 地址、时间和返回结果。不要在没有备份的情况下同时改路由器、操作系统和客户端配置。

常见问题

为什么不同网络解析到不同 IP?

这可能是正常的 CDN、地域调度、ECS、IPv4/IPv6 或缓存差异。先比较 TTL、查询类型、网络出口和权威 NS;仅凭 IP 不同不能判断 DNS 异常。

换成公共 DNS 后能打开,是否就证明原 DNS 有问题?

不能。它只能说明两个解析路径的结果不同,仍需比较返回状态、IP、TTL 和复现次数,并确认后续 TCP、TLS、HTTP 是否也恢复。

NXDOMAIN 和 SERVFAIL 应该怎么区分?

NXDOMAIN 是解析器返回“名称不存在”的结果,可能与拼写、记录缺失或负缓存有关;SERVFAIL 表示解析过程未能完成,常要继续检查权威服务器、委派或 DNSSEC。

解析正常但网页仍打不开怎么办?

停止反复清 DNS,使用 curl -I 以及 curl -4、curl -6 对照 TCP、TLS 和 HTTP;再检查代理、防火墙、证书、SNI 与源站。

什么时候应该清理 DNS 缓存?

当同一设备持续保留旧答案、负缓存或明显与其他查询源不同,且已记录现场后,可以清缓存复测。清缓存不是万能修复,也不能代替检查权威记录和网络链路。

常见问题

不同网络返回不同 IP,是否就是 DNS 异常?

不一定。CDN、地域调度、ECS、IPv4/IPv6 和缓存都可能导致结果不同,应继续比较 TTL、权威 NS、连接和证书。

换 DNS 后恢复访问,能证明原 DNS 被污染吗?

不能。换 DNS 只能证明两条解析路径的结果不同,还需要多网络复测并核对权威记录。

DNS 查询正常但网页打不开怎么办?

用 curl -I、curl -4 和 curl -6 分别检查 HTTP、IPv4 与 IPv6,再排查 TLS、代理、防火墙和源站。

Windows DNS 异常先执行什么命令?

先运行 ipconfig /all 保存 IP、网关和 DNS,再用 nslookup 查询;确认是缓存问题后再运行 ipconfig /flushdns。

相关阅读

参考资料

  1. Cloudflare:General DNS issues
  2. Google for Developers:Public DNS Troubleshooting
  3. Microsoft Learn:对 DNS 客户端进行故障排除
  4. Microsoft Learn:Guidance for troubleshooting DNS