2.4.2. AliasMode
2.4.2. AliasMode
在 AliasMode 中, SVCB 记录将服务别名到 TargetName.SVCB RRset 应该只有一个处于 AliasMode 的 RR.如果存在多个 AliasMode RR, 客户端或递归解析器应该随机选择一个.
AliasMode 的主要目的是允许在区域顶点 (zone apex) 进行别名, 而 CNAME 在那里是不允许的 (例如, 参见 [RFC1912], 第 2.4 节).在 AliasMode 中, TargetName 将是解析为 SVCB, AAAA 和/或 A 记录的域名.(有关 SVCB 兼容 RR 类型的别名, 请参见第 6 节.) 与 CNAME 不同, AliasMode 记录不影响其他 RR 类型的解析, 并且仅适用于特定服务, 而不是整个域名.
AliasMode TargetName 不应该等于所有者名称, 因为这将导致循环.在 AliasMode 中, 接收方必须忽略任何存在的 SvcParams.如果 AliasMode 记录具有 SvcParams, 区域文件解析器可以发出警告.目前尚未定义在 AliasMode 记录中使用 SvcParams, 但未来的规范可以扩展 AliasMode 记录以包含 SvcParams.
例如, "foo://example.com:8080" 的运营商可以通过发布以下内容将请求指向在 "foosvc.example.net" 运行的服务:
_8080._foo.example.com. 3600 IN SVCB 0 foosvc.example.net.
使用 AliasMode 保持关注点分离: "foosvc.example.net" 的所有者可以添加或删除 ServiceMode SVCB 记录, 而无需对 "example.com" 进行相应更改.请注意, 如果 "foosvc.example.net" 承诺始终发布 SVCB 记录, 则可以用同一所有者名称的 CNAME 替换此 AliasMode 记录.
AliasMode 对于不需要下划线前缀的 SVCB 兼容 RR 类型特别有用, 例如 HTTPS RR 类型.例如, "https://example.com" 的运营商可以通过在区域顶点发布此记录将请求指向 "svc.example.net" 的服务器:
example.com. 3600 IN HTTPS 0 svc.example.net.
请注意, SVCB 记录的所有者名称可以是 CNAME 记录的规范名称, 并且 TargetName 可以是 CNAME 记录的所有者.客户端和递归解析器必须正常遵循 CNAME.
为了避免无限制的别名链, 客户端和递归解析器必须对每个解析请求将遵循的 SVCB 别名总数施加限制.此限制不得为零, 即实现必须能够遵循至少一个 AliasMode 记录.此限制的确切值由实现决定.
需要遵循多个 AliasMode 记录的区域可能会遇到兼容性和性能问题.
由于旧版客户端不知道使用此记录, 服务运营商可能需要在此 SVCB 记录旁边保留后备 AAAA 和 A 记录, 尽管在常见情况下, SVCB 记录的目标可能提供更好的性能, 因此实现此规范的客户端更应该使用它.
AliasMode 记录仅适用于特定 RR 类型的查询.例如, SVCB 记录不能别名到 HTTPS 记录, 反之亦然.