不同网络下 DNS 异常怎么排查
简答:同一域名只有某个网络打不开时,先不要急着换 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日。
最短排查流程:先保存现场,再逐层验证
- 确认网络本身可用。
先访问其他已知正常的网站,或直接测试网关。Windows 可运行
ipconfig /all,检查 IP、默认网关和 DNS 服务器;微软文档也建议从客户端 IP 配置和网络连通性开始排查。若没有有效地址,可尝试ipconfig /renew,但静态配置设备应先记录原值再修改。参考:Microsoft DNS 客户端排障说明。预期结果:设备有有效 IP、默认网关和可用 DNS 地址。失败回退:先恢复 DHCP 或原有静态配置,不要直接改多个 DNS。
- 查询默认 DNS,并记录完整结果。
Windows:
nslookup example.commacOS 或 Linux:
dig example.com Adig example.com AAAA把
example.com替换为实际域名。记录 Server、Address、Status、Answer、TTL 和 A/AAAA 返回值。Windows 的nslookup不使用本机 DNS 缓存,适合检查当前配置的 DNS 服务器是否能回应查询;微软对此有明确说明。 - 与指定 DNS 做同一查询。
Windows:
nslookup example.com 1.1.1.1nslookup example.com 8.8.8.8macOS 或 Linux:
dig @1.1.1.1 example.com Adig @8.8.8.8 example.com A这里的地址只是对照测试示例,不代表必须长期使用。若默认 DNS 失败而指定 DNS 成功,说明问题可能在本地缓存、路由器转发、网络侧 DNS 或拦截策略;仍需在另一网络复测,不能仅凭一次结果下结论。
- 继续查权威链路。
运行:
dig example.com NSdig example.com SOAdig +trace example.com重点观察 NS 是否一致、SOA 序列号是否合理、某个权威服务器是否超时,以及 A、AAAA、CNAME 是否存在。Google Public DNS 文档指出,旧缓存、权威服务器数据不一致、DNSSEC 验证失败以及 CDN 的地域调度,都可能造成不同结果。参考:Google Public DNS 排障文档。
- 解析成功后,验证连接而不是继续改 DNS。
运行:
curl -I https://example.comcurl -4 -I https://example.comcurl -6 -I https://example.com如果 A 查询正常、TCP 或 TLS 失败,应检查 IPv4/IPv6 路径、代理、防火墙、SNI、证书和目标服务,而不是把问题继续归为 DNS。Google 文档也提醒,ping 或 traceroute 只能辅助判断可达性,不能直接代表 DNS 解析速度。
结果判读:不同错误分别意味着什么
| 结果 | 通常表示 | 下一步 |
|---|---|---|
NXDOMAIN | DNS 服务器表示该名称不存在,可能是域名拼写、记录缺失或负缓存 | 核对域名和记录;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。