SVCB(类型 65,服务绑定)RR 的用例是什么

SVCB(类型 65,服务绑定)RR 的用例是什么

我从客户那里收到了很多 SVCB(类型 65)查询。经过进一步挖掘,我发现很少有客户(如苹果 iOS 14)大量使用此 RR。

SVCB(类型 65)的示例查询如下 -

dig gsp85-ssl.ls.apple.com -t type65 @1.10.10.10

; <<>> DiG  <<>> gsp85-ssl.ls.apple.com -t type65 @1.10.10.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30904
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;gsp85-ssl.ls.apple.com.        IN  TYPE65

;; ANSWER SECTION:
gsp85-ssl.ls.apple.com. 1823    IN  CNAME   gsp85-ssl.ls2-apple.com.akadns.net.

;; AUTHORITY SECTION:
akadns.net.     117 IN  SOA internal.akadns.net. hostmaster.akamai.com. 1619000353 90000 90000 90000 180

;; Query time: 1 msec
;; SERVER: 
;; WHEN: Tue Aug 24 20:33:05 2021
;; MSG SIZE  rcvd: 164

我有以下疑问——

i. type65 RR 是否可以替代 CNAME,特别是在我们无法在区域的顶层使用 CNAME 的情况下

ii. 如何指示浏览器对我的域名请求 type65 查询而不是 A 或 AAAA,以便我可以通过 CDN 直接访问我的 abc.com

iii. 哪个版本的 bind 支持 SVCB (类型 65) RR

答案1

SVCB/ HTTPSDNS 记录目前正在处理中(请参阅https://github.com/MikeBishop/dns-alt-svc/blob/master/draft-ietf-dnsop-svcb-https.md工作文件或https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb-https-07.txt在 IETF 上已对此进行了修订,但尚未最终完成。

目前奇怪的模糊情况是,IANA 已经为它们注册了代码(这就是为什么它们已经可以在野外发生并实现互操作,通过 RFC 3597 处理通用记录类型的方式),即使 RFC 尚未准备好/发布,并且一些供应商(Apple 和 Cloudflare,见下文)表示他们已经实施并使用它。

https://blog.cloudflare.com/speeding-up-https-and-http-3-negotiation-with-dns/例如 Cloudflare,它还给出了使用它的示例。我建议阅读它,可能在阅读技术标准本身之前,除非你已经掌握了 DNS 和 TLS。

这个想法基本上是在 TLS 1.3(以及加密的客户端问候/加密的 SNI 需求)以及 HTTP/3 和 QUIC 之后/期间出现的。该文档旨在解决多个问题,其中部分问题已被SRV记录解决,但当时没有浏览器决定实施。

摘要中提到:

SVCB 记录允许从多个备选端点提供服务,每个端点都有相关参数(例如传输协议配置和用于加密 TLS ClientHello 的密钥)。它们还支持对顶级域进行别名,而 CNAME 无法做到这一点。HTTPS RR 是 HTTPS 和 HTTP 源的 SVCB 变体。通过在客户端尝试建立连接之前向其提供更多信息,这些记录在性能和隐私方面都具有潜在优势。

现在谈谈您的具体观点:

i. type65 RR 是否可以替代 CNAME,特别是在我们无法在区域的顶层使用 CNAME 的情况下

是的,SVCB/HTTPS旨在帮助处理“CNAME at apex”的情况。请参阅草案中的“10.3.2. Apex 别名”:


   Consider a zone that is using CNAME aliasing:

   $ORIGIN aliased.example. ; A zone that is using a hosting service
   ; Subdomain aliased to a high-performance server pool
   www             7200 IN CNAME pool.svc.example.
   ; Apex domain on fixed IPs because CNAME is not allowed at the apex
   @                300 IN A     192.0.2.1
                        IN AAAA  2001:db8::1

   With HTTPS RRs, the owner of aliased.example could alias the apex by
   adding one additional record:

   @               7200 IN HTTPS 0 pool.svc.example.

ii. 如何指示浏览器对我的域名请求 type65 查询而不是 A 或 AAAA,以便我可以通过 CDN 直接访问我的 abc.com

您必须等待浏览器支持它:-)

看看这个帖子https://mailarchive.ietf.org/arch/msg/dnsop/eeP4H9fli712JPWnEMvDg1sLEfg/;iOS 14 和 Safari 似乎以某种实验性的方式提供了支持。

Cloudflare 的博客文章最后提供了两个链接来跟踪 Firefox 和 Chrome 中的功能状态:

顺便说一句,请不要混淆。example.com在文档中使用,请参阅 RFC2606

iii. 哪个版本的 bind 支持 SVCB (类型 65) RR

尚未发货。此信息已追踪https://gitlab.isc.org/isc-projects/bind9/-/issues/1132 已合并6天前 :-) 因此,也许下一个版本会发布它,基于里程碑票据中的内容:“2021 年 9 月 (9.11.36、9.11.36-S1、9.16.21、9.16.21-S1、9.17.18)”

但是,由于 RFC 3597,您应该能够使用通用语法TYPE65在区域文件中输入记录,并且 bind 应该可以为其提供服务。您显然失去了语法检查和其他功能(您可以查看https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/5332/diffs要确切了解“添加 SVCB/HTTPS 支持以绑定”在代码方面的含义;请参阅 IETF 草案中的§4,了解权威和递归解析器需要对这些记录提供哪些具体支持;如果有充分的理由(例如软件中尚未提供真正的全面支持),则应该接受变化),但至少您可以提供记录。

但请记住,这里不仅仅只有 bind:

因此您已经可以尝试对其他软件进行全面支持。

相关内容