域名解析多久生效(2026):24 小时是误传,超 30 分钟就是配错

「24 到 48 小时」是民间传说。现代 DNS 改记录几分钟就生效。超过 30 分钟还不通就是配错了——本文教你用几条 dig 命令证明是哪种情况。

所有教程都说「等 24 到 48 小时 DNS 传播」。截至 2026 年 6 月,对于大家最常做的操作——在一个本来就能用的域名上改一条记录——这话几乎总是错的。Cloudflare、Route 53、NS1、Google Cloud DNS 把改动推到自己的边缘节点,普遍不到 5 分钟。你之后等的根本不是「传播」,而是某个 resolver 里旧值剩下的 TTL。改完 30 分钟还不通,那就是配置错了,不是传播问题。本文教你用几条 dig 命令证明到底是哪种情况。

一句话结论——真实时间线(截至 2026 年 6 月)

你做的改动真实等待硬上限
改一条已有的 A / CNAME / TXT 记录几秒到几分钟旧记录的 TTL(常见 300–3600 秒)
Cloudflare 代理记录(橙云)通常 2 分钟内300 秒(Cloudflare 固定的代理 TTL)
先降 TTL,24 小时后再改一个你设的新 TTL新 TTL(如 300 秒)
把已有域名指向新 nameserver几小时约 24 小时(ICANN registry 规定)
全新域名首次配 nameserver30 分钟到几小时约 24 小时

最关键的杠杆是你要「替换掉」的那条记录的 TTL。你没法让缓存的 resolver 提前丢掉旧值,只能在改之前就把 TTL 设短。下面全部内容,都是教你把「缓存延迟」和「真的配坏了」分开。

为什么「传播」这个词是错的

根本没有什么全球推送把你的记录扇出到整个互联网。权威 nameserver 只是被查时返回你的记录加一个 TTL。resolver(你 ISP 的、1.1.1.1、你的笔记本)把这个回答缓存下来,反复用,直到 TTL 倒数到 0 才重新查。所以任何人卡在旧值上的最长时间,就是你改之前那条记录的 TTL。现代服务商默认 300 秒 TTL,这个天花板就是 5 分钟,不是两天。

那个著名的 24–48 小时只适用一种情况:改这个域名由哪些 nameserver 负责。这个改动在 registry 那边生效,ICANN 要求 registry 在 24 小时内处理完。实际上 .com.net 通常几小时就推完了。

怎么区分缓存延迟和真问题

大概率是缓存延迟(等就行),如果:

  • 自己能通但另一个国家的朋友不通,或者反过来。
  • whatsmydns.net 这类检查工具有些区域显示新值、有些显示旧值。
  • dig +short yoursite.com 在一个 resolver 返回新 IP,另一个返回旧 IP。

大概率是配置错了(别等了,去改),如果:

  • 改完 30 分钟以上,每一个公共 resolver 都还返回旧值。
  • dig NS yoursite.com 显示的 nameserver 根本不是你在改的那个。
  • host 后台显示「pending verification」,但 dig 查到验证记录其实已经对了。

实操步骤

  1. 记下改动的准确时间。 从这开始算,不是从你发现不对劲那一刻算。

  2. 读旧 TTL——这就是你的最坏情况。 dig 把它印在记录类型前面那个数字:

dig yoursite.com A
# ;; ANSWER SECTION:
# yoursite.com.  3600  IN  A  151.101.1.195
#                ^^^^
#                TTL(秒)——旧值可能被缓存这么久
  1. 连查两次 dig,看 TTL 在倒数——这个技巧多数人不知道。 如果第二次查数字变小了,说明你读的是缓存答案,倒数的数字正好告诉你旧值还能活多久。如果数字两次一样,说明你直接命中了权威服务器(它永远返回完整 TTL):
dig +noall +answer yoursite.com A
# yoursite.com.  287  IN  A  151.101.1.195   <- 这个缓存还剩 287 秒
sleep 5
dig +noall +answer yoursite.com A
# yoursite.com.  282  IN  A  151.101.1.195   <- 在倒数,所以确实是缓存
  1. 把你的 resolver 和公共 resolver 对比。 三个 +short 都一致,说明你这边视角已经完全更新:
dig +short yoursite.com               # 你本地 resolver
# 76.76.21.21

dig +short @1.1.1.1 yoursite.com      # Cloudflare 公共 resolver
# 76.76.21.21

dig +short @8.8.8.8 yoursite.com      # Google 公共 resolver
# 76.76.21.21
  1. 确认到底谁在为这个域名应答。 「改了没用」的头号原因,就是你在注册商改 zone,但流量其实走 Cloudflare 或 Route 53:
dig NS yoursite.com +short
# adi.ns.cloudflare.com.
# kim.ns.cloudflare.com.
# → 该在 Cloudflare 后台改 zone,不是在注册商
  1. 做多区域检查,用 whatsmydns.netdnschecker.org。每一行是一个全球 resolver。数红点,别只扫绿勾。这些工具每次都重新查 resolver,所以一个区域过了 TTL 窗口还是红的,就很可疑。

  2. host 显示「pending verification」时,先看它到底在查什么。 如果 dig 已经返回了期望值,延迟就在 host 那边,不是 DNS:

# 确认 host 要的具体记录(以 Vercel 为例)
dig +short TXT _vercel.yoursite.com
# "vc-domain-verify=yoursite.com,abc123"

# 或者确认 A 记录 / CDN 端点已经活了
curl -sI https://yoursite.com | head -3

记录对了的话,回 host 后台点「re-check / 刷新」,别干等。

  1. 新域名或刚换 nameserver?这才是真慢的情况。 验证 registry 是否已经接受你的 nameserver:
whois yoursite.com | grep -i 'name server'
# Name Server: ADI.NS.CLOUDFLARE.COM
# Name Server: KIM.NS.CLOUDFLARE.COM

如果 whois 还显示旧 nameserver,说明 registry 还没处理完——这就是那个最长 24 小时的等待,你做什么都加不了速。

  1. 只在确实只有你自己机器卡住时,才清本地缓存:
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

# Linux (systemd-resolved)
sudo resolvectl flush-caches

# Windows(管理员 PowerShell)
ipconfig /flushdns

提前规划:迁移前先降 TTL

要彻底避免体感上的「传播」等待,干净的做法是在切换之前把 TTL 降下来:

  1. 迁移前 24–48 小时,把记录 TTL 设成 300(或你服务商允许的最低值——Cloudflare 非代理记录最低 60 秒)。
  2. 等旧的高 TTL 完全老化掉,这样 resolver 现在只缓存 300 秒。
  3. 再做真正的改动。resolver 在一个短 TTL 内就接上了。
  4. 新目标稳定后,把 TTL 调回 3600 或 86400,减少查询量。

Cloudflare 代理(橙云)记录是个特例:它的 TTL 固定在 300 秒(「Auto」),你改不了,但也没关系,因为它的边缘本来就两分钟内更新。

容易踩的坑

  • nameserver 已指向 Cloudflare,还在注册商改 DNS。 Cloudflare 完全不读注册商 zone,改了等于没改。先跑 dig NS
  • 迁移前不降 TTL。 86400 的 TTL 意味着部分 resolver 缓存旧值整整一天。
  • 相信浏览器。 浏览器和 OS 缓存 DNS 非常激进。下结论前先 flush DNS 或开无痕窗口测。
  • 把 host 的每个延迟都当成 DNS。 经常是记录没问题,host 在签 SSL,或者在按自己的节奏跑域名验证轮询。
  • 期待新买的域名 60 秒就通。 首次 registry 传播才是真正的慢路径,30 分钟到几小时都算正常。

FAQ

  • 「24 到 48 小时」有真的时候吗?: 只有改域名的 nameserver 时(尤其全新域名)。在一个已经能解析的域名上改记录,是分钟级,上限是旧记录的 TTL。
  • 怎么知道我看到的是缓存值还是实时值?: 隔几秒连跑两次 dig +noall +answer yoursite.com。TTL 数字变小,就说明你读的是缓存,那个数字就是它刷新前还剩的秒数。
  • 能强制让改动更快传播吗?: 不能。你没法提前把某个值从别人的 resolver 里赶出去。唯一的杠杆是在改之前就设了低 TTL。你能清自己机器的缓存,但清不了全球互联网的。
  • 为什么一个国家显示、另一个不显示?: 不同 resolver 在不同时刻缓存了旧值,所以它们的 TTL 倒数在不同时间结束。等最长的那个旧 TTL 过期,就都一致了。
  • TTL 要一直留低吗?: 不要。低 TTL 意味着多得多的 DNS 查询。迁移稳定后调回 3600 或 86400。

相关阅读

标签: #独立开发 #域名 #DNS #排查