什么是 DNS 传播?
DNS 传播是一个非正式说法,指记录修改后各解析器在一段时间内仍返回不同结果的阶段。DNS 并不会把新值同时推送到所有服务器。递归解析器在需要时才获取应答,并可在允许的有效期内将其保存在缓存中。
为什么应答会不一致
假设网站所有者把 A 记录从一个 IP 地址改为另一个。权威服务器已经保存了新值,但某位访问者的递归解析器刚刚缓存了旧值。在该缓存应答过期之前,这位访问者可能仍会访问到原来的服务器。TTL 规定了应答最多能缓存多久;剩余时间取决于该解析器何时收到之前的应答。
把域名委派更改到新的域名服务器是另一项独立操作。委派信息同样可能被缓存,因此更换 DNS 服务商时需要同时考虑旧区域和新区域。只要查询仍沿着旧委派进行,在新服务商的控制面板中修改记录就不会起作用。
找准排查的环节
首先找出当前的权威域名服务器。向它们查询具体记录,再将结果与几台递归解析器的结果进行比较。DNS 生效检测可以比较各地可见的应答,域名配置检查则有助于查看单条记录。请记下时间、准确的名称和类型:A、AAAA、MX 和 TXT 彼此独立。
如果权威服务器仍返回旧值,那么等待缓存过期并不能解决问题。请确认实际托管该区域的是哪家服务商,以及修改是否已保存。如果权威应答已是新值,但部分递归解析器仍返回旧值,就等待这些缓存条目过期。排查期间反复改动记录,只会让时间线更难理清。
更稳妥地规划变更
在计划迁移之前,要提前足够长的时间降低旧记录的 TTL,让原先的有效期完全过去。在切换前准备好新服务器,并尽可能让旧服务器在过渡期间继续处理请求。对于邮件,请将相关的地址记录和 TXT 记录与 MX 一并检查。
清除自己电脑上的缓存只影响路径中的一部分,无法清除其他人的解析器缓存。即使 DNS 正确,TLS 错误或应用故障也可能依然存在。TTL 和缓存机制由 RFC 1035 规定,否定应答的缓存则由 RFC 2308 规定。
如果网站和邮件服务一起迁移,请分别测试它们的 DNS 记录。网页能正常打开,并不能证明邮件投递已经恢复。