DoT 与 DoH 是什么
DoT(DNS over TLS,默认 853 端口)与 DoH(DNS over HTTPS,通常 443 端口)把 DNS 查询放进加密通道,防止链路中间被窥探或篡改。排查要抓三件事:端口是否放行、证书是否可信、客户端是否真的在用加密解析。浏览器或操作系统的『安全 DNS』一开,抓包里就再也看不到明文 53 查询,这往往是排 DNS 问题时方向跑偏的起点。
基本信息
| 适用平台 | 客户端与服务端(操作系统、浏览器、解析器软件) |
|---|---|
| 端口 | DoT 使用 TCP 853,DoH 使用 TCP 443 |
| 探测工具 | openssl s_client、dig +tls(BIND 9.18+)、kdig(knot) |
| 常见误区 | 只看 53 端口流量,误判为『没有 DNS 请求』 |
典型使用场景
- 企业内网部署加密解析:确认 853 或 443 是否已放行且证书可信
- 用户反馈解析结果异常:确认终端是否自行启用了加密 DNS 绕过内网解析
- 排障取证:用 openssl s_client 直接验证服务端握手与证书链
- 策略落地检查:安全策略要求使用加密解析时,验证客户端是否真的生效
DoT 与 DoH 探测
DoT 与 DoH 探测
# 验证 DoT 握手与证书链(853 端口)
openssl s_client -connect 1.1.1.1:853 -servername cloudflare-dns.com </dev/null 2>&1 | head -20
# dig 直接走 TLS(需要 BIND 9.18 及以上)
dig +tls @1.1.1.1 example.com
# knot 工具(若已安装)
kdig +tls @1.1.1.1 example.com
# DoH 的 GET 形式,观察 HTTP 状态与返回内容
curl -sS -D- 'https://dns.alidns.com/resolve?name=example.com&type=A' -o /dev/null | head -5故障特征对照
| 现象 | 可能原因 | 验证方式 |
|---|---|---|
| 853 连接超时 | 防火墙未放行 DoT | 从客户端直接测端口连通性 |
| TLS 握手失败 | 证书不可信或时间不准 | openssl s_client 查看链与时间 |
| 解析结果与预期不符 | 客户端启用了公共加密解析 | 抓包确认流量目的地 |
| 53 流量看不到查询 | 查询已改走 853 或 443 | 检查客户端解析设置与浏览器开关 |
抓包看不到明文 DNS 查询时不要急着怀疑抓包点:先确认客户端是否启用了加密解析。这是浏览器与移动操作系统上默认开启的功能,会让内网 DNS 策略被静默绕过。
强制启用加密解析前要确认出口策略允许 853 或 443 直连:只放行 53 的环境下强制 DoT 会导致全量解析失败,表现为『网络突然整体变慢或打不开』。