SVCB/HTTPS 记录的出现,感觉确实可以解决一些很重要的问题,尤其是中国运营商封锁家用宽带80\443端口,也就是说,你不能使用家庭宽带对外提供网站服务。而HTTP/1.1 和 HTTP/2 工作在标准的 80 和 443 端口。
SVCB 记录概览
SVCB 记录的结构如下:
_端口._协议.子域名 TTL IN SVCB 优先级 目标域名 [服务参数...]
目标是通过一次 DNS 查询来加速通信连接过程
优先级 == 0 表示别名模式(AliasMode)
支持绑定根域名
优先级 != 0 表示服务模式(ServiceMode)
服务参数是任意键值对,主要的有:
TLS ALPN 提示信息
端口
ECH 配置信息(公钥等)
IP 提示信息
HTTPS 记录概览
https 记录是一类特殊的 svcb 记录,功能上没有任何区别,但不需要指定 _https 协议前缀。
它可以更好地支持通配符域名,比如*.example.com TTL IN HTTPS ...,类似现有的 CNAME记录。
如果一个域名设置了 HTTPS 记录,就说明该域名支持 HTTPS/TLS 访问(类似 HSTS)。
注意,DNS 服务器本身不对 SVCB/HTTPS 作任何区分。
别名模式 AliasMode
以下记录是将 example.com 的 http 服务信息指向 svc.example.net 域名。
example.com. 7200 IN HTTPS 0 svc.example.net.
如果还在 example.com 监听了非标准的端口(比如 8443),则应该再设置如下记录
_8443._https.example.com. 7200 IN HTTPS 0 svc.example.net.
服务模式 ServiceMode
下面是两条服务模式的 HTTPS 记录
svc.example.net. 7200 IN HTTPS 2 svc3.example.net. alpn=h3 port=8003 ech=...
svc.example.net. 7200 IN HTTPS 3 svc2.example.net. alpn=h2 port=8002 ech=...
其含义是可以使用 QUIC 协议连接 svc3.example.net 的 8003 端口或者使用 HTTP/2 连接 svc2.example.net 的 8002 端口,并且可以使用 ech 信息对 TLS 握手信息作加密处理。
DNS 查询流程
客户端同时发起 A/AAAA 和 HTTPS 记录(增加 50% 的查询量)
如果 HTTPS 记录是别名模式,则需要查询指向域名的 A/AAAA 和 HTTPS 记录
客户端需要查询服务模式下目标域名的 A/AAAA 记录
DNS 递归解析服务器可以通过附加字段提供这些记录
ECH 记录的特殊要求:
客户端需要在收到 HTTPS 查询结果之后再发起 TLS 连接,以防服务端开启 ECH
如果 HTTPS 查询超时,客户端不能假设服务端不支持 ECH,以防降级攻击
IP 提示
SVCB/HTTPS 记录还可以添加所谓的 IP 提示信息,效果如下:
@ 7200 IN HTTPS 1 svc.cdn.example ipv4hint=192.0.0.1
IP提示信息是可选的。主要用于加速 dns 解析过程。如果 HTTPS 记录含有 ip 提示信息,则可以不用再查询目标域名的IP地址。
当前SVCB记录推进的状态
1、IANA 已经为 SVCB/HTTPS 分配了 64/65 两个类型ID。
2、draft-ietf-dnsop-svcb-https已经接近完成
3、iOS 14/macOS 11 已经部分支持 SVCB/HTTPS 查询
4、Dnspod的DNS(含免费版)、Cloudflare 的 CDN 和 DNS 已经支持 SVCB/HTTPS 记录
5、 DNS 服务软件正在开发对应的功能
如您发现侵权内容,欢迎友好的反馈,站长必在24小时内妥善处理。站长邮箱:postmaster@cloud700.com