SVCB 是什么
SVCB(TYPE 64)是通用服务绑定记录:为某个服务名声明端点与参数(如端口、alpn),并支持别名模式把服务指向另一套端点(RFC 9460)。它是 HTTPS 记录(TYPE 65)的通用版本——HTTPS 只服务于 HTTP 系列协议,SVCB 可以服务于任意协议。
基本信息
| 类型 | SVCB(TYPE 64) |
|---|---|
| 格式 | 优先级(SvcPriority)、目标名与参数 |
| 规范 | RFC 9460 |
| 别名模式 | 优先级为 0 时表示按目标名的记录继续解析 |
| 常见参数 | alpn、port、ipv4hint、ipv6hint、ech |
| 与 HTTPS 记录关系 | 参数语义与优先级规则完全共享 |
典型使用场景
- 自定义协议的服务发现(非 HTTP 场景)
- 声明 DoT 或 DoH 端点(port、alpn 参数)
- 与 HTTPS 记录对比学习:理解参数与优先级规则
- 排障:确认客户端是否按 SVCB 走对了端口
- 协议扩展验证:确认中间件是否透传 SVCB 记录
- 端点迁移:通过别名模式把服务平滑指向新端点
记录示意
记录示意
# 声明一个 DoT 服务端点
dig +short _dns.example.com SVCB
# 1 dns.example.net. alpn="dot" port=853
# 优先级为 0 是别名模式,大于 0 是服务模式(数值越小越优先)
# 别名模式:把服务整体指向另一套端点
# _svc.example.com. 3600 IN SVCB 0 svc.example.net.SVCB 与 HTTPS 记录
| 记录 | 适用协议 | 典型用途 |
|---|---|---|
| HTTPS(TYPE 65) | HTTP 与 HTTPS | 声明 HTTP/3 支持、端口迁移、ECH |
| SVCB(TYPE 64) | 任意服务名 | 自定义协议端点、DoT 与 DoH |
| 参数集合 | 两者共用 | alpn、port、ipv4hint、ipv6hint、ech |
| 优先级规则 | 两者共用 | 0 为别名,大于 0 时越小越优先 |
参数名与语义在两种记录间完全共享;理解 HTTPS 记录就等于理解 SVCB,只是服务名可以不是 HTTP。
别名模式下目标名上不能再出现其他 SVCB 或 HTTPS 参数,否则配置非法。
客户端不支持 SVCB 时会忽略该记录,服务必须仍能通过 A/AAAA 正常访问,因此它应被视为优化而不是唯一路径。
服务模式下存在多条记录时,按优先级数值从小到大挑选使用。
与 DANE 等证书相关机制组合使用时,要先确认客户端实现的支持度,不能只看 DNS 侧配置是否正确。