DNS 修改后传播慢怎么办——缓存、TTL、验证三步诊断
DNS 传播的正常时间范围
DNS 全球传播通常需要几小时到 24 小时。部分边缘运营商的 DNS 缓存可能更久,极端情况到 48 小时。在这个时间范围内的延迟是正常的,不用着急。
超过 48 小时 仍然不生效,才需要排查。
第一步:用工具验证全球解析
不要只在自己电脑上查——你本地的 DNS 缓存可能没刷新。用在线工具查全球 DNS:
- DNS Checker:多个节点同时查询,直观看到全球传播状态
- What's My DNS:类似 DNS Checker
- dig 命令行:
dig yourdomain.com+dig yourdomain.com @8.8.8.8(强制用 Google DNS 查询)
如果全球大部分节点都返回了你改的记录,只是你本地不对——那是你本地 DNS 缓存没刷新的问题。
第二步:本地刷新 DNS 缓存
Windows
ipconfig /flushdns
macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
浏览器
很多浏览器有自己的 DNS 缓存。尝试:
- 关闭所有浏览器窗口后重开
- 用隐身模式访问(不加载 Cookie 和缓存)
- 换个浏览器测试
第三步:检查 Dynadot DNS 设置
- 登录 Dynadot → 域名管理 → DNS Settings
- 确认 DNS 模式是否正确:
- 用 Dynadot DNS:确认 NS 记录是 Dynadot 提供的
- 用 Custom DNS:确认填的第三方 NS 服务器地址正确
- 确认记录有没有填错(IP 地址、CNAME 目标、拼写)
- 如果刚改完,保存后至少等 10 分钟再查(Dynadot DNS 内部同步也有延迟)
第四步:检查 NS 记录是否生效
如果切换到了 Custom DNS,需要先确认 NS 记录本身是否生效:
dig NS yourdomain.com
如果返回的不是你设置的第三方 NS 服务器地址,说明:
- 你可能没保存 Custom DNS 设置
- 或设置后还没传播完
第五步:降低 TTL
在 DNS 设置面板里,把记录的 TTL(Time To Live)从默认 300 秒降到 60 秒。这会让全球 DNS 服务器更快刷新缓存。
改 DNS 之前可以先降 TTL,改完传播生效后再恢复到 300 秒(低 TTL 会增加 DNS 查询压力)。
常见 DNS 生效慢的原因
| 原因 | 表现 | 解决 |
|---|---|---|
| 本地缓存 | 只有你看不到,全球查询正常 | flushdns |
| 运营商 DNS 缓存 | 全球查询大部分正常,只有某运营商用户不行 | 等或降 TTL |
| NS 没改对 | dig NS 返回旧地址 | 去 Dynadot 确认 Custom DNS 设置 |
| 第三方 DNS 还没同步 | NS 改了但记录没在第三方平台添加 | 去 Cloudflare/Google DNS 那边确认记录 |
| DNSSEC DS 记录问题 | 域名完全无法解析 | 先关 DNSSEC 测试,或检查 DS 记录是否正确 |
| 域名过期 | DNS 停了 | 先续费恢复 |
DNS 完全无法解析的紧急排查
如果域名突然完全解析不出来:
- 查域名状态:Dynadot 账户里看是不是过期、锁定、挂起
- 查 Whois:
whois yourdomain.com看 Registrar 和 Registry 状态 - 查 NS 记录:
dig NS yourdomain.com确认 NS 是什么 - 查 A 记录:
dig yourdomain.com A @ns1.dynadot.com直接问 Dynadot DNS 服务器 - 联系 Dynadot live chat:带截图和 dig 输出找客服