把 DNS 报文搬上 QUIC 连接:基于 UDP、多路复用、0-RTT、连接迁移,在高丢包移动网络下比 DoT 更快更稳。
DoQ(DNS over QUIC)由 IETF RFC 9250(2022)定义:它不再像 DoT 那样把 DNS 报文放进 TCP+TLS 隧道,而是直接承载在 QUIC 连接上,底层走 UDP(专用 853,需要混淆时用 443)。它免费获得 QUIC 的全部红利——查询间多路复用不互相队头阻塞、重连时 0-RTT 把首个查询随握手包一起发出、手机从 Wi-Fi 切到 4G 时靠连接 ID 无缝迁移。目前 AdGuard Home 等本地递归软件已支持 DoQ 上游,公共解析器如 Cloudflare 也提供端点,但浏览器与操作系统级原生支持仍在推进,成熟度暂时落后于 DoH 与 DoT。
理解 QUIC 带来的四个关键提升
要理解 DoQ,先理解它解决了 DoT 的什么痛点。DoT 跑在 TCP 之上:TCP 是一条有序字节流,一个包丢失会卡住后面所有包(队头阻塞),在手机这种高丢包、频繁切换网络的链路上,DoT 的延迟和失败率都会明显上升。QUIC 把传输层从 TCP 搬到 UDP 上自己实现,从设计上绕开了这些问题,DoQ 只是把 DNS 报文放进这条新传输里。
一次上网往往要同时查好几个域名(主站、CDN、统计接口)。在 DoT 的 TCP 字节流里,这些查询共用一条有序通道,一个丢包会拖住全部;在 DoQ/QUIC 里,每个查询是一条独立 stream,某个 stream 丢包只影响它自己,其他查询照常返回。
客户端与服务器首次连接仍需一次完整 QUIC 握手。但之后短时间内重连(例如手机息屏再亮屏),客户端可以凭会话票据在第一个包里就带上 DNS 查询,实现 0-RTT,省掉一次往返延迟。RFC 9250 同时提醒:0-RTT 数据存在被重放的风险,对有副作用的请求要谨慎,普通 DNS 查询幂等,风险可控。
TCP 连接由「四元组」(源 IP、源端口、目的 IP、目的端口)标识,手机从 Wi-Fi 切到 4G 时源 IP 变了,TCP 连接就断了,DoT 必须重新握手。QUIC 用连接 ID 标识连接而非地址,只要两端还认识对方,地址变了连接照样继续——这对移动设备体验提升很大。
QUIC 在 UDP 之上自己做拥塞控制、ACK 与快速重传,不依赖中间网络设备的 TCP 栈,在丢包率高的链路上恢复更快。这也是 DoQ 在弱网环境下相对 DoT 的实际优势。
三种加密 DNS 在同一张表里看差异
| 维度 | DoT(RFC 7858) | DoH(RFC 8484) | DoQ(RFC 9250) |
|---|---|---|---|
| 底层传输 | TCP + TLS | TCP + TLS + HTTP/2 | UDP + QUIC |
| 默认端口 | 853/TCP | 443/TCP | 853/UDP,可 443/UDP |
| 队头阻塞 | 有(TCP 字节流) | 有(TCP 层) | 无(stream 级隔离) |
| 0-RTT | 不支持 | 依赖 TLS 会话恢复,较弱 | 原生支持 0-RTT |
| 连接迁移 | 不支持 | 不支持 | 原生支持 |
| 生态成熟度 | 高(安卓/iOS/路由器) | 高(浏览器/Win11) | 较低(递归软件/公共解析器先行) |
| 主要场景 | 系统级全局加密 | 浏览器、封锁规避 | 弱网、高性能递归、未来方向 |
协议虽新,但已经有可落地的软件与服务
DoQ 属于「协议先进、生态追赶中」的状态。根据 IETF Datatracker 上 RFC 9250 的状态,它已成为正式标准(Internet Standard),但各端支持节奏不一:
开源的 AdGuard Home(Go 编写的本地 DNS 去广告/过滤软件)已支持把 DoQ 配置为上游解析协议,也就是说你可以在自家路由器或 NAS 上跑 AdGuard Home,让它通过 DoQ 向上游公共解析器取结果,再分发给局域网设备。
Cloudflare 在其 1.1.1.1 加密 DNS 文档中同时提供 DoH、DoT 与 DoQ 端点,是较早把三种协议都上线的公共解析服务。自建 DoQ 服务端则需要在 UDP 853(或 443)上跑一个支持 DoQ 的递归/转发程序,并放行对应 UDP 端口。
由于 QUIC/HTTP3 本身还在各端逐步铺开,操作系统级「私人 DNS」目前仍以 DoT 为主,浏览器安全 DNS 以 DoH 为主。DoQ 短期内更适合作为服务端到服务端、或递归软件到上游之间的高性能通道,而不是普通用户手机上的第一选择。
UDP 853 端口;当需要与网页流量混在一起以规避封锁时,也可使用 UDP 443。它不像 DoT 那样跑在 TCP 上。