首页/网络/网络排障速查/TTL 与缓存:『改了记录不生效』排查
DNS 与解析排查46 条

TTL 与缓存:『改了记录不生效』排查

DNS 变更生效速度由 TTL 决定:先确认权威已出新值,再逐级查各缓存剩余 TTL,按『权威 → 递归 → 本地/应用』顺序收口。

网络排障速查网络更新于 2026-10-13

生效时间由什么决定

每条域名记录都带一个生效时间字段,权威服务器给出原始值,越往下游的缓存这个值只会递减。用户拿到的结果可能来自浏览器、操作系统、内网解析器或公共解析器中的任意一层,所以『改了记录不生效』通常不是没改成功,而是某一层缓存还没过期。排查的正确顺序是先从权威往下逐级核对:权威有了新值,再去看各级缓存里还剩多久。否定结果同样会被缓存,这就是为什么删掉记录后仍可能『查不到』一段时间。

基本信息

字段含义记录在缓存中的可存活秒数,权威给出原始值并逐级递减
观察位置完整查询输出的应答段,每条记录都带该字段
否定缓存域名不存在或类型缺失的结果同样会被缓存,时长由区域参数决定
本机缓存操作系统与浏览器各自持有缓存,命令行工具可能不走同样的缓存
标准流程变更前先把生效时间调小,等旧值过期后再切换,事后调回较大值

逐级核对顺序

层级查询对象判断要点
权威该域权威服务器是否已有新值,以及原始生效时间是多少
内网解析器内网递归服务器是否仍在缓存旧值,剩余时间还有多久
公共解析器公共递归服务器对外部用户而言何时生效
操作系统本机解析配置与缓存是否命中本机缓存导致结果陈旧
浏览器与应用自带缓存与预取是否绕过系统解析直接使用旧结果

典型使用场景

  • 域名切换:迁移前后确认各级缓存的状态与剩余时间
  • 删除记录后仍可解析:确认是否处于否定缓存有效期内
  • 跨地域生效差异:不同地区用户看到新旧值不一,核对各自解析路径
  • 回滚决策:确认回滚后的记录何时能被全部用户看到
  • 变更窗口规划:通过生效时间控制切换的平滑程度

逐级核对

逐级核对
dig +noall +answer example.com @ns1.example.com   # 权威:新值与原始生效时间
dig +noall +answer example.com @10.0.0.53          # 内网递归:可能仍是旧值
dig +noall +answer example.com @8.8.8.8            # 公共递归
dig +noall +answer example.com                     # 本机视角
ipconfig /displaydns | head -30                    # Windows:查看本机缓存与剩余时间
ipconfig /flushdns                                 # Windows:清空本机缓存后重测

现象与结论

现象可能原因处理方式
权威已是新值,用户仍看到旧值中间缓存未过期等待过期或联系缓存方清理
刚删除记录就查不到否定缓存仍在有效期属正常现象,等待其自然过期
同一区域不同用户结果不同各自缓存与解析路径不同按用户实际路径逐级核对
本机查得到、程序查不到程序使用了自己的缓存或代理检查程序侧解析配置与代理设置
改了生效时间却不见变化变更只改了记录值没改字段确认变更内容与查询对象是否一致
标准做法是提前一个旧的生效时间窗口把字段调小,等旧值自然过期后再切走,切换完成后再调回较大值以降低解析压力。
同一条记录在不同解析器的剩余时间各不相同,判断『还要等多久』必须按具体解析器分别看,不能只看一处。
长期保留很短的生效时间会显著增加解析请求量,切换完成后记得恢复,否则高峰期容易触发上游限速。

易错点

  • 改完记录立刻用同一台机器验证,看到旧值就以为没改成功
  • 忽略否定缓存,删除记录后仍查到『不存在』时白排查一轮
  • 只检查一处缓存,忽略浏览器、操作系统与内网解析器多级缓存并存的事实
  • 切换完成后忘记把生效时间调回,长期承受额外的解析请求压力
  • 在变更窗口内频繁修改记录,导致各级缓存状态混乱、现象自相矛盾
  • 只凭 ping 或浏览器判断是否生效,未做逐级查询留证

数据来源与参考

  • RFC 1035(TTL 字段)
  • RFC 2308(否定缓存 TTL)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌