image2-1

最近,Google 正式发布了 Android 9 Pie,其包含与数字健康、安全性和隐私相关的一系列新功能。如果您在测试版或更新后的版本中使用过网络设置,可能会注意到Android 现在支持一种新的私人 DNS 模式。

这项新功能简化了在 Android 上配置自定义安全 DNS 解析器的过程。设备与您访问的网站之间的所有人都无法窥探您的 DNS 查询,因为它们将会被加密。为之提供支持的协议是 TLS,正如您通过 HTTPS 访问网站时在地址栏中看到绿色小锁图标。同样的技术也被用来加密 DNS 查询,确保它们不会被篡改,也无法被 ISP、移动运营商以及您与 DNS 解析器之间网络路径上的任何其他人所看到。这些新型安全协议称为 DNS over HTTPSDNS over TLS

配置 1.1.1.1

Android Pie 仅支持 DNS over TLS。在设备上启用此功能:

  1. 前往 “设置” → “网络和互联网” → “高级” → “私人 DNS”。
  2. 选择 “私人 DNS 提供商主机名” 选项。
  3. 输入 1dot1dot1dot1.cloudflare-dns.com,再点击 “保存”。
  4. 访问 1.1.1.1/help(或 1.0.0.1/help),以验证“使用 DNS over TLS(DoT)”显示为“是”。

大功告成!

Android Pie Private DNS Mode screenshot

为什么要使用私人 DNS?

DNS over HTTPSDNS over TLS 如何融入于如今的互联网隐私格局?

TLS 协议可以加密通过不受信任的通信渠道传输的流量,例如当您在咖啡馆的无线网络上浏览电子邮件时。即便使用 TLS,也仍然无法知道您与 DNS 服务器的连接是否已被劫持或遭到第三方窥探。这一点很重要,因为恶意行为者可能会对公共场所的开放 WiFi 热点进行配置,使它们用伪造的记录响应 DNS 查询,从而劫持与常用电子邮件提供商和网上银行的连接。DNSSEC 通过对响应进行签名来解决保真问题,这样篡改可以被检测到,但消息的正文仍可被线路上的其他人读取。

DNS over HTTPS / TLS 解决了这个问题。这两种新协议能确保设备与解析器之前的通信得到加密,与我们对 HTTPS 流量的期望别无二致。

然而,这一连串的事件当中还有最后一个不安全的步骤:设备与服务器上的特定主机名之间进行初始 TLS 协商期间会显露 SNI(服务器名称指示)。请求的主机名未得到加密,因此第三方仍然能够看到您访问的网站。为了彻底保护网络浏览活动,最后一步是对 SNI 进行加密,这也是 Cloudflare 正在联合其他组织一起制定和推广的一项标准。

IPv6 世界中的 DNS

您或许已发现,私人 DNS 字段不接受 IP 地址(例如 1.1.1.1),必须在其中输入主机名(例如 1dot1dot1dot1.cloudflare-dns.com)。所以我们正在研究为解析器部署一个方便记忆的地址,同时也将继续支持 1.1.1.1、1.0.0.1 和 1dot1dot1dot1.cloudflare-dns.com。

Google 之所以要求在这个字段中提供主机名,是因为移动运营商正在适应 IPv4 与 IPv6 共存的双栈世界。公司采用 IPv6 的速度远比普遍预期的快,美国的所有主要移动运营商都已支持,包括已经彻底采用 IPv6 的 T-Mobile。对于拥有 大约 260 亿台连入互联网的设备(远超 43 亿个 IPv4 地址)的世界来说,这算是一个好消息。而且,高瞻远瞩的 Apple 已采取行动,要求所有新 iOS 应用必须支持单堆栈 IPv6 网络。

不过,我们生活的世界中仍然存在 IPv4 地址,因此手机制造商和运营商必须在架构其系统时考虑向后兼容性。目前,iOS 和 Android 都同时请求 A 和 AAAA DNS 记录,这两种记录分别包含与版本 4 和版本 6 格式的域名相对应的 IP 地址。自己试一下:

$ dig A +short 1dot1dot1dot1.cloudflare-dns.com
1.0.0.1
1.1.1.1

$ dig AAAA +short 1dot1dot1dot1.cloudflare-dns.com
2606:4700:4700::1001
2606:4700:4700::1111

若要通过仅限 IPv6 的网络与只有 IPv4 地址的设备进行通信,DNS 解析器必须使用 DNS64 将 IPv4 地址转换为 IPv6 地址。这样一来,对转换后 IP 地址的请求将经由网络运营商提供的 NAT64 转换服务,而这对于设备和 Web 服务器都是完全透明的。

若要进一步了解此过程,请访问 APNIC