首页/网络/抓包与流量分析速查/否定缓存 TTL 判读
应用层报文判读71 条

否定缓存 TTL 判读

NXDOMAIN/NODATA 结果按 SOA 记录的最小值缓存:短时间重复查询不存在域名但未见回源,说明否定缓存生效。

否定缓存是什么

名字不存在、或者该名字下没有所查类型这两类否定结果也会被缓存,缓存时长取自响应里 SOA 记录的最小值字段。抓包判据是:短时间内对同一个不存在的名字重复查询,却看不到对应的回源查询,说明否定结果在解析器或客户端一侧被命中了。理解这一点对上线流程有直接影响——新增记录之后,旧客户端可能因为否定缓存仍在有效期内而继续解析不到。排查时要同时看 SOA 的最小值字段与实际重复查询的间隔。

基本信息

协议依据RFC 2308(否定缓存)
抓包字段dns.soa.minimum
生效范围名字不存在与该名字无所查类型两类结果
观察方法重复查询间隔小于最小值却只见一次回源
业务影响新建记录在否定缓存期内不会生效

典型使用场景

  • 上线验证:新记录配置后确认客户端能否立即解析到
  • 缓存行为确认:判断是否存在否定缓存以及有效期大致多长
  • 故障复盘:解释为何配置正确但部分客户端仍报解析失败
  • 性能优化:合理的否定缓存能减少重复回源查询
  • 变更窗口规划:把否定缓存时间计入变更生效的预期时间

核对方法

核对方法
dns.soa.minimum                      # 否定缓存时长上限
# 同名重复查询多次,回源查询却只有一次
# 说明后续查询命中了否定缓存
# 记录新增后仍解析不到 → 先看是否在有效期内

否定缓存核对

现象解释处置
重复查询无回源命中否定缓存属预期行为
记录新增后仍解析不到否定缓存尚未过期等待过期或评估最短缓存设置
缓存时间偏长最小值字段设置过大评估变更生效延迟是否可以接受
否定缓存有效期内新建的记录不会生效,这是协议规定的预期行为,排查时不要把它当成解析器故障,而应该把等待时间纳入变更计划。
不同解析器对最小值字段的采用细节略有差异,评估变更生效时间要以实测为准,只按配置值精确推算并不可靠。

易错点

  • 上线新记录前没有预留否定缓存时间,会出现已配置但解析不到的情况,变更计划必须把这段时间算进去
  • 把否定缓存期内解析不到当成解析器故障,会在没有问题的链路上浪费大量排查时间
  • 只看权威侧的记录配置而不看客户端与解析器的缓存状态,容易漏掉真正的延迟来源
  • 不同解析器对该字段的使用细节存在差异,按配置值精确推算生效时间会得出偏差较大的结论

数据来源与参考

  • RFC 2308(否定缓存)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌