摘要

  • DNS Delegation Extensions 草案拟把 0xF000 到 0xF1FF 划成四类;类型所在的编号区段直接决定服务器是否携带 NS、解析器是否忽略 NS,以及记录是否只按需返回。
  • 因而,类型分配不是行政登记;错误区段会让尚未实现该具体类型的软件执行错误的默认行为,且 DE 协商本身不能为这种行为提供认证。

设想一个未来的资源记录类型:它携带处理委派所需的完整信息,设计目标是不再依赖传统 NS。评审时,它却被放进了“NS-Preserving”区段。认识该类型的专用实现也许还能按照自己的规范工作;只理解 Delegation Types 通用框架的实现,则会从编号得出另一条规则——保留 NS,并把新数据当作补充。

这不是解析器“过于机械”。编号本来就是机制的一部分。

draft-ietf-dnsop-delext-11,即 DNS Protocol Modifications for Delegation Extensions,发布于 2026 年 9 月 17 日,到 2027 年 3 月 21 日失效。它是 DNSOP 工作组的一份活跃 Internet-Draft,目标是标准轨道;它还不是 RFC,也不是任何厂商实现、互操作测试或采用率的证据。本文讨论的是草案规定的控制边界,而不是声称这些控制已经部署。

草案把 Delegation Types 定义为:在委派点具有权威性、供解析器处理委派的资源记录类型。NS 和 DS 并不因此成为这一类别。为让通用软件在不理解未来具体类型的情况下仍能安全处理转介,草案建议保留 0xF000 至 0xF1FF,并把范围切成四段。

数字不是标签,而是行为指令

0xF0000xF07F 属于 NS-Omitting:记录本身足以处理委派,所以转介里应省略 NS。0xF0800xF0FF 属于 NS-Preserving:新记录补充而不取代 NS。0xF1000xF1EF 属于 On-Demand:普通转介不主动携带,只有显式查询才返回。0xF1F00xF1FF 保留作私有用途,但沿用保留 NS 的行为。

这样做的优点,是不必为每一种未来类型再发明独立的“如何进入转介”信号。类型码所在区段已经告诉服务器和解析器通用处理方式。代价同样明显:分配决定从注册表进入了数据平面。

当查询携带 DE 标志时,权威服务器必须把委派点存在的 NS-Omitting、NS-Preserving 和 Private RRset 放入转介;On-Demand 类型除非被显式查询,否则不进入普通转介。只要出现一个 NS-Omitting 类型,服务器就不能再携带 NS,即使同处还有 NS-Preserving 或 Private 类型,即使 QTYPE 就是 NS。没有 NS-Omitting 时,NS 才必须保留。

解析器一侧的优先级同样明确:看到 NS-Omitting 类型后,就使用它们,忽略随附的 NS,而且不验证、不缓存那些 NS。换句话说,区段不仅影响报文大小,也改变候选路径和回退政策。

如果分配错位,通用实现不会有机会猜测设计者的真实意图。它只能依照号码决定保留还是省略 NS。注册审查因此需要回答“这个类型是否独立承担委派”“未知该类型的实现如何安全处理”“它的安全属性能否与 DNSSEC 规则兼容”,而不只是检查助记符和申请者信息。

专家审查是在审核未来代码

草案建议公共区段采用 Expert Review 或 Standards Action,私有区段采用 Private Use。对于引入新协议行为、或与服务器、解析器和 DNSSEC 核心机制互动的类型,还需要标准轨道文档。

这套治理的实质,是在具体实现广泛出现前,决定未知类型的默认行为。专家面对的不是静态表格,而是未来大量软件将执行的分支条件。把替代 NS 的类型分配到保留 NS 的区段,会造成安全属性被静默回退;反过来,把补充类型放进省略 NS 的区段,可能让解析器抛弃唯一可用的传统委派信息。

这种错误一旦写入注册表、规范、测试套件和部署,很难以局部补丁逆转。给某个具体实现加例外,会破坏“从区段即可推导行为”的通用性;重新分配类型码,则要处理已经存在的数据和软件。真正不可逆的风险,不是一个数字不好看,而是错误语义被固化为互操作承诺。

DE 只能协商是否理解框架

草案提议使用 EDNS(0) 的 bit 2 作为 DE 标志。感知该机制的解析器在查询中置位;感知的递归解析器收到感知 stub 的 DE 后,在响应中回显,表示支持。权威服务器收到 DE=0 时,按传统行为处理,把 Delegation Types 当作普通数据类型。

这个开关解决兼容性:不把旧解析器无法处理的新委派语义强塞给它。但它没有认证能力。路径上的攻击者可以从查询中删除 DE,令权威服务器合理地只返回 NS;也可以从转介中删除 NS-Omitting 类型及相关证明,只留下未签名 NS。

因此,看到 DE 被回显,只能证明某个交互边界报告了能力。它不能证明查询到达权威服务器时仍有 DE,不能证明转介完整,更不能证明解析器最终使用了新路径。把“理解协议语言”写成“获得降级保护”,就越过了证据边界。

ADT 把义务放进已验证的 DNSKEY

降级检测依赖另一个对象:草案建议在 DNSKEY bit 14 设置 Authoritative Delegation Types(ADT)。验证解析器从委派区已经验证的 DNSKEY RRset 中确定 ADT 状态。只要其中任一 DNSKEY 置位 ADT,转介就必须携带 NSEC 或 NSEC3 证明,说明委派名处有哪些 Delegation Types、或确实没有。

验证器把转介中的 NS-Omitting、NS-Preserving 和 Private RRset,与 NSEC/NSEC3 Type Bit Maps 对照。位图证明某类型存在、转介却没带,就说明响应被篡改,必须忽略。On-Demand 类型可以出现在位图中却不出现在普通转介里,因为“按需”正是它的区段语义。

ADT 的关键不只是又多了一个位,而是义务的来源不同。DE 属于当前查询,能被路径攻击者拿掉;ADT 来自之前已经验证的 DNSKEY RRset。攻击者即使去掉 DE,验证器仍知道该区承诺了 Delegation Types,并会要求相应的存在或不存在证明。

但这项保护有严格前提:委派区必须签名,ADT 必须置位,解析器必须执行 DNSSEC 验证,并落实一致性检查。少一个条件,草案机制就不提供针对 DE 删除或转介记录删除的密码学保护。

ADT 清零也不等于正面 DELEG 响应自动变成 bogus。草案明确说,不应仅因 ADT 未置位而把它判为 DNSSEC-bogus;解析器仍按普通规则处理。正确描述应同时保留两个结论:“此响应不因这一点被否决”和“这里没有 ADT 建立的降级证明义务”。

拒绝回退是一项政策选择

NS-Omitting 类型被认证且可用时,忽略 NS 可以避免在新机制失败后悄悄回到传统、可能未加密的 DNS 传输。更尖锐的是:解析器已经知道 NS-Omitting RRset 存在,但内容不可用时,也不能把 NS 当作救生索;它要把情形当作候选服务器不可达。

这会制造“安全地失败”。业务视角可能看到可用的 NS 却无法解析;安全视角则看到系统拒绝用另一个政策完成同一表面目标。恢复 NS 路径并不是纯技术修复,而是重新授权一种传输和信任方式。

领导层需要在上线前决定是否接受这种可用性代价,而不能等故障发生后由库函数自行选择。监控也应把“按照 NS-Omitting 规则拒绝回退”从一般超时中分离出来。否则,运维会把合规的拒绝当作程序缺陷,或把违反政策的回退当作恢复成功。

诊断和证明都不会自动恢复服务

当父区只发布 Delegation Types、不再有 NS,而旧解析器用 DE=0 查询时,服务器会返回负面响应,并建议附加 EDE 34 “New Delegation Only”。这个错误码能解释不兼容,却不会给旧解析器新增能力。

攻击者也可能删除 DE,故意诱导这种负面结果。若已验证的 DNSKEY 承诺 ADT,解析器就能要求 NSEC/NSEC3 证明并拒绝缺证的响应。Compact Denial of Existence 还要避免使用会遮住委派点类型位的 NXNAME 形式,而改用传统 Name Error 证明。

证明的价值是让拒绝有依据。它并不创造一个能工作的服务器,也不保证用户获得结果。EDE 是诊断,不是修复;NSEC 位图是存在性证据,不是服务健康检查。

SLIST 只说明候选如何进入集合

草案把 SLIST 扩展成能容纳多种委派信息的集合,完全相同的值只出现一次。委派之间仍可能形成循环依赖、重复指向和失控计算,所以实现必须设置限制。

更重要的是,草案指出 RFC 1034 和本文只定义如何填充 SLIST,不定义如何使用它。一个地址或服务器进入 SLIST,只能证明构造算法把它列为候选。它不能证明解析器选择了它、连接成功、采用加密传输、收到答案或完成了用户请求。

可审计记录应按顺序保留:各边界的 DE、经过验证的 DNSKEY/ADT、NSEC/NSEC3 证明、类型所属区段、NS 优先级决策、SLIST 候选、实际选择、传输方式和最终结果。把这些压缩成“已启用新委派”,会让能力、认证与结果互相借用可信度。

编号被放错区段的故事说明,治理发生在代码运行之前。注册表分配决定了未知类型遇到通用实现时的默认命运。只有把这个决定当作协议控制面,才不会在多年后才发现,一个看似行政的数字已经替整条解析路径选择了错误行为。

来源