摘要
- RFC 9664 报文中的请求值只是希望;成功响应里的
LEASE与KEY-LEASE才是权威服务器实际授予的发布时间。 - 租约到期能约束权威端的陈旧记录,却不能证明服务可用、权威集群已经收敛,也不能立即撤回递归缓存中尚未耗尽 TTL 的答案。
设想一次并不复杂的注册。设备向权威 DNS 服务器申请发布服务记录 30 分钟。RFC 2136 前置条件成立,事务认证通过,服务器返回成功,但在 Update Lease 选项里授予了 4 小时。20 分钟后,设备断电,既没有显式删除,也没有再发刷新。
余下的时间里,权威答案可以完全符合这份租约,但答案指向的服务已经不存在。
这是说明机制的假设场景,不是某次真实事故,也不代表任何产品的默认值。RFC 9664 允许服务器授予的时间短于、等于或长于请求。真正支配后续刷新与到期的,是响应,不是请求者最初写下的数字。
一次成功报文包含三种不同判断
Update Lease 没有另造一套写入协议。它作为 EDNS(0) 选项,装在普通 RFC 2136 DNS UPDATE 的 OPT 伪记录中。Zone、Prerequisite、Update 与 Additional Data 各节仍然存在,前置条件仍针对当时的区域状态判断,整次修改仍按原子事务接受或拒绝。
这只回答第一件事:该主体能否在这个区域状态下实施这些增删?
成功响应中的租约回答第二件事:如果没有续期,服务器承诺把已接受记录发布到什么时候?
服务探测才回答第三件事:这些记录指向的地址、端口和应用现在是否真正工作?
TSIG 或 SIG(0) 可以认证事务与签名主体,更新策略可以把密钥权限限制在特定名称和记录类型。它们无法观察进程是否运行、端口是否监听、路径是否可达或一次真实业务请求能否完成。经过认证的“失效服务注册”,仍然只是经过认证的失效服务注册。
因此,证据不能只有“租约成功”。应保留完整的 Zone、Prerequisite、Update、Additional Data,TSIG 密钥名或 SIG(0) 身份,策略判定,选项长度,请求时长,响应 RCODE,以及服务器返回的确切时长。只有这样才能回答谁授予了什么。
四字节与八字节,服务记录与名称占用
Update Lease 有两种格式。四字节格式只有一个 32 位无符号 LEASE,适用于 Update 节中的所有 RR,包括 KEY。八字节格式增加 KEY-LEASE:普通 RR 使用 LEASE,KEY RR 使用另一时长。
这项区分在 RFC 9665 的 Service Registration Protocol 中尤其重要。服务发现记录可以先到期,KEY 则继续为同一密码学主体保留名称,避免另一个请求者立刻占用。保留的是名称主张,不是服务存活状态。
兼容旧实现时,两种时长可能重新合并。收到四字节请求的服务器必须把一个值同时用于普通记录与 KEY;请求者即使发出八字节,如果收到四字节响应,也必须按一个值解释两类租约。运营者想要“服务短租、名称长留”,不能看配置意图,必须看实际响应格式和值。
显式删除又是另一件事。Lease Update Request 中被删除的 RR 是永久删除,不会在某个租约终点自动恢复。
真正开始计时的是服务器响应
支持 RFC 9664 的权威服务器在成功接受带有 Update Lease 的更新时,必须在响应中返回该选项。请求者随后以授予时长的 80% 加 0% 至 5% 随机偏移安排刷新。随机量可以分散大批设备同步唤醒,剩余的约 15% 至 20% 时间则可用于重传。
“已经计算刷新时间”不是“服务器已经续期”。取证必须包含偏移值、下一次截止时间、实际发送、认证响应与新授予值。计划任务排队或客户端本地日志都不能代替服务器证据。
若成功响应没有 Update Lease,RFC 9664 将其视为服务器不支持该功能的信号。为了兼容,请求者仍应仿佛服务器返回原请求值那样继续刷新。这可以避免客户端立刻放弃,却不能证明服务器会在某个时间自动停止发布。正确标记应是“客户端兼容刷新中,服务器到期清理未被证明”。
Registration 与 Refresh 也不能混称。前者用于加入原先认为不存在的信息;后者用于在不改变内容的情况下延长既有注册。如果服务器重启后丢失状态,一个设计得当的 Refresh 可以把记录重新加入。此时它实际上改变了区域内容,SOA serial 必须变化;如果内容没有变化,单纯刷新不得增加 serial。
同一类请求会因服务器的前置状态不同而产生不同效果,所以事故记录必须保存处理前状态。
权威端到期,不等于全网消失
没有有效刷新而租约耗尽时,服务器必须停止在查询答案中返回相应 RR。它可以删除数据库中的记录,但不是必须。停止回答与物理清除是两种状态,不能互相推断。
TTL 还运行着另一只钟。递归解析器若在权威租约到期前刚拿到答案,可以在剩余 TTL 内继续复用。权威服务器无法召回这份副本。反过来,极短 TTL 也不会让权威端保留四小时的注册提前到期。
至少要拆开四条时间线:服务器授予的到期点;请求者的刷新与重试;到期产生内容变化后在 journal、签名器、辅助权威和 anycast 站点间的传播;以及各观察点真实看到的 TTL。若注册器只是 hidden primary,仅凭它的租约表无法证明公网权威集群一致。
最终还要直接探测记录宣告的协议。DNS 正向答案证明名称正在发布,不证明 TCP、TLS 或应用事务能够成功。
时长边界属于本地策略
租约过长,陈旧记录近似永久存在;过短,则刷新负载上升,一次普通延迟就可能让健康服务过早消失。RFC 9664 建议服务器默认上限分别为普通 LEASE 24 小时、KEY-LEASE 7 天,并要求设置默认下限,建议至少 30 秒,同时指出大多数场景应使用长得多的值,例如 1 小时。运营者可以调整。
这些数字不是请求者权益,也不是通用服务指标。关键在于服务器本地政策可见、可版本化、可审计,请求者把返回值当作新事实。密钥权限同样要窄化:租约只能限制被写入数据的残留时间,无法补救一把可以改动整个区域的过度授权密钥。
来源
- IETF,RFC 9664:DNS Update Lease
- IETF Datatracker,RFC 9664 文档记录
- IANA,DNS EDNS0 选项代码
- IETF,RFC 2136:DNS UPDATE
- IETF,RFC 3007:安全动态更新
- IETF,RFC 6891:EDNS(0)
- IETF,RFC 8945:TSIG
- IETF,RFC 2931:SIG(0)
- IETF,RFC 1035:DNS 实现与规范
- IETF,RFC 9665:Service Registration Protocol
- IETF,RFC 6763:DNS-SD
- IETF,RFC 1995:IXFR
- IETF,RFC 1996:DNS NOTIFY
- IETF,RFC 5936:AXFR
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
