DNS-over-TLS

简介

传统的 DNS 查询和响应通过 UDP 或 TCP 发送,无需加密。这容易受到窃听和欺骗(包括基于 DNS 的互联网过滤)。递归解析器对客户端的响应最容易遭到意外更改或恶意更改,而递归解析器和权威域名服务器之间的通信通常包含额外的保护

为了解决这些问题,Google 公共 DNS 通过 RFC 7858 的规定,通过 TLS 加密的 TCP 连接提供 DNS 解析。DNS-over-TLS 可加强客户端和解析器之间的隐私保护和安全性。这对 DNSSEC 进行补充,并保护经过 DNSSEC 验证的结果,以防止在到达客户端时被修改或欺骗。

工作原理

客户端系统可以将 DNS-over-TLS 与两种配置文件中的一个配置文件搭配使用:严格机会性隐私。使用严格的隐私配置文件时,用户可为 DNS-over-TLS 服务配置 DNS 服务器名称(RFC 8310 中的身份验证域名),并且客户端必须能够在端口 853 上创建到 DNS 服务器的安全 TLS 连接。未能建立安全连接属于硬错误,会导致客户端没有 DNS 服务。

使用机会性隐私配置文件时,DNS 服务器 IP 地址可以由用户直接配置,也可以从本地网络获取(使用 DHCP 或其他方式)。客户端解析器会尝试在端口 853 上与指定 DNS 服务器建立安全连接。如果建立安全连接,就可以保护用户的查询,避免路径上的被动观察者受到隐私保护。由于客户端无法验证服务器的真实性,因此不受活跃攻击者的保护。如果客户端无法在端口 853 上建立安全连接,则回退到通过 UDP 或 TCP 在标准 DNS 端口 53 上与 DNS 服务器进行通信,而没有任何安全性或私密性。机会性隐私功能的使用旨在支持进一步部署加强隐私保护,以期广泛采用严格的隐私配置文件。

使用严格的隐私配置文件时,桩解析器会按照以下步骤建立 DNS-over-TLS 连接。

  1. 桩解析器配置了 DNS-over-TLS 解析器名称 dns.google
  2. 桩解析器使用本地 DNS 解析器获取 dns.google 的 IP 地址。
  3. 桩解析器与上述 IP 地址的端口 853 建立 TCP 连接。
  4. 存根解析器会启动与 Google 公共 DNS 解析器的 TLS 握手。
  5. Google 公共 DNS 服务器会返回其 TLS 证书以及完整的 TLS 证书链(一直到可信根证书)。
  6. 桩解析器根据提供的证书验证服务器的身份。
    • 如果无法验证身份,DNS 名称解析会失败,并且桩解析器会返回错误。
  7. 建立 TLS 连接后,桩解析器会在 Google 公共 DNS 服务器之间建立安全通信路径。
  8. 现在,桩解析器可以通过连接发送 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) 或更高版本的设备上对其进行配置,请参阅instructions

仅支持 IPv6 的 Google 公共 DNS64 服务也支持 DNS-over-TLS。请注意,不建议为将要连接到多个网络的移动设备配置 DNS64,因为 DNS64 仅在 IPv6 可用时有效。