doh/dot和ech推荐
DoH、DoT 与 ECH 详解:现代互联网隐私指南
在追求更安全、更私密的互联网的道路上,涌现了几种新技术,用于加密传统上以明文形式发送的流量。其中最重要的是 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 Encrypted Client Hello (ECH)。本指南将解释它们是什么、它们如何工作,以及你如何开始使用它们。
第一部分:加密互联网的“电话簿” - DoH 与 DoT
问题所在:明文 DNS
你可以将域名系统 (DNS) 想象成互联网的“电话簿”。当你在浏览器中输入 google.com 时,你的设备会向 DNS 服务器发送一个查询,请求其对应的 IP 地址(例如 172.217.160.142)。
传统上,这个查询是以明文形式发送的。这意味着在你和 DNS 服务器之间的任何人——你的 ISP、网络管理员,或公共 Wi-Fi 上的恶意行为者——都能看到你访问的每一个网站。这些数据可以被收集、出售,或用于审查和监视。
解决方案:DoH 和 DoT
DoH 和 DoT 通过加密你的 DNS 查询来解决这个问题,使其对第三方不可读。
DNS over TLS (DoT)
- 工作原理: DoT 将你的 DNS 查询封装在一个安全的 TLS (传输层安全) 隧道中,这与用于保护 HTTPS 网站的技术相同。它运行在一个专用端口上:853。
- 优点: 它是一个标准化的、高效的协议,专为加密 DNS 而设计。
- 缺点: 由于使用专用端口,它很容易被识别,并可能被希望限制 DNS 流量的网络防火墙阻止。
DNS over HTTPS (DoH)
- 工作原理: DoH 将 DNS 查询打包成常规的 HTTPS 流量,并通过 Web 流量的标准端口 443 将其发送到支持 DoH 的 DNS 服务器。
- 优点: 它几乎无法与普通的加密 Web 流量区分开来。这使得它极难被阻止,除非同时阻止大部分互联网,从而提供了强大的抗审查能力。
- 缺点: 一些网络管理员认为它可能会绕过本地网络策略,因为 DNS 流量被隐藏在普通的 Web 流量中。
DoH vs. DoT: 你应该使用哪一个?
对于普通用户来说,DoH 通常是首选,因为它具有更强的抗审查能力。它能无缝工作并融入背景流量中。DoT 也很出色,但更容易被阻止。
如何启用 DoH/DoT
你可以在操作系统级别或浏览器中启用加密 DNS。
1. 在你的浏览器中 (因其简单性而推荐)
- Google Chrome: 前往
设置->隐私和安全->安全。启用使用安全 DNS并选择一个提供商 (如 Cloudflare, Google, 或 Quad9)。 - Mozilla Firefox: 前往
设置->隐私与安全,向下滚动到启用基于 HTTPS 的 DNS。选择一个提供商。
2. 在操作系统级别
- Android (9+): 前往
设置->网络和互联网->私密 DNS。选择私密 DNS 提供商主机名并输入提供商的主机名 (例如, Cloudflare DoT 的1dot1dot1dot1.cloudflare-dns.com)。 - Windows 11: 前往
设置->网络和 Internet->以太网或WLAN->DNS 服务器分配。点击编辑,选择手动,并打开IPv4。输入支持 DoH 的解析器 IP,然后在下拉菜单中选择仅加密 (基于 HTTPS 的 DNS)。 - iOS 14+ / macOS 11+: 需要从 Cloudflare 或 NextDNS 等提供商处安装配置文件。
第二部分:下一个前沿 - Encrypted Client Hello (ECH)
遗留问题:SNI 泄露
即使使用了 DoH/DoT,仍然有一小部分关键信息未被加密:服务器名称指示 (Server Name Indication, SNI)。
当你的浏览器连接到一个安全网站 (https://example.com) 时,它会使用 TLS。在 TLS 握手的第一个消息(“Client Hello”)中,浏览器必须说明它想连接到哪个网站。这就是 SNI。这就像寄一封加密的信,却把收件人的名字写在信封外面。
你的 ISP 或网络观察者无法看到你通信的内容,但由于 SNI 泄露,他们仍然知道你正在连接到哪个网站。
解决方案:Encrypted Client Hello (ECH)
ECH 是一项突破性技术,旨在通过加密 SNI 本身来填补这最后一个隐私漏洞。
- 工作原理: 这是一个巧妙的两步过程。
- 你的浏览器首先通过一个特殊的 DNS 记录(
HTTPS记录)获取服务器的公钥。这个过程通过 DoH/DoT 安全地完成。 - 然后它构造两个 “Client Hello” 消息:
- 一个 Inner Hello: 包含真实的、敏感的 SNI (例如,
google.com)。这整个消息都使用服务器的公钥加密。 - 一个 Outer Hello: 包含一个通用的、不敏感的服务器名称 (例如,
cloudflare.com)。加密后的 Inner Hello 就藏在这个消息里面。
- 一个 Inner Hello: 包含真实的、敏感的 SNI (例如,
- 你的浏览器首先通过一个特殊的 DNS 记录(
对于外部观察者来说,这看起来就像你只是在连接到那个通用的外部服务器 (cloudflare.com)。而实际的服务器收到这个消息后,用它的私钥解密 Inner Hello,然后无缝地将你引导到正确的网站 (google.com)。
如何启用和测试 ECH
ECH 仍处于实验阶段,但已得到主流浏览器和 Cloudflare 等平台的支持。
1. 首先启用 DoH: ECH 要求在你的浏览器中启用 DoH。
2. 启用 ECH 标志
- Google Chrome: 导航到
chrome://flags/#encrypted-client-hello并将其设置为Enabled。 - Mozilla Firefox: 导航到
about:config。搜索network.dns.echconfig.enabled并将其设置为true。同时确保network.dns.use_https_for_https_rr为true。
3. 测试你的连接
启用 DoH 和 ECH 后,重启浏览器并访问 Cloudflare 的测试页面:https://www.cloudflare.com/ssl/encrypted-sni/。
点击 “Check My Browser”。如果一切正常,你应该会看到安全 DNS、TLS 1.3 和 Encrypted Client Hello (ECH) 的绿色对勾。
结论
通过将 DoH/DoT 与 ECH 相结合,我们可以实现前所未有的隐私和安全级别。你的浏览活动,从最初的域名查找到你连接的服务器,都将被屏蔽,免受窥探。虽然仍处于早期阶段,但这种组合代表了一个真正私密和开放的互联网的未来。
