乐闻世界logo
搜索文章和话题

DNS over HTTPS (DoH) 和 DNS over TLS (DoT) 有什么区别

3月7日 12:07

DoH 和 DoT 概述

DNS over HTTPS (DoH)DNS over TLS (DoT) 都是为了解决传统 DNS 的安全问题而设计的加密 DNS 协议。它们通过加密 DNS 查询和响应,防止中间人攻击、窃听和 DNS 劫持。

为什么需要加密 DNS

传统 DNS 的安全问题

shell
┌─────────┐ 明文 UDP 53 ┌─────────┐ │ 客户端 │ ◄──────────────────► │ DNS 服务器│ └─────────┘ └─────────┘ ↑ 中间人可以窃听和篡改

风险

  • DNS 查询被窃听,暴露用户访问的网站
  • DNS 响应被篡改,导致访问钓鱼网站
  • ISP 可以记录和分析用户的 DNS 查询

DNS over TLS (DoT)

工作原理

DoT 使用 TLS 协议 加密 DNS 查询,在标准 DNS 协议之上添加 TLS 加密层。

shell
┌─────────┐ TLS 加密隧道 ┌─────────┐ │ 客户端 │ ◄──────────────────► │ DoT 服务器│ │ │ 端口 853 │ │ └─────────┘ └─────────┘

协议栈

shell
应用层: DNS 查询/响应 传输层: TLS 加密 网络层: TCP

技术特点

特性说明
传输协议TCP
端口853(专用端口)
加密方式TLS 1.2 或 TLS 1.3
证书验证需要验证服务器证书

通信流程

shell
1. 客户端与 DoT 服务器建立 TCP 连接(端口 8532. 进行 TLS 握手,协商加密参数 3. 验证服务器证书 4. 在加密隧道中发送 DNS 查询 5. 接收加密的 DNS 响应

配置示例

systemd-resolved 配置:

ini
[Resolve] DNS=8.8.8.8 8.8.4.4 DNSOverTLS=yes

Android 配置(Private DNS):

shell
专用 DNS 提供商主机名: dns.google

DNS over HTTPS (DoH)

工作原理

DoH 将 DNS 查询封装在 HTTPS 请求 中,使用标准的 HTTP/2 协议传输。

shell
┌─────────┐ HTTPS 请求/响应 ┌─────────┐ │ 客户端 │ ◄──────────────────► │ DoH 服务器│ │ │ 端口 443 │ │ └─────────┘ └─────────┘

协议栈

shell
应用层: DNS 消息(封装在 HTTP body 中) 传输层: HTTP/2 安全层: TLS 1.2/1.3 网络层: TCP

技术特点

特性说明
传输协议HTTP/2 over TLS
端口443(与 HTTPS 相同)
请求方法GET 或 POST
内容类型application/dns-message

通信流程

shell
1. 客户端与 DoH 服务器建立 HTTPS 连接(端口 4432. 将 DNS 查询编码为 DNS 消息格式 3. 通过 HTTP POST 或 GET 发送请求 4. 服务器返回包含 DNS 响应的 HTTP 响应 5. 客户端解析 HTTP body 中的 DNS 响应

请求示例

POST 请求:

http
POST /dns-query HTTP/1.1 Host: cloudflare-dns.com Content-Type: application/dns-message Content-Length: 33 <binary DNS query message>

响应:

http
HTTP/1.1 200 OK Content-Type: application/dns-message Content-Length: 65 <binary DNS response message>

配置示例

Firefox 配置:

shell
about:config network.trr.mode = 2 network.trr.uri = https://cloudflare-dns.com/dns-query

Chrome 配置:

shell
设置 → 隐私和安全 → 安全 → 使用安全 DNS 选择: Cloudflare (1.1.1.1)

DoH vs DoT 详细对比

对比项DoTDoH
协议层传输层(TLS)应用层(HTTPS)
端口853(专用)443(与 HTTPS 共享)
流量特征容易被识别为 DNS 流量与正常 HTTPS 流量混合
部署难度较简单需要 HTTP 服务器支持
性能略优(协议开销小)略差(HTTP 开销)
防火墙穿透可能被企业防火墙阻止难以被阻止(与 HTTPS 相同)
日志记录专门的 DNS 日志混合在 Web 访问日志中

各自的优缺点

DoT 的优点

协议简单:直接在 DNS 上添加 TLS 层 ✅ 性能较好:协议开销小,延迟低 ✅ 专用端口:清晰的流量划分 ✅ 易于监控:网络管理员可以区分 DNS 流量

DoT 的缺点

易被识别:专用端口 853 容易被防火墙阻止 ❌ 隐私性较差:ISP 可以知道你在使用加密 DNS ❌ 企业环境受限:可能被企业安全策略阻止

DoH 的优点

隐蔽性强:流量与正常 HTTPS 无法区分 ✅ 防火墙友好:端口 443 通常开放 ✅ 易于部署:复用现有 Web 基础设施 ✅ 隐私保护:ISP 无法区分 DNS 查询和 Web 访问

DoH 的缺点

协议复杂:需要 HTTP/2 协议栈 ❌ 性能开销:HTTP 头部增加额外开销 ❌ 难以监控:企业网络管理员无法审计 DNS 查询 ❌ 日志混合:DNS 日志与 Web 日志混合

主流 DoH/DoT 服务商

服务商DoH 地址DoT 地址特点
Cloudflarehttps://cloudflare-dns.com/dns-query1.1.1.1:853速度快,隐私优先
Googlehttps://dns.google/dns-query8.8.8.8:853稳定可靠
Quad9https://dns.quad9.net/dns-query9.9.9.9:853恶意域名拦截
阿里https://dns.alidns.com/dns-query223.5.5.5:853国内速度快
DNSPodhttps://doh.pub/dns-query-腾讯旗下

如何选择 DoH 还是 DoT

选择 DoT 的场景

  • 企业网络环境,需要监控 DNS 流量
  • 追求最佳性能,减少协议开销
  • 网络管理员需要审计 DNS 查询
  • 防火墙策略允许 853 端口

选择 DoH 的场景

  • 公共 WiFi 等不可信网络
  • 需要绕过 DNS 审查或劫持
  • 追求最高隐私保护
  • 企业防火墙阻止了 853 端口

实际建议

shell
个人用户(隐私优先): DoH 企业用户(管理需求): DoT 移动设备(网络多变): DoH 服务器环境(性能优先): DoT

面试常见问题

Q: DoH 和 HTTPS 有什么区别?

A: DoH 是使用 HTTPS 作为传输层来传输 DNS 消息。普通 HTTPS 传输的是 Web 内容(HTML、JS 等),而 DoH 传输的是 DNS 查询和响应消息(二进制格式)。

Q: 为什么 DoH 比 DoT 更难被防火墙阻止?

A: 因为 DoH 使用标准的 HTTPS 端口 443,流量特征与普通 Web 访问完全相同。而 DoT 使用专用端口 853,容易被识别和阻止。

Q: DoH/DoT 能完全防止 DNS 劫持吗?

A: 能防止传输过程中的劫持和窃听,但不能防止以下情况:

  • 客户端被恶意软件篡改配置
  • DoH/DoT 服务器本身被攻击
  • 本地 hosts 文件被修改

总结

方面DoTDoH
核心协议TLSHTTPS
最佳场景企业网络、性能优先隐私保护、绕过审查
部署难度
隐私保护
性能
防火墙穿透

趋势:目前 DoH 更受浏览器厂商青睐(Firefox、Chrome 默认支持),而 DoT 更受系统级和网络设备厂商支持。两者都是加密 DNS 的有效方案,选择取决于具体场景需求。

标签:DNS