DNS 修改解析后多久生效?
没有固定答案,取决于一个参数:TTL。
TTL 是什么
TTL 是这条解析记录允许被缓存多久,单位是秒。
你改了权威服务器上的记录,但各地的递归服务器手里还存着旧答案。它们不会主动来问,而是要等缓存到期,才会重新回源。这段等待时间,就是 TTL。
所以「生效」不是一瞬间的事,而是一个逐步扩散的过程。
实际要等多久
TTL 设的 600 秒,那最多十分钟,全国基本都更新了。
TTL 设的 3600 秒,就要等一小时。
TTL 设的 86400 秒(一天),那最坏情况要等一天。
行业里说的「最长 48 小时」,是因为部分运营商的递归服务器不严格遵守 TTL,会人为延长缓存时间。这种情况没法控制,只能等。
为什么你本地已经生效了
因为你可能刚好碰上了缓存过期,或者你用的 DNS 没有缓存这条记录。
但这只代表你这一条线路。别的地区、别的运营商,缓存时间点不一样,所以会出现「我这里好了,客户那边还打不开」的情况。
用多节点 DNS 查询一看,就能知道全国铺开到什么程度了。
怎么让切换更快
标准做法是提前调低 TTL。
计划明天换 IP,今天先把 TTL 从 3600 改成 300,等旧缓存都过期(大约一小时),再改记录值。这样切换窗口能压缩到五分钟级别。
换完之后,再把 TTL 调回正常值,减少查询压力。
几个注意点
调低 TTL 要提前做,改完记录再调低是没用的,因为旧缓存已经按老 TTL 存下了。
浏览器和操作系统也有自己的 DNS 缓存,验证时可以先清一下,或者换个网络试。
如果超过 48 小时还没生效,那就不是缓存问题了,去查 NS 有没有指对、记录有没有保存成功。