从最近的一篇 Cloudflare 自动添加 SVCB/HTTPS DNS 记录的文章中,我试图解释他们在 DNS 记录中发布的内容。
SVCB 或 HTTPS 的当前草案似乎是“draft-ietf-dnsop-svcb-https-01”。
使用 dig 获取 cloudflare 博客的 DNS 记录:
dig blog.cloudflare.com -t TYPE65
Run Code Online (Sandbox Code Playgroud)
回答查询:
;; ANSWER SECTION:
blog.cloudflare.com. 300 IN TYPE65 \# 76 000100000100150568332D32390568332D32380568332D3237026832 0004000868121A2E68121B2E00060020260647000000000000000000 68121A2E26064700000000000000000068121B2E
Run Code Online (Sandbox Code Playgroud)
返回答案的 RFC3597 编码格式。
很高兴知道它说了什么。它说什么?
该drill命令在最新的 git 修订版 [1] 中支持 HTTPS RR(类型 65)。要使用它,请使用 构建 ldns --enable-rrtype-svcb-https。以下是用法示例:
$ drill HTTPS blog.cloudflare.com | grep ^blog
blog.cloudflare.com. 300 IN HTTPS 1 . alpn=h3-29,h3-28,h3-27,h2 ipv4hint=104.18.26.46,104.18.27.46 ipv6hint=2606:4700::6812:1a2e,2606:4700::6812:1b2e
$ drill HTTPS crypto.cloudflare.com | grep ^crypto
crypto.cloudflare.com. 237 IN HTTPS 1 . alpn=h2 ipv4hint=162.159.135.79,162.159.136.79 echconfig=AEj+CgBEhwAgACA8RalVTTRgfQYqMSqwX4GiBa6kftXcUcQZIkqhwe0PLwAEAAEAAQAAABNjbG91ZGZsYXJlLWVzbmkuY29tAAA= ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f
Run Code Online (Sandbox Code Playgroud)
2021/09/05 更新:dig 现在在最新的 git 修订版中也支持 HTTPS 记录 [2]。以下是用法示例:
$ dig HTTPS blog.cloudflare.com | grep ^blog
blog.cloudflare.com. 242 IN HTTPS 1 . alpn="h3,h3-29,h3-28,h3-27,h2" ipv4hint=104.18.26.46,104.18.27.46 ipv6hint=2606:4700::6812:1a2e,2606:4700::6812:1b2e
$ dig HTTPS crypto.cloudflare.com | grep ^crypto
crypto.cloudflare.com. 285 IN HTTPS 1 . alpn="h2" ipv4hint=162.159.135.79,162.159.136.79 ech=AEb+DQBCmwAgACA5ysTCbPox2yTLTsrGuJ8QHfwHjqZLcNGTA7xAiBJNSQAEAAEAAQATY2xvdWRmbGFyZS1lc25pLmNvbQAA ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f
Run Code Online (Sandbox Code Playgroud)
[1] https://github.com/NLnetLabs/ldns/pull/115
[2] https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/2135
我设法手动解码它的第一部分:
\# 76 total length
0001 priority
00 full registered name, null, "."
0001 alpn key type
0015 alpn value length
05 alpn-id length
68332D3239 alpn-id: h3-29
05 alpn-id length
68332D3238 alpn-id: h3-28
05 alpn-id length
68332D3237 alpn-id: h3-27
02 alpn-id length
6832 alpn-id: h2
Run Code Online (Sandbox Code Playgroud)
也许我会稍后完成剩下的工作,但看到 h3-29、28 和 27 ALPN 类型很有趣。
我还发现 dnspython 支持 master 中的记录类型,其他一些软件也根据此列表进行支持: https: //github.com/MikeBishop/dns-alt-svc/blob/master/svcb-implementations.md