摘要

  • RFC 8767 没有废除 TTL;它只允许解析器在一次善意刷新无法取得可用权威数据之后,把过期答案当作有期限的连续性后备。
  • 原始 TTL、最长过期期限、客户端等待预算、返回 TTL、DNSSEC 签名有效期、EDE 提示与刷新重试是不同的时钟,也证明不同的事实。
  • David C. Lawrence 是 RFC 8767 三位作者之一。这项集体标准贡献不会把区域权威、解析器运行权或部署决定转给个人,也不会把缓存副本变成权威来源。

客户端发出查询时,解析器面对的并不是“有答案”与“没有答案”这样简单的二选一。内存里还有昨天取得的 RRset,但它的普通使用期限刚刚结束;权威路径没有在客户端能够等待的时间内回应;应用如果收到 SERVFAIL,当前操作就会停止。

旧答案可能仍然正确,也可能已经被区域所有者撤销。解析器在当下无法从字节本身判断。它能做的是把例外的起点、理由、期限和结束条件全部留下。

2020 年 3 月发布的 RFC 8767 由 David C. Lawrence、Warren Kumari 与 Puneet Sood 共同撰写。它给“serve stale”划出一个可核验的状态:过期副本可以在来源暂时失联时维持功能,但不能因成功回答一次查询,就取得来源的地位。

留在内存中,不等于仍可对外断言

RFC 1035 用 TTL 说明资源记录可以在缓存中使用多久;RFC 2181 进一步强调,解析器不能在期限之后仍把记录当作当前数据。TTL 是发布者交给缓存的一项时间边界,不只是清理内存的建议。

实现可以在时钟归零后保留字节。保留有助于排查、比较和故障时的有限回退。但“存在于缓存”与“允许返回给客户端”必须是两个状态。RFC 8767 约束的是第二个状态。

一个明确例外是原始 TTL 为零的记录。发布者从一开始就要求它不得被缓存复用,解析器不能事后为它发明“过期可用期”。否则,连续性机制会直接改写来源的明确意图。

因此,第一张收据在故障之前就要形成:名称、类型、类别、回答来源、内容指纹、收到的 TTL、写入时间、普通到期时间与 DNSSEC 状态。只说“用了最后一个好答案”没有证明力,因为它没有说明是哪一个答案、何时取得、为什么曾经被认为可用。

权威来源必须先得到一次真实机会

RFC 8767 要求解析器做出近期、善意的刷新尝试。它先查询权威路径,在配置的客户端等待预算内寻找可用回应;失败或超时后,才可以查看过期副本。如果刚刚已有一次请求证明上游故障,随后到来的查询可以复用这段失败记忆,避免让每个客户端重复等待。

顺序保护了区域所有者变更数据的能力。一次紧急地址迁移、服务下线或与证书有关的 DNS 修改,在权威服务恢复后应尽快生效。如果解析器因为旧副本更快就永远先返回旧值,连续性就会变成未经授权的替代发布。

“善意”需要被观测,而不是写在政策里。收据应列出尝试的权威服务器、传输方式、开始与结束时间、回应或故障类别、DNSSEC 结果,以及是否引用了近期失败状态。网络超时、SERVFAIL、权威 NXDOMAIN 与签名验证失败不能混成一个“DNS 错误”。

返回旧答案也不是恢复。客户端暂时得到结果,并不代表来源已经修好。RFC 8767 要求解析器继续刷新;只有取得、验证并安装新的权威答案,例外状态才真正结束。

同一条答案上至少挂着六个时钟

第一个时钟是权威来源给出的原始 TTL,它界定普通新鲜期。RFC 8767 还建议在部分过期计算中把收到的 TTL 封顶在七天左右,避免一个异常大的值制造无限回退空间。

第二个时钟是解析器自己的最长过期使用期。标准说它应可配置,并建议取值处在一至三天的量级。超过这条边界,即使字节仍在磁盘,也不再具备 serve-stale 资格。

第三个时钟是客户端等待预算,通常只有若干秒。它决定刷新尝试何时让位于回退。预算越短,应用越快得到旧答案,但一个只是稍慢的权威回应也越容易输掉竞争。

第四个时钟是返回给下游的 TTL。RFC 8767 要求它大于零,并建议三十秒。这个值限制下一级缓存复用本次例外回答的时间,绝不重置记录的原始年龄。

第五个时钟属于 DNSSEC 签名。RRSIG 有自己的生效与失效时间。RRset 的 TTL 可以先过期而签名仍有效,签名也可能在本地最长过期期限之前先失效。缓存设置无权延长密码学时间。

第六个时钟控制后续刷新与退避。过快重试可能给已经受损的权威系统增加负载;过慢则让旧副本占据实际结果更久。合格的记录必须把这六个时间分别保存,不能压缩成一个“过期 TTL”。

DNSSEC 可以验证旧来源,不能证明当前意图

RFC 4035 要求验证型解析器检查签名链和签名时间区间。过期 RRset 如果签名仍在有效期内,可能继续得到 Secure 结论。这说明它曾由相应密钥签署,不说明区域所有者今天仍希望发布相同内容。

RFC 8767 警告,数据越旧,验证失败的可能性越高。它还描述一种不需要伪造签名的风险:攻击者只要能让权威服务持续不可达,就可能延长旧值的实际寿命。利用的是“曾被认证”与“仍是当前意图”之间的缝隙。

风险取决于消费动作是否可逆。访问一个短时不可用的网站,与根据 DNS 挑战签发证书,不应使用同一套容忍度。RFC 特别提醒证书颁发机构,不应依赖会返回过期数据的解析器完成这类验证。

否定答案同样有年龄。过期的正向答案可能把流量继续送往已撤销的服务;过期 NXDOMAIN 可能让刚创建的名称继续“消失”。RFC 8914 为 Stale NXDOMAIN Answer 单独编号,正因为“不存在”也是需要当前证据的断言。

EDE 是目击者,不是修复工具

Lawrence 也参与撰写了 RFC 8914。该文档定义 Extended DNS Error:代码 3 表示 Stale Answer,代码 19 表示 Stale NXDOMAIN Answer。支持它的客户端或运维工具因此能够分辨普通当前回答与例外回答。

EDE 本身不会改写 DNS RCODE,不会认证 RRset,不会证明上游失败原因,也不会延长签名。应用甚至可能完全看不到它,只消费地址或否定结果。

它的价值在于留下证词。解析器可以按原因与年龄统计过期回答,敏感应用可以拒绝特定例外。但解析器仍要保留自己的决定记录,不能把证明责任交给是否理解 EDE 的客户端。

孤立的代码 3 计数也不充分。它必须关联缓存对象、刷新尝试、过期资格、返回 TTL、DNSSEC 状态与后续恢复,才能证明一次回退合规。

运行中的实现把本地选择显露出来

RFC 8767 记载了 BIND 9.7.0 的早期补丁、Akamai 自 2011 年起报告的生产使用,以及 BIND 9.12 以后版本、Unbound 和 Knot Resolver 的后续支持。这段历史说明机制来自集体运行经验,而不是单纯的可用性想象。

它没有证明所有实现相同。现行 Unbound 文档称,从 1.23.0 起默认采用 RFC 8767 行为;文档描述在客户端等待 1.8 秒后或原本会返回 SERVFAIL 时使用过期值,默认最长保留一天,返回 TTL 三十秒,并继续解析。

这些是一个产品当前版本的选择,不是 IETF 的统一命令,也不代表所有 Unbound 部署。运营方可以修改参数,升级也可能改变默认值。

因此需要以运行代码为准:记录软件、版本、实际配置、每次查询的状态变化与线上答案。测试应包括权威健康、超时、SERVFAIL、DNSSEC 失败、在边界前恢复、在边界后恢复、权威值发生变化与 TTL 为零。文档说明可能性,实际跟踪证明发生的事实。

Lawrence 的名字标记贡献,不代表控制

IETF Datatracker 以 “tale” 记录 David C. Lawrence,并列出 RFC 3425、7871、8767 与 8914。现行资料还把他列为 Adaptive DNS Discovery 工作组共同主席、IETF 派驻 ICANN 董事会的联络人,以及多个技术评审组成员。

ICANN 现行董事会页面称,David Lawrence 自 2024 年 11 月 14 日起担任 IETF 无表决权联络人。简介记载了 RPI 与 Usenet、UUNET、ISC 的 BIND 重写工作、Nominum、在 Akamai 的十三年、2010 年入选 DNSSEC 根密钥 Trusted Community Representative,以及 DNS-OARC 与 CVFiber 董事经历。

这些事实说明他长期参与 DNS 实现、标准与机构联络,但不能推出个人独占发明、控制解析器部署或决定 ICANN 行动。RFC 8767 有三位作者,机制也吸收了更广泛的实现与共识。

人物边界与缓存边界相同:参与一项集体功能,不会取得所有运行权;保存一份有用副本,也不会取得来源权威。

一张合格收据必须以权威恢复结尾

记录先描述缓存对象:名称、类型、类别、来源、原始 TTL、写入与到期时间、内容指纹、DNSSEC 结论。随后描述最近刷新:目标、传输、起止时间、结果、失败类别和是否使用近期故障记忆。

决定部分保存最长过期期限、计算出的资格截止时间、回答时年龄、客户端预算、返回 TTL、EDE、例外规则与下一次刷新。对高风险消费者的禁止政策也应被记录。

最后一段证明恢复:第一条可用的新鲜权威回应、验证结果、新内容指纹、安装时间、旧状态退出以及应用结果。如果权威值已经改变,历史不能覆盖掉中断期间客户端收到的旧值。

这就是在缓存中保护账本而不是神化守门人。解析器可以守住连续性,却不能接管名称。只要来源、年龄、边界和返回权威路径仍可证明,例外就是有界的;一旦这些记录消失,旧副本便会悄悄成为事实上的永久权威。

来源