DoH是什么?DNS over HTTPS和DoT的区别与设置方法
DoH 是 DNS over HTTPS 的缩写,意思是把 DNS 查询装进 HTTPS 里发出去。普通 DNS 查询是明文的,路上任何一台设备都能看到你在查哪个域名,也能抢先塞回一个假答案;DoH 加密之后,路上的人既看不到查询内容,也没法伪造答案。它的兄弟 DoT(DNS over TLS)做的是同一件事,只是换了一种包装。
不过 DoH 只加密「查域名」这一步,管不到后面的事,选哪家服务器也直接决定效果。这篇讲清 DoH 和 DoT 的区别、它防得住什么防不住什么、有哪些缺点,以及在浏览器、Windows、安卓、iPhone 上怎么开。
DoH 和 DoT 有什么区别
| 对比项 | DoH | DoT | 普通 DNS |
|---|---|---|---|
| 全称 | DNS over HTTPS | DNS over TLS | — |
| 加密 | 有,HTTPS | 有,TLS | 无 |
| 端口 | 443,和普通网页一样 | 853,专用端口 | 53 |
| 能不能被认出是 DNS 流量 | 很难,混在网页流量里 | 容易,看端口就知道 | 能 |
| 能不能被单独封掉 | 难,封了会误伤网页 | 容易,封 853 端口即可 | 能 |
| 标准发布 | 2018 年(RFC 8484) | 2016 年(RFC 7858) | — |
| 常见支持 | 浏览器、Windows 11、代理客户端 | 安卓「私人 DNS」、代理客户端 | 所有设备 |
两者的加密强度没有差别。DoH 的好处是长得和普通网页一模一样,网络管理者很难单独拦它;DoT 用专用端口,容易识别,但对管理网络的人更透明。
DoH 防得住什么,防不住什么
| 情况 | 开了 DoH 之后 |
|---|---|
| 运营商或公共 Wi-Fi 偷看你查了哪些域名 | 防得住 |
| 运营商把打错的网址跳到广告页(DNS 劫持) | 防得住 |
| 查询在路上被抢答、返回假 IP(DNS 污染) | 防得住,前提是用境外的 DoH 服务 |
| 运营商知道你正在访问哪个网站 | 防不住,见下文 |
| 网站本身被封 IP | 防不住,DNS 只管查地址 |
为什么开了 DoH,运营商还是知道你在访问哪个网站? 查完域名之后,浏览器要和网站建立 HTTPS 连接,这次握手里有一个叫 SNI 的字段,会用明文写着网站域名。DoH 只加密了查询那一步,连接这一步照样看得到。要连这一步也藏起来,需要网站和浏览器都支持 ECH(加密客户端问候),目前只有部分网站支持。
为什么用国内的 DoH 防不了污染? 阿里、腾讯这些国内服务器本身就在国内网络里,对被封域名返回的结果和普通查询是一样的。加密只是保证路上没人改答案,答案本身不对,加密也救不了。用国内 DoH 能防的是运营商偷看和劫持,DNS 污染是怎么回事,见 DNS污染和DNS劫持有什么区别。
常用的 DoH / DoT 服务器
| 服务 | DoH 地址 | DoT 地址 | 在国内能不能直连 |
|---|---|---|---|
| 阿里 | https://dns.alidns.com/dns-query | dns.alidns.com | 能 |
| 腾讯 DNSPod | https://doh.pub/dns-query | dot.pub | 能 |
| Cloudflare | https://cloudflare-dns.com/dns-query | one.one.one.one | 不稳定,经常连不上 |
https://dns.google/dns-query | dns.google | 基本连不上 |
国内服务器适合防劫持、防偷看;境外服务器只有在能稳定连上时才有意义,所以代理客户端一般让境外查询走代理出去。
DoH 的缺点
- 公司、学校的网络管理会失效:很多单位靠 DNS 拦截恶意网站、做上网管控,开了 DoH 就绕过去了,有的单位会因此禁止 DoH
- 可能和内网域名冲突:浏览器自己开 DoH 时会绕过系统 DNS,公司内网里只有内部 DNS 才认识的域名可能就打不开了
- 查询集中到少数大公司:运营商看不到了,但 DoH 服务商能看到你查的每一个域名,等于换了一个人来知道
- 第一次查询稍慢:要先建立一次加密连接,之后复用连接,日常使用感觉不到
怎么开启 DoH
浏览器(只影响这个浏览器)
- Chrome:
设置 → 隐私和安全 → 安全 → 使用安全 DNS,选「自定义」,填上面表里的 DoH 地址 - Edge:
设置 → 隐私、搜索和服务 → 安全性 → 使用安全 DNS - Firefox:
设置 → 隐私与安全 → 基于 HTTPS 的 DNS
Windows 11(影响整台电脑)
设置 → 网络和 Internet → WLAN 或以太网 → 硬件属性 → DNS 服务器分配 → 编辑,改成「手动」,填首选 DNS,再把「DNS over HTTPS」改为开启。Windows 只自动认得自带列表里的几家(比如 1.1.1.1、8.8.8.8),国内服务器要先用管理员身份执行一条命令登记:
netsh dns add encryption server=223.5.5.5 dohtemplate=https://dns.alidns.com/dns-query
安卓(用的是 DoT)
安卓 9 以后的「私人 DNS」就是 DoT:设置 → 网络和互联网 → 私人 DNS,选「私人 DNS 提供商主机名」,填 dns.alidns.com 或 dot.pub。不同品牌菜单位置不同,可以在设置里搜「私人 DNS」。
iPhone
iOS 没有现成的开关,需要安装一个 DNS 描述文件,或者用支持加密 DNS 的 App。iPhone 设置里出现的配置和 VPN 开关是怎么回事,见 苹果手机VPN是什么。
用了代理之后还要开 DoH 吗
一般不用另外开。代理客户端通常会把要走代理的域名交给境外解析,本地不做真实查询。浏览器或系统再开一层 DoH,反而可能绕过客户端的分流规则,让查询直接从本地发出去,出现 DNS 泄漏。怎么检查有没有泄漏,见 IP泄漏性能测试。
我们的电脑端是这样分工的:国内域名用阿里 DNS(223.5.5.5)解析,走的是普通 UDP,没有加密;其余域名经代理用 DoT 查询 8.8.8.8。国内域名的查询是明文的,运营商能看到你查了哪些国内网站,这样做是为了国内网站打开更快。这一步由客户端自己发出,不读系统的 DNS 设置,所以在系统里另开 DoH 也改变不了它。
常见问题
DoH 是什么?
DNS over HTTPS,把 DNS 查询装进 HTTPS 里发送,查询内容被加密,路上的人看不到也改不了。
DNS over HTTPS 有什么缺点?
单位的 DNS 管控会失效,可能和内网域名冲突,查询集中到 DoH 服务商手里,第一次查询会稍慢一点。它也不隐藏你正在访问哪个网站。
DoH 和 DoT 有什么区别?
加密强度一样。DoH 走 443 端口,和网页流量混在一起,不容易被单独拦截;DoT 走 853 专用端口,容易识别。安卓的「私人 DNS」用的是 DoT。
DoH 用哪个服务器好?
在国内防劫持、防偷看,用阿里 https://dns.alidns.com/dns-query 或腾讯 https://doh.pub/dns-query。境外的 Cloudflare、Google 在国内直连经常连不上。
iPhone 怎么设置 DNS over HTTPS?
iOS 没有现成开关,要安装 DNS 描述文件,或者用支持加密 DNS 的 App。