← 1.1.1.1 (DNS-резолвер) / 1.1.1.1 / encryption
DNS поверх TLS
По умолчанию DNS-трафик передаётся через незашифрованное соединение. DNS через TLS (DoT) представляет собой один из способов отправки DNS-запросов через зашифрованное соединение. Cloudflare поддерживает DNS через TLS на стандартном порту 853 и соответствует RFC 7858 ↗.
DoT упаковывает стандартный DNS-трафик в TCP-соединение, зашифрованное с помощью TLS. Это не позволяет никому на пути между вашим устройством и резолвером читать или изменять ваши DNS-запросы.
Как это работает
Cloudflare поддерживает DNS через TLS (DoT) на 1.1.1.1, 1.0.0.1, и соответствующие адреса IPv6 (2606:4700:4700::1111 и 2606:4700:4700::1001) на порте 853. Если ваш клиент DoT не поддерживает IP-адреса, к эндпоинту DoT Cloudflare можно также обратиться по имени хоста через one.one.one.one.
Стаб-резолвер представляет собой клиентское программное обеспечение DNS на вашем устройстве, которое отправляет запросы DNS-резолверу. При использовании DoT стаб-резолвер подключается к резолверу по соединению TLS:
- Перед установкой соединения stub-резолвер DNS сохраняет отпечаток TLS-сертификата 1.1.1.1. Этот отпечаток представляет собой хеш SHA-256 в кодировке base64 от информации об открытом ключе сертификата, называемый пином Subject Public Key Info (SPKI). Stub-резолвер использует этот пин, чтобы убедиться, что подключается именно к подлинному серверу 1.1.1.1.
- Резолвер-заглушка DNS устанавливает TCP-соединение с
1.1.1.1:853. - Резолвер-заглушка DNS инициирует TLS-рукопожатие: в ходе этого процесса стороны согласовывают параметры шифрования, а клиент проверяет подлинность сервера.
- В ходе TLS-рукопожатия 1.1.1.1 предъявляет свой TLS-сертификат.
- После установления TLS-соединения DNS stub-резолвер может отправлять DNS-запросы по зашифрованному соединению, что предотвращает перехват и подмену данных.
- Все DNS-запросы, отправляемые через TLS-соединение, должны соответствовать требованиям передача DNS по TCP ↗.
Пример
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
DNS через TLS от Cloudflare поддерживает TLS 1.3 и TLS 1.2.