跳转到内容
搜索文档

DNS over TLS(DoT,DNS over TLS)

最后更新 查看 MarkdownAgent 设置

默认情况下,DNS 是通过明文连接发送的。DNS over TLS (DoT) 是一种在加密连接上发送 DNS 查询的方法。Cloudflare 在标准端口 853 上支持 DNS over TLS,并符合 RFC 7858 ↗。

DoT 将标准的 DNS 流量包裹在 TLS 加密的 TCP 连接中。这可以防止位于您的设备和解析器之间的任何人读取或修改您的 DNS 查询。

工作原理

Cloudflare 在端口 853 上的 1.1.1.1、1.0.0.1 以及对应的 IPv6 地址(2606:4700:4700::1111 和 2606:4700:4700::1001)上支持 DNS over TLS (DoT)。如果您的 DoT 客户端不支持 IP 地址,还可以通过主机名 one.one.one.one 访问 Cloudflare 的 DoT 端点。

存根解析器 (stub resolver) 是您设备上的 DNS 客户端软件,它向 DNS 解析器发送查询。使用 DoT 时,存根解析器通过 TLS 连接与解析器建立连接:

  1. 在连接之前,DNS 存根解析器会存储 1.1.1.1 的 TLS 证书指纹。该指纹是证书公钥信息的 base64 编码 SHA-256 哈希值,被称为主体公钥信息 (SPKI) 固定销 (pin)。存根解析器使用此 pin 来验证其连接的是真实的 1.1.1.1 服务器。
  2. DNS 存根解析器与 1.1.1.1:853 建立 TCP 连接。
  3. DNS 存根解析器发起 TLS 握手——在此过程中,双方就加密参数达成一致,且客户端验证服务器的身份。
  4. 在 TLS 握手中,1.1.1.1 出示其 TLS 证书。
  5. TLS 连接建立后,DNS 存根解析器即可在加密连接上发送 DNS,从而防止窃听和篡改。
  6. 在 TLS 连接上发送的所有 DNS 查询必须符合通过 TCP 发送 DNS ↗ 的规范。

示例

kdig -d @1.1.1.1 +tls-ca +tls-host=one.one.one.one example.com

;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 138 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=US,ST=California,L=San Francisco,O=Cloudflare\, Inc.,CN=cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: GP8Knf7qBae+aIfythytMbYnL+yowaWVeD6MoLHkVRg=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
;; DEBUG:      SHA-256 PIN: e0IRz5Tio3GA1Xs4fUVWmH1xHDiH2dMbVtCBSkOIdqM=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.3)-(ECDHE-X25519)-(ECDSA-SECP256R1-SHA256)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 3395
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1232 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; QUESTION SECTION:
;; example.com.        		IN	A

;; ANSWER SECTION:
example.com.        	75897	IN	A	93.184.216.34

;; Received 468 B
;; Time 2023-06-23 18:05:42 PDT
;; From 1.1.1.1@853(TCP) in 12.1 ms

支持的 TLS 版本

Cloudflare 的 DNS over TLS 支持 TLS 1.3 和 TLS 1.2。

这篇文档对您有帮助吗?