摘要

  • QNAME 最小化减少非终端权威服务器看到的信息,但不会向递归解析器隐藏用户的完整查询。
  • 冷缓存可能需要逐级增加标签来寻找区域切点;暖缓存则可能显著缩短这段过程。
  • 运维证据必须保留上游序列、缓存背景和停止原因。

最能暴露问题的事故往往始于一个绿色开关。解析器宣称已启用最小化,但一次冷缓存查询为了寻找异常委派连续探测多个标签,随后失败;稍后的暖缓存重试只发出一次上游查询,因为委派已经进入缓存。设置没有变化,实际的隐私暴露与可靠性合同却变了。

RFC 9156 要求解析器在已知不负责最终回答的权威服务器上减少原始 QNAME 和 QTYPE 的暴露。解析器只询问发现下一层委派所需的名称,并可选择与客户端原始类型无关的 QTYPE。最终权威服务器仍会获得回答所需的名称,但更高层服务器看到的内容更少。

这不是一次简单改写,而是一套序列算法。解析器从缓存中知道部分区域切点,对未知部分则必须继续发现。深层名称在冷缓存下可能产生更多上游请求,因此 RFC 9156 要求限制每个客户端请求派生的查询数量,并讨论了 MAX_MINIMISE_COUNT 推荐值 10;这不是适用于所有系统的统一容量阈值。

缓存会改变成本。RFC 8020 的 NXDOMAIN cut 允许解析器在某节点收到权威 NXDOMAIN 后,把该节点以下视为不可达。它与最小化结合时,可能让解析器更早停止,反而减少查询与名称暴露。但否定结论扩大后,假 NXDOMAIN 的运维影响也随之扩大;DNSSEC 验证是这一边界上防范缓存毒化风险的明示保护。

RFC 8198 允许验证型解析器利用缓存中的 NSEC 或 NSEC3 证明,为未曾查询的名称合成否定回答。因此,仅查看权威服务器日志不能解释客户端结果。回执应区分直接回答、NXDOMAIN cut 与 DNSSEC 验证缓存,并记录其 TTL 边界。

隐私边界也必须写清。RFC 9076 展示的是多个观察者问题。递归解析器仍收到完整问题;若传输未加密,路径观察者仍可能看到流量。QNAME 最小化减少不需要完整名称的权威服务器所见内容,却不能代替加密传输或可信解析服务。

兼容性回退同样需要证据。为某个异常权威服务器放宽最小化可以是有界的可用性决定;若不记录对象、错误类别、放宽步骤、到期时间与复测结果,它就会从例外变成不可见的长期政策。