改完十分钟没变,我以为出错了

改完一条 A 记录,本机查了一次,还是旧值。十分钟后再查,还是旧的。我开始怀疑没保存成功。

其实是我弄错了顺序:旧记录已经按原来的 TTL 缓存出去了,改得再快,也要等那一轮缓存过期。后来客服提醒我先看 TTL,我才反应过来。

生效是分层的

第一层是权威服务器。你在解析商后台改完,它通常立即生效。

第二层是各地递归服务器。它们之前缓存了旧记录,要等 TTL 倒计时结束才会重新来问。

第三层是客户端,包括浏览器、系统、路由器,可能还有自己的缓存。三层的倒计时不是同时开始的。

你本地看到旧值,只说明某一层还没刷新。

DNS 查询:多地区多运营商解析结果对比

DNS 查询:多地区多运营商解析结果对比

怎么逐层确认

先直接查权威 NS,看记录改没改。查的时候要指定权威地址,不然还是走递归。这一步确认「改成功了没有」。

再用宝塔拨测的 DNS 测速从多个地区多运营商节点查,看各地返回的是新值还是旧值。这一步确认「传播到哪了」。

最后才看本机。本地缓存最容易骗人,别拿它当结论。

改完再调低 TTL,没用

TTL 是「这次回答能被缓存多久」。已经发出去的旧记录,按旧 TTL 计算。

想让变更快点生效,得在改之前就把 TTL 调短,等一轮缓存更新完,再动记录。

顺序反了,就要多等一整个旧 TTL 周期,急也没用。TTL 调短本身,也要等旧值过期才生效。

如果是改 NS,还要算上注册商和顶级域的更新时间,可能比 TTL 更久。

负缓存会额外拖时间

还有一种情况:记录不存在时,递归也会缓存这个「没有」的结果,时长由 SOA 里的最小 TTL 决定。

所以新增一个子域名,可能比修改已有记录生效更慢。表现是查询返回不存在,但域名明明刚配好,很多人会因此误以为解析商坏了。

复测和该警惕的

隔一段时间连查几次,看新值的覆盖比例是不是在上升,而不是盯着某一次结果。记录里写清查询时间、节点和返回的 IP,判断标准是趋势,不是某一次查询。

生效期间别反复改记录,那会让不同节点看到不同版本,更难判断。想让生效快一点,靠的是提前规划 TTL,不是事后着急。多等一轮,比多改十次有用。

该警惕的是:过了 TTL 周期,仍有固定地区返回旧值;权威上的值正确,但各地长期不一致;或者 NS 指向了你没配置的服务商。

这些不是「还没生效」,而是配置或者委派那边出了问题,要回头去查,不要继续等。