最近,Google 正式发布了 Android 9 Pie,其包含与数字健康、安全性和隐私相关的一系列新功能。如果您在测试版或更新后的版本中使用过网络设置,可能会注意到Android 现在支持一种新的私人 DNS 模式。
这项新功能简化了在 Android 上配置自定义安全 DNS 解析器的过程。设备与您访问的网站之间的所有人都无法窥探您的 DNS 查询,因为它们将会被加密。为之提供支持的协议是 TLS,正如您通过 HTTPS 访问网站时在地址栏中看到绿色小锁图标。同样的技术也被用来加密 DNS 查询,确保它们不会被篡改,也无法被 ISP、移动运营商以及您与 DNS 解析器之间网络路径上的任何其他人所看到。这些新型安全协议称为 DNS over HTTPS 和 DNS over TLS。
配置 1.1.1.1
Android Pie 仅支持 DNS over TLS。在设备上启用此功能:
前往 “设置” → “网络和互联网” → “高级” → “私人 DNS”。
选择 “私人 DNS 提供商主机名” 选项。
输入 1dot1dot1dot1.cloudflare-dns.com,再点击 “保存”。
访问 1.1.1.1/help(或 1.0.0.1/help),以验证“使用 DNS over TLS(DoT)”显示为“是”。
大功告成!
为什么要使用私人 DNS?
DNS over HTTPS 和 DNS 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。