DNS 改完为什么半天都看不见?

DNS 改完为什么半天都看不见?

五月 26, 2026 dns dns propagation domain management nameservers hosting dns propagation checker ttl web infrastructure

DNS 传播到底在拖什么后腿

你刚把域名从老主机迁到新平台,改完 nameserver 就刷新浏览器——结果还是老页面。等 10 分钟,再等半小时,域名像钉死一样不动。是不是操作失误了?

其实这是 DNS 传播在作祟。互联网为了保持一致性,故意让改动慢慢扩散。

DNS 就是互联网的分布式电话簿

DNS 的工作很简单:把 myawesomesite.com 这种域名翻译成 203.0.113.45 这样的 IP 地址。没有它,你就得背一堆数字才能上网。

但 DNS 不是一台服务器在管全局。它是全球分布的系统,由多层服务器层层接力。这也是改动需要时间传播的根本原因。

四种服务器各管一摊

一次完整的 DNS 查询,会经过四类服务器:

  • 递归解析器:通常由 ISP、Cloudflare 或 Google 提供。你的浏览器先问它要 IP,它再去层层查找,最后把结果缓存起来。
  • 根服务器:全球只有 13 组。它们不存具体域名,只告诉你该去问哪个 TLD 服务器。
  • TLD 服务器:比如管 .com 的那一层。它知道某个域名该由哪台 nameserver 负责。
  • 权威服务器:域名真正的主人。托管商的 nameserver 就是权威服务器,里面存着 A 记录、MX 记录等所有 DNS 信息。

一次查询怎么走完全程

当缓存为空时,解析流程是这样的:

  1. 浏览器问递归解析器要 IP。
  2. 解析器去问根服务器。
  3. 根服务器说去问 .com 的 TLD 服务器。
  4. TLD 服务器说这个域名归 ns1.hostingprovider.com 管。
  5. 解析器去问权威服务器。
  6. 权威服务器返回真实 IP。
  7. 解析器把结果存进缓存,再告诉浏览器。

全程通常只花几毫秒——前提是记录都是最新的。

为什么改动要等这么久

DNS 记录里有个 TTL(Time To Live),相当于这条记录的有效期。你改了 nameserver 后,旧记录还在全球各地的解析器里缓存着,直到 TTL 到期才会被刷新。

如果你把 TTL 设成 24 小时,那现在全世界可能还有成千上万台解析器拿着旧答案在用。它们不是故意不更新,而是按你自己定的规则在办事。

不同 ISP 的缓存策略不同。有的几分钟就更新了,有的可能拖好几个小时。Cloudflare(1.1.1.1)这类公共 DNS 通常严格按 TTL 来,而有些本地 ISP 则缓存得更久。

没有一个中央按钮能瞬间通知全世界,所有改动都是靠解析器自己慢慢去抓。

怎么让改动更快生效

想让 DNS 改动少折腾,可以试试下面这些做法:

  • 提前压低 TTL:切换主机前一两天,把 TTL 调到 300 秒(5 分钟)。这样改完之后,解析器能很快拿新记录。
  • 用全球查询工具检查:别只看自己浏览器,多用工具同时查亚洲、欧洲、美洲的解析器,看改动到底传到哪了。
  • 根据场景调整 TTL:不常改的域名可以设高 TTL(3600 秒以上),省得解析器反复查询;开发或迁移期间则建议压低 TTL。
  • 避开高峰期操作:大改动尽量放在访问量低的时候做,减少用户遇到不一致的概率。
  • 留好回滚空间:切换后至少保留老主机 48 小时,万一 DNS 出问题,旧环境还能顶一阵。

分布式系统的代价

DNS 传播慢,本质上是因为它是个去中心化的系统。没有单点控制,也就没有单点故障——这正是互联网能扛住各种意外的原因。

但好处是有代价的:改动不会瞬间同步,而是慢慢扩散。这和分布式数据库、CDN、区块链的逻辑其实是一样的。

下次再等 DNS 传播的时候,别急。记住,全世界某个角落的解析器,可能正在第一次拿到你的新 IP。只是时间早晚的问题。

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA EN