跳到主要内容

4. DNS 服务器行为

4.1. 权威服务器

当响应 SVCB 查询时,权威 DNS 服务器应当 (SHOULD) 在附加区段 (Additional section) 中返回区域内任何 TargetName 的 A、AAAA 和 SVCB 记录。如果区域已签名,服务器也应当 (SHOULD) 在附加区段中包含用于认证这些记录存在或不存在的 DNSSEC 记录。

有关例外情况,请参见第 4.4 节。

4.2. 递归解析器

无论递归解析器是否支持 SVCB,用于未知 RR 类型 [RFC3597] 的正常响应构造过程都会生成响应的应答区段 (Answer section)。支持 SVCB 的递归解析器应当 (SHOULD) 通过将额外的有用信息纳入响应的附加区段来帮助客户端以最小的总体延迟执行第 3 节中的过程,具体如下:

  1. 纳入 SVCB 解析的结果。如果递归解析器的本地链长度限制(可能与客户端的限制不同)已达到,则终止。

  2. 如果任何已解析的 SVCB 记录处于别名模式 (AliasMode),则随机选择其中一个,并为其 TargetName 解析 SVCB、A 和 AAAA 记录。

    • 如果解析到任何 SVCB 记录,则转到步骤 1。

    • 否则,纳入 A 和 AAAA 解析的结果,并终止。

  3. 所有已解析的 SVCB 记录都处于服务模式 (ServiceMode)。为每个 TargetName(或者如果 TargetName 是 "." 则为所有者名称)解析 A 和 AAAA 查询,纳入所有结果,并终止。

在此过程中,"解析"是指解析器的普通递归解析过程,就像处理该 RRset 的查询一样。这包括跟随解析器通常会跟随的任何别名(例如,CNAME、DNAME [DNAME])。获取附加记录时的错误或异常可能 (MAY) 导致此过程终止,但自身绝不能 (MUST NOT) 导致解析器发送失败响应。

有关递归解析器实施以缓解循环的额外保护措施,请参见第 2.4.2 节。

有关此过程的可能优化,请参见第 5.2 节。

4.2.1. DNS64

DNS64 解析器为仅具有 A 记录的名称综合 AAAA 查询的响应([RFC6147] 的第 5.1.7 节)。支持 SVCB 的 DNS64 解析器应当 (SHOULD) 在解析用于纳入附加区段的 TargetName 的 AAAA 记录时应用相同的综合逻辑(第 4.2 节中的步骤 2),并可以 (MAY) 从此区段中省略 A 记录。

DNS64 解析器绝不能 (MUST NOT) 将 AAAA 综合逻辑外推到 SvcParams 中的 IP 提示(第 7.3 节)。修改 IP 提示会破坏 SVCB 记录的 DNSSEC 验证,并且在实施上述建议时不会提高性能。

4.3. 通用要求

递归解析器必须 (MUST) 能够传递具有未识别 SvcParamKey 的 SVCB 记录。解析器可以 (MAY) 通过将记录的整个 SvcParams 部分视为不透明来实现此目的,即使内容无效。如果已识别的 SvcParamKey 后面跟随的值根据 SvcParam 的规范无效,则递归解析器可以 (MAY) 报告错误(例如 SERVFAIL)而不是返回记录。对于解释可能因实现而异或可能添加未来额外允许值的复杂值类型(例如,URI 或 "alpn"),解析器应当 (SHOULD) 将验证限制在指定的约束范围内。

当响应包含 DNSSEC OK 位 [RFC3225] 的查询时,支持 DNSSEC 的递归和权威 DNS 服务器必须 (MUST) 在附加区段中为每个 RRset 附带与将该 RRset 作为应答提供时会发送的相同 DNSSEC 相关记录(例如,RRSIG、NSEC、NSEC3)。

根据 [RFC2181] 的第 5.4.1 节,"从附加数据区段接收和缓存的未认证 RR 不应以会使其作为对接收查询的应答返回的方式缓存。在适当的情况下,它们可以作为附加信息返回。" 因此,递归解析器可以 (MAY) 缓存附加区段中的记录以用于填充附加区段响应,并且如果它们经过 DNSSEC 认证,则可以 (MAY) 缓存它们以供一般使用。

4.4. EDNS 客户端子网 (ECS)

EDNS 客户端子网 (ECS) 选项 [RFC7871] 允许递归解析器请求适合特定客户端 IP 范围的 IP 地址。SVCB 记录可能包含 IP 地址(在 ipv*hint SvcParams 中)或将用户引导至特定子网的 TargetName,因此递归解析器应当 (SHOULD) 在 SVCB 查询中包含与 A/AAAA 查询中相同的 ECS 选项。

根据 [RFC7871] 的第 7.3.1 节,"[附加区段] 中的任何记录绝不能 (MUST NOT) 绑定到网络。" 因此,当处理 QTYPE 为 SVCB 兼容的响应时,解析器应当 (SHOULD) 将附加区段中的任何记录视为将 SOURCE PREFIX-LENGTH 设置为零,并将 SCOPE PREFIX-LENGTH 设置为 ECS 选项中指定的值。如果这些记录不适合任何将 SOURCE PREFIX-LENGTH 设置为零的存根解析器使用,权威服务器必须 (MUST) 省略这些记录。这将导致解析器执行可以接收适当定制 ECS 的后续查询。(这类似于 [RFC7871] 第 7.2.1 节中讨论的 CNAME 与 ECS 选项的使用。)

省略附加记录的权威服务器可以通过遵循第 10.2 节中的建议来避免后续查询增加的延迟。