我从客户那里收到了很多 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
/ HTTPS
DNS 记录目前正在处理中(请参阅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 中的功能状态:
- https://groups.google.com/a/chromium.org/g/blink-dev/c/brZTXr6-2PU/m/g0g8wWwCAwAJ2021 年 4 月声明:“Chrome 将很快开始尝试在 Chrome 通过其内置解析器定期处理 Do53 的平台上(Android、ChromeOS 和 MacOS)通过经典 DNS(Do53)查询 HTTPS 和 INTEGRITY。”
- https://bugzilla.mozilla.org/show_bug.cgi?id=1634793:仅显示该功能目前依赖于其他 5 个仍未解决的错误,可能需要先关闭这些错误,没有任何时间表
顺便说一句,请不要混淆。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:
- PowerDNS已经支持:https://doc.powerdns.com/authoritative/guides/svcb.html
- nsd 的 7 月版本也支持:https://www.nlnetlabs.nl/news/2021/Jul/22/nsd-4.3.7-released/“新功能是 XoT,它通过 TLS 提供 AXFR 和 IXFR,以及 DNS Cookies 支持和 SVCB 和 HTTPS RR 类型支持。”
- Knot DNS 也位于https://www.knot-dns.cz/2021-08-02-version-310.html8 月份发布并提供了部分支持:“libs:支持解析和转储 SVCB 和 HTTPS 资源记录”
因此您已经可以尝试对其他软件进行全面支持。