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 记录, 反之亦然。