首页/网络/网络排障速查/负缓存:NXDOMAIN 也会被缓存
DNS 与解析排查46 条

负缓存:NXDOMAIN 也会被缓存

域名不存在的结果同样按 SOA 的 minimum(或 SOA TTL)缓存一段时间:新上线的域名/记录在部分客户端可能持续『不存在』,等缓存过期即可。

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

不存在的结果也会被缓存

解析器不仅缓存查到的地址,也缓存「这个域名不存在」以及「这个域名没有该类型记录」的结论,缓存时长取自权威区域里起始授权记录的相关字段,常见取值范围是几百到几千秒。这样的机制保护了权威服务器不被反复追问,副作用是新上线或刚修复的记录在一段时间内仍会被部分客户端判为不存在。理解这一点,就能把「一会儿好一会儿不好」的现象归到缓存放行时间上,而不是急着改配置。

基本信息

缓存对象域名不存在的响应与某类型记录缺失的响应
缓存时长取自权威段中起始授权记录的相关字段
典型范围数百秒到若干千秒不等,取决于区域配置
清理方式本地解析器清缓存;终端侧刷新解析缓存
适用场景新域名上线、记录刚修复、环境迁移

典型使用场景

  • 新域名上线后部分用户访问失败:确认是否仍被负缓存
  • 记录修复后仍然不通:判断缓存是否未过期
  • 判断修复后多久生效:读负缓存时长字段估算等待时间
  • 排查「一会儿好一会儿不好」:区分是缓存差异还是服务不稳定
  • 调整区域参数:评估负缓存时长对故障恢复时间的影响

观察负缓存

观察负缓存
dig app.example.com | grep -E 'status|SOA'      # 不存在时权威段带起始授权记录
dig app.example.com SOA | tail -5                # 看负缓存时长字段
sudo resolvectl flush-caches                     # 本地解析器清缓存
ipconfig /flushdns                               # Windows 终端刷缓存
# 换独立解析器交叉验证记录是否已发布:
dig +short app.example.com @8.8.8.8

现象与归因

现象可能原因处置
刚上线的域名部分用户失败此前的不存在结果被缓存等待缓存过期或引导刷新
记录修复后仍无解析负缓存未过期读缓存时长估算生效时间
同一网络内结果不一致各解析器缓存状态不同逐一查询并对比剩余时长
清理缓存后立刻恢复确认为缓存问题评估并调整缓存参数
始终解析不到且权威也没有记录确实未发布核对区域配置与发布流程
新域名解析「一会儿好一会儿不好」多为:先返回不存在被缓存,记录上线后各缓存过期时间不一;等待或清缓存即可,不宜乱改解析配置。

易错点

  • 把负缓存当成域名被劫持或被拦截,白白紧张一场
  • 修改缓存时长参数后未等旧缓存过期,就认为修改无效
  • 只在一台机器上验证:不同解析器的缓存状态不同,结论不具代表性
  • 上线前先用域名做探测导致不存在结果被广泛缓存,反而拉长生效时间

数据来源与参考

  • RFC 2308:Negative Caching of DNS Queries
  • RFC 1912:DNS 运维常见问题

相关工具

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