Serve Stale

Serve Stale(RFC 8767)允许递归解析器在权威服务器暂时不可用时,继续提供已经超过原始 TTL 的过期数据,以提升可用性。

#type / concept #status / growing #tech / network #protocol / dns

[!info] related notes

Serve Stale

一句话定义

Serve Stale(RFC 8767) 允许递归解析器在权威服务器暂时不可用时,继续回答那些已经超过原始 TTL 的过期数据,用「可能稍旧但还能通」换取可用性。

核心机制 / 工作原理

正常情况下,TTL 到期后解析器应重查。但如果:

  • 权威服务器宕机/网络分区
  • 重查失败(超时、SERVFAIL)

递归解析器可以选择返回最后一次成功缓存的、已过期的数据,而不是报错。RFC 8767 明确了这种「超过 TTL 仍保留并使用」的做法,并建议一个最大「serve stale」窗口(如 30 天上限,按实现而定)。

最小例子 / 最小场景

anyrouter.top 的权威因故障不可达,但你的递归解析器一周前缓存了 155.102.x.x。启用 Serve Stale 时,你仍能被解析到该 IP(假设 IP 本身还有效),网站不至于完全打不开。

边界与易混淆点

  • Serve Stale 是可用性兜底,不是正确性保证:返回的可能是过期 IP,若源站也变了就会连错。
  • 它进一步说明:「TTL 到期」不等于「世界上所有缓存立刻不再使用该答案」
  • 与负/失败缓存的关系:Serve Stale 针对「原本成功、现已过期」的数据;负缓存针对「不存在/失败」(见 dns-negative-failure-caching)。
  • 排障含义:你看到旧 IP,可能是因为 Serve Stale 在兜底,而不一定是因为本地没清缓存——要结合时间戳与权威当前数据判断(见 dns-systematic-diagnosis)。
创建于 2026/7/31 更新于 2026/7/31