DNS over HTTPS 是把域名解析的查询和应答装进 HTTPS 里传输的做法,让中间的人看不到你访问了哪些域名。传统域名解析是明文的,网络运营方和旁观者都能看到。它和 DNSSEC 解决的不是同一件事。
传统的域名解析用明文传输,查询和应答走网络时,中间的人可以看到你查了哪些域名,也可以篡改应答。第 71 期介绍的 DNSSEC 能给解析结果加上签名、验证数据有没有被改动,但它不加密内容,查询仍是明文。DNS over HTTPS(DoH)从另一个方向解决这个问题:把 DNS 消息封进 HTTPS 里传输,用 HTTPS 的加密保护查询和应答。
这样一来,查询内容对中间的人不可见,应答也无法被中途篡改;而且 DoH 走的是 HTTPS 常用的 443 端口,DNS 流量混在普通网页流量里,不容易被单独识别和拦截。它由 RFC 8484 在 2018 年确定为标准。谷歌和 Mozilla 在 2018 年开始测试,Firefox 从 2020 年起在美国默认启用 DoH。
DoH 和 DNSSEC 作用不同,可以一起用:DoH 保护传输过程不被偷看和改动,DNSSEC 保证数据本身来自权威来源、未被伪造。加密也带来新的争议——它让网络运营方和企业的过滤、家长控制等功能难以生效,因此 DoH 的推广一直伴随讨论。另一个思路是把查询与来源分开,让解析服务方也不知道是谁在查。