DNS · 8 分钟

域名解析错误与 DNS 缓存:先查询,再刷新

网站换了服务器却仍打开旧地址、部分设备正常部分失败时,怎样比较权威记录、公共解析器和本地缓存。

域名经过递归解析器转换为 IP 地址的解析链示意

先看结论

先用 DNS 查询记录当前公共解析结果和 TTL,再决定是否刷新本地缓存。没有证据时反复更换 DNS 或继续改记录,只会让传播过程更难判断。

先确认是不是这些现象

  • 域名刚修改记录但仍访问旧服务器
  • 手机能打开、电脑提示找不到地址
  • 不同网络解析到不同 IP
  • 刷新 DNS 后短暂恢复又失败

按顺序排查

  1. 01

    查询公开记录

    输入完整域名,分别查询 A、AAAA 和 CNAME。记录返回值、TTL 和状态码。

    继续前检查:确认查询的是正确主机名,不把根域与 www 混为一谈。

  2. 02

    检查记录链

    若存在 CNAME,继续查询目标名称;若 A 与 AAAA 指向不同平台,分别验证两类地址。

    继续前检查:解析链没有循环或指向已经下线的主机。

  3. 03

    比较本机结果

    在终端使用 nslookup 或 Resolve-DnsName 查询同一域名,比较本机 DNS 与公共解析器。

    继续前检查:记录本机使用的 DNS 服务器地址。

  4. 04

    刷新系统缓存

    Windows 可运行 ipconfig /flushdns;macOS 的命令因版本不同而异。刷新后关闭并重新打开浏览器。

    继续前检查:刷新后重新发起查询,而不是只刷新旧错误页。

  5. 05

    检查浏览器安全 DNS

    浏览器可能启用独立 DoH。若系统结果已经更新、浏览器仍旧,检查其安全 DNS 提供商和缓存。

    继续前检查:浏览器与系统是否在使用不同解析器。

  6. 06

    等待真实 TTL

    如果旧记录的 TTL 尚未到期,缓存继续返回旧值是正常行为。不要通过伪造 lastmod 或频繁提交搜索引擎解决 DNS 缓存。

    继续前检查:等待时间以修改前的旧 TTL 为准。

DNS 传播不是所有服务器同时刷新

“传播”通常意味着各递归解析器的旧缓存陆续过期,而不是一条记录在全球逐台复制。修改后的新 TTL 不能缩短已经缓存的旧记录寿命,因此迁移前应提前降低 TTL。

哪些错误不应归咎于 DNS

能解析到正确 IP,但 TLS 证书错误、HTTP 500 或应用自身登录失败,都已经越过 DNS 阶段。继续更换 DNS 只会引入更多变量。

  • NXDOMAIN:名称不存在或记录未建立。
  • SERVFAIL:解析过程失败,可能涉及 DNSSEC。
  • 解析正确但连接超时:检查路由、防火墙和服务器。
公开 TXT 记录可能包含验证信息,但不应放置密码、私钥或长期敏感令牌。

常见问题

把 DNS 改成 1.1.1.1 或 8.8.8.8 一定能解决吗?

不能保证。它只改变递归解析器,不能修复权威记录错误、服务器离线或应用代理问题。

为什么 www 正常而根域不正常?

它们是两个独立名称,可以使用不同的 A、AAAA 或 CNAME 记录;应分别查询并统一重定向与 canonical。

编辑说明

本页由 按最小变量法维护。操作系统版本、设备厂商和管理策略会改变菜单名称;执行高影响命令前,请先保存工作并记录原始设置。