awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

Зашифрованный DNS: DoH, DoT, DoQ и отравление кеша

Суть Почему открытый UDP/53 — поверхность для слежки и атак, как DoH/DoT/DoQ решают эту проблему, что утекает через EDNS Client Subnet, и как атака Камински и SAD DNS сформировали современные средства защиты.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 18 min

Традиционный DNS работает через UDP порт 53 в открытом виде. Каждый посещаемый вами домен виден вашему провайдеру, каждому роутеру кофейни между вами и резолвером, и любому государственному перехватчику на линии. Компания, строящая продукт с фокусом на приватность, не может позволить DNS-трафику своих пользователей раскрывать их привычки просмотра. И отдельно: атакующий, способный опередить авторитативный сервер, может отравить кеш и перенаправить пользователей на вредоносный IP — риск, предшествующий HTTPS и дважды частично возрождённый после первоначального закрытия.

Почему открытый DNS — проблема

Традиционный DNS отправляет каждый запрос в открытом виде через UDP порт 53. Перехватчик в сети — ваш провайдер, общий Wi-Fi роутер, государственный тап — видит каждый запрашиваемый домен. Содержимое страницы защищено HTTPS, но сам lookup hostname’а полностью виден. DNS также не аутентифицирован на транспортном уровне: ответ можно подделать, если атакующий способен угадать или наблюдать transaction ID и source port.

Сравнение DoH, DoT и DoQ

ПротоколПортТранспортУстойчивость к блокировкеПримечания
DoH (RFC 8484)443TLS поверх TCP/QUICВысокая — неотличим от HTTPSПо умолчанию в браузерах; HoL-блокировка HTTP/2 на больших пакетах
DoT (RFC 7858)853TLS поверх TCPНизкая — порт 853 блокируется одним правиломЧистый протокол; предсказуем для блокировки
DoQ (RFC 9250)853QUIC (TLS 1.3)СредняяЗапросы по-потоково; миграция соединений; 0-RTT
Распространение зашифрованного DNS (2026)
Доля DoH у Firefox (США)
выше 85%
Активных DoH-резолверов глобально
931+
Задержка DoH (типичная)
12–18 мс
Задержка DoT (типичная)
20–25 мс
Задержка DoQ (APNIC 2026)
12–15 мс (на 40% ниже DoT)
Топ-100К сайтов с HTTPS-записями
4,2%

Почему DoH превосходит DoT в борьбе с цензурой

DoT работает на порту 853. Брандмауэр цензора может добавить одно правило для блокировки всего трафика на порт 853, и все DoT-клиенты молча сломаются. DoH работает на порту 443 вместе с обычным HTTPS-трафиком — с точки зрения сети он неотличим от любого HTTPS-соединения. Блокировка порта 443 останавливает весь HTTPS — экономически неприемлемо. Чтобы заблокировать DoH конкретно, цензор вынужден перечислять и блокировать IP-адреса резолвера — игра в «убей крота», которую пользователь легко обходит, указав другой DoH-эндпоинт.

Та же особенность обходит корпоративную фильтрацию DNS. Корпоративные сети используют DNS-контроль для блокировки вредоносных или нарушающих политику доменов. Если браузеры обходят корпоративный резолвер через DoH, контроль ломается. Предприятия публикуют политику (через MDM или групповую политику), отключающую DoH в браузере и принудительно направляющую трафик через локальный резолвер.

Проследи
1/5

Проследите соединение клиента через DoH с https://dns.cloudflare.com/dns-query.

1
Step 1 of 5
Клиент настроен на DoH. Первый шаг?
2
Locked
TLS-рукопожатие завершено. Что клиент отправляет далее?
3
Locked
Сервер ответил. Что может наблюдать перехватчик в сети?
4
Locked
Что произойдёт, если DoH-сервер медленный или недоступен?
5
Locked
Чем DoH отличается от DoT по устойчивости к цензуре?

Особенности DoQ (RFC 9250)

DNS over QUIC использует QUIC-потоки: каждый запрос — отдельный поток без блокировки начала очереди (проблема DoH поверх HTTP/2 при зависании одного запроса). Миграция QUIC-соединений позволяет одной DoQ-сессии пережить переключение Wi-Fi → LTE без повторного рукопожатия — важно для мобильных клиентов. Возобновление 0-RTT отправляет DNS-запрос внутри ClientHello при наличии кешированного session ticket, экономя один RTT.

RFC 9250 предупреждает: данные 0-RTT воспроизводимы — атакующий, перехвативший 0-RTT DoQ-запрос, мог бы воспроизвести его для временной корреляции пользователя. Смягчение: одноразовые resume-токены, новые QUIC-соединения после смены местоположения. В продакшене: Quad9, AdGuard и NextDNS поставляют DoQ; Cloudflare, Quad9 ставят dnsdist или doqd перед BIND/Unbound.

EDNS Client Subnet (ECS): гео-маршрутизация vs приватность

ECS (RFC 7871) позволяет рекурсивному резолверу прикреплять IP-префикс клиента (обычно /24 IPv4 или /56 IPv6) к вышестоящим запросам. Авторитативные серверы CDN используют префикс для возврата ближайшего edge-IP. Без ECS авторитативный видит только IP резолвера — который может находиться за сотни километров от реального пользователя.

Цена за приватность реальна: каждый авторитативный сервер в вышестоящей цепочке теперь узнаёт примерно, из какого района пользователь обращается к домену. Cloudflare 1.1.1.1 отключает ECS по умолчанию именно по этой причине. Google 8.8.8.8 включает его по умолчанию. Использование DoH-резолвера, который затем пересылает ECS вышестоящим, сводит на нет большую часть приватности от шифрования транспорта.

Отравление кеша: Камински, SAD DNS и средства защиты

Камински (2008). Изначально DNS использовал 16-битный transaction ID плюс фиксированный source UDP-порт. Атакующий, инициирующий множество запросов к случайным поддоменам целевой зоны, мог опередить легитимный авторитативный ответ и внедрить поддельную запись — если поддельный ответ приходил первым с правильным 16-битным ID (в худшем случае 65536 попыток, на практике гораздо меньше). Патч: RFC 5452 обязывает рандомизировать source UDP-порт (~65K портов × 65K ID = ~4 млрд комбинаций).

0x20-кодирование. Смешивает прописные и строчные буквы в QNAME; нормально работающие авторитативные серверы возвращают точный регистр. Атакующий, не наблюдающий запрос, не знает паттерна регистра — добавляет ~30 бит эффективной энтропии.

SAD DNS (2020). Возродил угрозу: глобальный счётчик ограничения частоты ICMP в Linux наблюдаем с другой машины. Внешний атакующий может отправлять поддельные ICMP-пакеты об ошибках для вывода source-порта, используемого резолвером для данного запроса — резко сужая пространство поиска из 4 млрд комбинаций. Linux смягчил это, рандомизировав состояние ограничения ICMP по сокету. Практическая защита: DNSSEC + DoH/DoT — как только канал аутентифицирован и зашифрован, поверхность атаки для классической подмены исчезает.

Выбери лучший вариант

Privacy-ориентированное мобильное приложение выбирает зашифрованный DNS-протокол. Сетевые условия меняются; блокировка портов возможна.

Викторина

Почему DoH лучше DoT противостоит сетевой блокировке доменов?

Почему это работает

EDNS Cookies (RFC 7873). Лёгкий механизм аутентификации для каждой пары: клиент и сервер хранят 64-битный секрет для вычисления cookie, отправляемого в каждом запросе и ответе. Cookies ничего не шифруют, но существенно затрудняют подмену произвольных off-path source-IP — атакующий, не наблюдающий обмен, не может вычислить валидный cookie. EDNS Cookies на порядки снижают атаки усиления DNS-рефлексией при включении на уровне резолвера. BIND и Knot Resolver включают их по умолчанию. Некоторые firewall-миддлбоксы удаляют опцию EDNS Cookie и молча ломают защиту.

Anycast-маршрутизация резолверов

Публичные резолверы (1.1.1.1, 8.8.8.8, 9.9.9.9) анонсируют один IP-префикс из десятков или сотен точек присутствия по всему миру через BGP anycast. BGP выбирает кратчайший AS-путь от каждого провайдера до ближайшей точки. У Cloudflare более 100 PoP, у Google ~40, у Quad9 ~150. Ловушка: если ваш провайдер пирится с оператором только в удалённом городе, ваш трафик к «ближайшей» точке проходит через тот город — типичный штраф 30 мс. Диагностика: dig +short @1.1.1.1 whoami.cloudflare TXT CH — покажет, какая точка ответила.

Вспомните перед уходом
  1. 01
    Инженер утверждает, что EDNS Client Subnet обязателен для точной гео-маршрутизации CDN. В чём ошибка этого утверждения?
  2. 02
    Опишите атаку Камински и две защиты, закрывшие её.
  3. 03
    В чём разница между тем, что обеспечивают DoH/DoT, и тем, что обеспечивает DNSSEC?
Итог

Открытый DNS через UDP порт 53 раскрывает каждый DNS-запрос провайдерам и наблюдателям в сети. DoH (порт 443) скрывает запросы внутри HTTPS, делая их неотличимыми от обычного веб-трафика и устойчивыми к цензуре по портам. DoT (порт 853) обеспечивает то же TLS-шифрование, но на выделенном порту, тривиально блокируемом брандмауэрами. DoQ (QUIC на порту 853) добавляет миграцию соединений и 0-RTT для мобильных сред. EDNS Client Subnet улучшает точность гео-маршрутизации CDN, но рассылает IP-префикс клиента каждому вышестоящему авторитативному — Cloudflare отключает его по умолчанию. Отравление кеша через атаку Камински 2008 года и side-channel SAD DNS 2020 года смягчается рандомизацией source-порта, 0x20-кодированием и DNSSEC; использование зашифрованного транспорта полностью устраняет поверхность атаки для внешних инъекций. Anycast-маршрутизация обеспечивает ответы публичных резолверов из ближайшей точки; диагностика выбора точки — dig +short @1.1.1.1 whoami.cloudflare TXT CH.

Связанные уроки
Продолжить восхождение ↑DNS: тест с множественным выбором
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources7
expand
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07

Trademarks belong to their respective owners. Editorial reference only.