TL;DR: 如果你只是在安卓"私人 DNS"那一栏填地址,你选的其实就是 DoT(DNS over TLS,标准端口 853,RFC 7858);如果你是在浏览器或 Windows 设置里开"安全 DNS",那通常是 DoH(DNS over HTTPS,标准端口 443,RFC 8484)。两者加密强度相近,真正的差别在"你的设备原生支持哪一个"和"所在网络放不放行对应端口"。选哪个,不是看谁更先进,而是看你在哪台设备、哪个网络环境下用。
设置私人DNS时,为什么总要在DoT和DoH之间纠结?
很多人打开加密 DNS 教程,会看到两类地址:一类是让你填一个"主机名"(比如 dns.google),另一类是让你填一串 https://…/dns-query 开头的网址。填法不同,背后用的协议就不同——前者是 DoT,后者是 DoH。
这篇文章不打算像教科书那样把两种协议的报文格式拆开讲(本站另有一篇DoH/DoT/DoQ 三种加密协议对比做了深度科普,想刨根问底可以去看)。这里只解决一个实际问题:当你要给自己的手机、电脑、路由器配置私人 DNS 时,到底该填哪一类地址。
一张表看懂:DoT和DoH在"设置"层面的区别
| 对比项 | DoT(DNS over TLS) | DoH(DNS over HTTPS) |
|---|---|---|
| 标准来源 | RFC 7858,2016 年发布 | RFC 8484,2018 年发布 |
| 标准端口 | TCP 853 | TCP 443(复用 HTTPS 端口) |
| 封装方式 | DNS 报文直接跑在 TLS 连接上 | DNS 报文塞进一次 HTTP 请求里,再跑在 HTTPS 上 |
| 你在设置里看到的样子 | 填一个主机名/域名 | 填一个 https:// 开头的 URL |
| 典型原生入口 | 安卓"私人 DNS"菜单 | 浏览器"安全 DNS"、Windows 11 设置 |
| 与普通网页流量的区分度 | 853 端口流量较容易被单独识别 | 混在大量 443 流量里,较难单独区分 |
可以这样理解:DoT 是"专门为 DNS 修了一条加密专线",DoH 是"把 DNS 伪装成普通 HTTPS 网页流量走"。
你的设备原生支持哪个?别拿浏览器的习惯套手机
这是实操中最容易踩的坑——不同系统的加密 DNS 入口,默认走的协议不一样:
- 安卓手机:系统设置里那个"私人 DNS",根据 Android 官方说明,用的是 DNS over TLS(DoT)。你在那里填的主机名,就是 DoT 地址;安卓这个菜单目前并不直接支持填 DoH 的 URL。
- 浏览器(Chrome、Edge、Firefox):设置里的"安全 DNS / 使用安全 DNS 指定服务提供商",走的是 DoH,需要你填 URL 模板。它只管浏览器自己的解析,不影响手机里其他 App。
- Windows 10/11:较新版本的网络设置里,原生支持的加密 DNS 是 DoH(通过 DoH 模板配置),系统层面的 DoT 支持相对有限。
- macOS / iOS:主要通过描述文件或系统设置支持 DoH,DoT 支持视版本而定。
结论很直接:想给安卓整机开加密 DNS,你基本没得选,就是 DoT;想给浏览器单独开,就是 DoH。 别在安卓的"私人 DNS"框里硬塞一个 https:// 网址,那是填不进去的。
网络环境可用性:853和443端口的现实差异
填对了协议,还要看你的网络放不放行。这里需要客观说明两个事实:
- RFC 7858 在引言里就提到,DoT 依赖一个"知名端口"(853),而这个知名端口有可能被某些防火墙阻断。这意味着在部分管控较严的网络里,853 端口的出站连接可能不通。
- RFC 8484 则指出,DoH 复用了 HTTPS 的默认端口 443,并且可以和其他 HTTPS 流量混在同一条连接上,这让路上的设备更难把 DNS 流量单独挑出来干扰。
翻译成大白话:443 是所有正常上网都必须走的端口,几乎没有哪个网络会全封 443;而 853 是个相对小众的端口,理论上存在被单独限制的可能。但请注意——这只是协议层面的客观特性,不代表现实中一定会被封。多数家庭宽带、手机流量网络下,两者都能正常使用;只有在企业网、校园网、某些受限网络环境里,才可能遇到"DoT 连不上、换 DoH 就通"的情况。如果你在某个网络下私人 DNS 频繁连不上,可以两个都试一下。
自建加密DNS时,两种协议的证书要求差别
如果你不是用现成公共服务,而是自己搭一套加密 DNS(比如在 AdGuard Home、Pi-hole 上开启加密监听),两种协议对证书的要求也略有不同:
- DoT:服务器需要一份受信任的 TLS 证书,并与你在客户端填的主机名匹配。客户端会按 TLS 常规流程校验证书链,证书不匹配或过期就会握手失败——这也是安卓"指定主机名"模式下提示证书错误的常见原因。
- DoH:同样需要一份有效的 TLS 证书,因为它本质就是 HTTPS。区别在于 DoH 走的是标准 HTTPS 证书校验(RFC 8484 引用了 RFC 2818 的主机名校验规则),任何能让浏览器正常打开
https://你的域名的证书,基本就能让 DoH 跑起来。
实务上的建议是:自建时最好给服务器域名签一张正规 CA 证书(比如 Let's Encrypt),这样 DoT 和 DoH 都能用;用自签证书会导致客户端校验失败,需要额外手动导入信任,普通用户不推荐。
决策表:什么场景选哪个
| 你的场景 | 建议选 | 原因 |
|---|---|---|
| 安卓整机开私人 DNS | DoT | 系统原生菜单只支持 DoT |
| 只给浏览器开加密 DNS | DoH | 浏览器安全 DNS 走 DoH |
| Windows 10/11 系统级加密 | DoH | 系统设置原生支持 DoH |
| 所在网络疑似限制 853 端口 | 优先试 DoH | 443 更难被单独阻断 |
| 自建服务器、想一套证书两边通 | 两种都配 | 同一份正规证书可同时服务 DoT(853) 与 DoH(443) |
| 企业/校园网有内网域名要解析 | 先测连通性再定 | 严格模式可能挡住内网解析 |
至于第三种加密协议 DoQ(DNS over QUIC),它更年轻、主要在部分实验性客户端和新一代浏览器中出现,本站那篇三协议深度对比有专门讲解,普通用户现阶段了解即可,设置入口里一般还碰不到它。
常见问题 FAQ
Q:DoT 和 DoH 加密效果一样吗?哪个更安全?
A:两者底层都依赖 TLS 加密,对"防窃听、防篡改"的保护强度是同一量级的,区别主要在封装方式和部署位置,而非谁更安全。
Q:我能同时开安卓的 DoT 和浏览器的 DoH 吗?会不会冲突?
A:通常可以并存。安卓 DoT 作用于整机解析,浏览器 DoH 只接管浏览器自己的解析;少数情况下两者指向不同服务器可能带来解析结果不一致,建议保持指向同一家服务商。
Q:为什么我填了 DoT 主机名却提示"无法连接到私有 DNS 服务器"?
A:多半是 853 端口在当前网络被限制,或证书校验失败。可先切换到"自动"模式观察,或换一家同时提供 DoH 的服务测试。
参考来源
- RFC 7858 — Specification for DNS over TLS (TLS), IETF, 2016:支撑"DoT 标准、TCP 853 端口、知名端口可能被防火墙阻断、两种隐私剖面"等事实。
- RFC 8484 — DNS Queries over HTTPS (DoH), IETF, 2018:支撑"DoH 标准、封装进 HTTP、复用 443 端口、可与其他 HTTPS 流量混合、引用 RFC 2818 证书校验"等事实。
- Android Developers — Android 9 DNS privacy / Private DNS 使用 DNS-over-TLS:支撑"安卓私人 DNS 走 DoT"的官方定义。
- Google Public DNS — Secure transports (DoT 853 / DoH 443 端点对照):支撑"同一家服务商 DoT 用 853、DoH 用 443 URL"的端点对照示例。