DNS 传播与 TTL
High Contrast
Dark Mode
Light Mode
Sepia
Forest
3 min read652 words

DNS 传播与 TTL

你改了 DNS 记录,但网站还是打开旧的服务器。这不是 Bug,是 DNS 设计本身的机制——叫做 TTL。


TTL 是什么

TTL(Time To Live)是 DNS 记录的缓存有效期,单位是秒。

类型: A
名称: @
值: 104.21.3.5
TTL: 3600   ← 这条记录可以被缓存 3600 秒(1 小时)

含义:世界各地的 DNS 解析器拿到这条记录后,会缓存 1 小时。1 小时内即使你改了记录,他们也不会重新查。


DNS 传播的时间线

timeline title DNS 记录修改后的传播过程 0秒 : 你在 Cloudflare 改了 A 记录 即时 : Cloudflare 的权威服务器立刻更新 5分钟 : 用相同 ISP 的人可能看到新记录(如果 TTL=300) 1小时 : 全球大部分解析器更新(如果 TTL=3600) 24-48小时 : 极少数使用旧缓存的解析器才完全更新

关键认知: - DNS 传播不是从你的服务器"推送"出去的 - 而是全球解析器各自按 TTL 时间刷新缓存 - 所以"传播时间"取决于各地解析器的 TTL 过期时间


TTL 设置策略

场景 建议 TTL 原因
平时稳定运行 3600(1小时) 减少 DNS 查询次数,缓解权威服务器压力
计划迁移(提前 24 小时) 300(5分钟) 切换后变更快速生效
迁移进行中 60(1分钟) 出问题可以快速回滚
迁移完成稳定后 恢复 3600 减少查询开销

迁移前必做: 1. 提前 24 小时把 TTL 从 3600 改为 300 2. 等 24 小时让全球缓存失效 3. 再执行 DNS 切换 4. 切换完成验证无误后,TTL 恢复 3600


传播进度怎么查

几个免费工具可以看全球各地的解析结果:

工具 地址 特点
DNS Checker dnschecker.org 多地域 A/CNAME/MX/TXT 查询
WhatsMyDNS whatsmydns.net 可视化地图,直观
MXToolbox mxtoolbox.com 专注邮件记录验证
dig(命令行) 系统内置 精确、可指定 DNS 服务器

用 dig 强制查权威服务器(不走缓存):

# 查询 example.com 的 A 记录,直接问 Google DNS
dig @8.8.8.8 example.com A
# 查询 MX 记录
dig @8.8.8.8 example.com MX
# 查询权威服务器(NS 记录)
dig example.com NS

为什么你的浏览器看到的不一样

你的 ISP 解析器缓存 vs 其他人的解析器缓存可能不同。

临时测试方法(Mac/Linux):

# 清除本地 DNS 缓存
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder  # Mac
sudo systemd-resolve --flush-caches  # Linux (systemd)
# 使用不同 DNS 服务器测试
dig @1.1.1.1 example.com A   # Cloudflare DNS
dig @8.8.8.8 example.com A   # Google DNS

常见 TTL 值参考

TTL 值 时间 适用场景
60 1 分钟 迁移进行中
300 5 分钟 迁移前预热
900 15 分钟 测试阶段
3600 1 小时 常规运营
86400 24 小时 极稳定的记录(如 NS 记录)

本章执行清单


下一章域名注册与管理——如何选域名,如何管理,如何避免常见陷阱。