跳转到内容
搜索文档

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.11.0.0.1 以及对应的 IPv6 地址(2606:4700:4700::11112606: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。

这篇文档对您有帮助吗?