DNS 默认是明文的,路径上的任何设备都能看到你查了什么,也能抢先给你一个假答案。DoT 和 DoH 把 DNS 放进 TLS 里。这篇测它到底挡住了什么、没挡住什么、新建一次连接要多花多少,也记录了在这个网络里主流的海外加密 DNS 根本连不上。
Cloudflare DoT 1.1.1.1:853:TCP 连接失败(TimeoutError,4002 ms) Cloudflare DoT 1.0.0.1:853:TCP 连接失败(TimeoutError,4001 ms) Google DoT 8.8.8.8:853:TCP 连接失败(TimeoutError,4002 ms) Quad9 DoT 9.9.9.9:853:TCP 连接失败(TimeoutError,4003 ms) AdGuard DoT 94.140.14.14:853:TCP 连接失败(TimeoutError,4007 ms) 阿里 DoT 223.5.5.5:853:TCP 连上 9 ms,TLS 握手成功 13 ms(TLSv1.3) Cloudflare DoH 1.1.1.1:443:TCP 连接失败(TimeoutError,4002 ms) Google DoH 8.8.8.8:443:TCP 连接失败(TimeoutError,4008 ms) Quad9 DoH 9.9.9.9:443:TCP 连接失败(TimeoutError,4002 ms) 阿里 DoH 223.5.5.5:443:TCP 连上 10 ms,TLS 握手成功 13 ms(TLSv1.3) 对照:example.com 的 HTTPS 104.20.23.154:443:TCP 连上 185 ms,TLS 握手成功 195 ms(TLSv1.3) 结论只限于这台机器所在的网络:能握手的才能拿来做后面的对比,所以后面用阿里的 223.5.5.5(UDP 53、DoT、DoH 都通)
这个网络里 Cloudflare、Google、Quad9、AdGuard 的 DoT 和 DoH 都超时;阿里 223.5.5.5 通。结论只限这个网络。
UDP 53 :[13.9, 11.4, 11.3, 10.2, 12.0, 9.0] ms,中位 11.4 ms
DoT 新连接(TCP+TLS+查询) :[79.1, 86.6, 41.3, 65.0, 83.3, 81.2] ms,中位 80.2 ms
DoT 复用连接 :[7.1, 8.2, 9.1, 8.2, 10.7, 11.5] ms,中位 8.6 ms
DoH 新连接(TCP+TLS+HTTP+查询) :[79.3, 82.3, 81.2, 81.9, 78.4, 88.9] ms,中位 81.5 ms
DoH 复用连接 :[58.8, 60.0, 58.3, 66.9, 58.3, 59.5] ms,中位 59.2 ms
DoH 复用连接(按 IP 连,不发 SNI) :[8.3, 7.0, 7.5, 11.3, 10.2, 9.0] ms,中位 8.6 ms
DoH 响应:HTTP 200,头 [('Cache-Control', 'max-age=8'), ('Content-Type', 'application/dns-message')];DNS 响应体 72 字节;DNS 里 A 记录的 TTL = [8]新建连接约 80 ms,复用连接约 8.6 ms,与 UDP 相当;DoH 带 SNI 复用比按 IP 连慢 50 ms,原因没查明。
端口 853:TLSv1.3,套件 TLS_AES_128_GCM_SHA256,ALPN 协商结果 None;证书主体 *.alidns.com,签发者 GlobalSign nv-sa,有效期 Dec 1 12:41:16 2025 GMT ~ Jan 2 12:41:15 2027 GMT;SAN 共 18 项,含本 IP True 端口 443:TLSv1.3,套件 TLS_AES_128_GCM_SHA256,ALPN 协商结果 h2;证书主体 *.alidns.com,签发者 GlobalSign nv-sa,有效期 Dec 1 12:41:16 2025 GMT ~ Jan 2 12:41:15 2027 GMT;SAN 共 18 项,含本 IP True
TLS 1.3;DoH 协商 h2;证书的 SAN 里有服务器 IP,可以只用 IP 连接并验证。
UDP 53 :2 个 IP 包,共 211 字节(上行 66 / 下行 145);包含查询名字(随机的第一段标签)明文的包 2 个;包里能找到服务器名 "dns.alidns.com"(TLS 的 SNI)的:否 DoT :21 个 IP 包,共 6758 字节(上行 2175 / 下行 4583);包含查询名字(随机的第一段标签)明文的包 0 个;包里能找到服务器名 "dns.alidns.com"(TLS 的 SNI)的:是 DoH :20 个 IP 包,共 7172 字节(上行 2321 / 下行 4851);包含查询名字(随机的第一段标签)明文的包 0 个;包里能找到服务器名 "dns.alidns.com"(TLS 的 SNI)的:是 UDP 53 把名字原样暴露给路径上的任何设备;DoT / DoH 的名字被加密,但目标 IP、端口、TLS 的 SNI(服务器名)、包的大小和时间仍然可见
名字被加密,但服务器 IP、SNI、包大小和时间仍然可见。
www.bbc.co.uk:
1.1.1.1 UDP 53 : 45 ms,A 记录 ['31.13.85.2']
223.5.5.5 UDP 53 : 17 ms,A 记录 ['157.240.20.18']
223.5.5.5 DoT : 158 ms,A 记录 ['199.59.148.7']
223.5.5.5 DoH : 118 ms,A 记录 ['157.240.20.18']
example.com:
1.1.1.1 UDP 53 : 293 ms,A 记录 ['104.20.23.154', '172.66.147.243']
223.5.5.5 UDP 53 : 12 ms,A 记录 ['104.20.23.154', '172.66.147.243']
223.5.5.5 DoT : 53 ms,A 记录 ['104.20.23.154', '172.66.147.243']
223.5.5.5 DoH : 90 ms,A 记录 ['104.20.23.154', '172.66.147.243']www.bbc.co.uk 经加密传输拿到的答案与明文同类且每次不同;加密不能保证上游答案真实。