简介
传统的 DNS 查询和响应在未加密的情况下通过 UDP 或 TCP 发送。这样做容易受到窃听和仿冒(包括基于 DNS 的互联网过滤)。递归解析器对客户端的响应最容易受到意外或恶意更改的侵害,而递归解析器与权威域名服务器之间的通信通常包含额外的保护。
为了解决这些问题,Google 公共 DNS 通过 RFC 7858 指定的 TLS 加密 TCP 连接提供 DNS 解析。基于 TLS 的 DNS 可提升客户端和解析器之间的隐私性和安全性。这对 DNSSEC 起到了补充作用,并保护经过 DNSSEC 验证的结果在发送到客户端的过程中不会被修改或仿冒。
工作原理
客户端系统可以将 DNS-over-TLS 与以下两个配置文件之一搭配使用:严格或机会性隐私。通过严格的隐私保护配置文件,用户可以为 DNS-over-TLS 服务配置 DNS 服务器名称(RFC 8310 中的身份验证域名),并且客户端必须能够在端口 853 上创建到 DNS 服务器的安全连接。未能建立安全连接是一项严重错误,并且会导致客户端无法使用 DNS 服务。
利用机会性隐私配置文件,用户可以直接配置 DNS 服务器 IP 地址,也可以从本地网络(使用 DHCP 或一些其他方式)获取 DNS 服务器 IP 地址。客户端解析器会尝试在端口 853 上与指定的 DNS 服务器建立安全连接。如果建立了安全连接,则可以保护用户在路径上被动观察者进行的查询。由于客户端不验证服务器的真实性,因此未受到活跃攻击者的保护。如果客户端无法在端口 853 上建立安全连接,则会回退为使用不含 UDP 或 TCP 的标准 DNS 端口 53 与 DNS 服务器通信,且不保证安全性或隐私性。机会性隐私的使用旨在支持逐步部署增强的隐私权,以便广泛采用严格隐私规范。
使用严格的隐私配置文件时,桩解析器会按照以下步骤建立 DNS-over-TLS 连接。
- 桩解析器使用 DNS-over-TLS 解析器名称
dns.google
。 - 桩解析器使用本地 DNS 解析器获取
dns.google
的 IP 地址。 - 桩解析器通过 IP 地址与端口 853 建立 TCP 连接。
- 桩解析器通过 Google 公共 DNS 解析器发起 TLS 握手。
- Google 公共 DNS 服务器会返回其 TLS 证书以及 TLS 证书的完整链(一直到受信任的根证书)。
- 桩解析器根据提供的证书验证服务器的身份。
- 如果无法验证身份,DNS 名称解析将失败,桩解析器会返回错误。
- 建立 TLS 连接后,桩解析器会在与 Google 公共 DNS 服务器之间建立安全通信路径。
- 现在,桩解析器可以发送 DNS 查询并通过连接接收响应。
使用机会性隐私配置文件时,客户端会先尝试创建与服务器的安全 TLS 连接。这与上文类似,只不过有一个重要区别 - 客户端不执行证书验证。这意味着服务器的身份不受信任。如果端口 853 到服务器的 TLS 连接无法建立,则存根解析器会回退到通过端口 53 与 DNS 服务器通信。
隐私权
我们的隐私权政策适用于 DNS-over-TLS 服务。
2019 年 6 月 27 日,我们已为 DNS-over-TLS 服务重新启用 EDNS 客户端子网 (ECS)。ECS 在服务推出时已被停用。
标准支持
Google 公共 DNS 根据 RFC 7858 实现 DNS-over-TLS。 此外,我们支持以下建议来提供高质量的低延迟 DNS 服务。
开始使用
如需了解如何在搭载 Android 9 (Pie) 或更高版本的设备上对其进行配置,请参阅说明。
仅支持 IPv6 的 Google 公共 DNS64 服务也支持 DNS-over-TLS。请注意,不建议为将连接到多个网络的移动设备配置 DNS64,因为 DNS64 仅在 IPv6 可用时有效。