Сети и протоколы
Зашифрованный DNS: DoH, DoT, DoQ и отравление кеша
Традиционный 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) | 443 | TLS поверх TCP/QUIC | Высокая — неотличим от HTTPS | По умолчанию в браузерах; HoL-блокировка HTTP/2 на больших пакетах |
| DoT (RFC 7858) | 853 | TLS поверх TCP | Низкая — порт 853 блокируется одним правилом | Чистый протокол; предсказуем для блокировки |
| DoQ (RFC 9250) | 853 | QUIC (TLS 1.3) | Средняя | Запросы по-потоково; миграция соединений; 0-RTT |
- Доля 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 в браузере и принудительно направляющую трафик через локальный резолвер.
Проследите соединение клиента через DoH с https://dns.cloudflare.com/dns-query.
Особенности 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 — покажет, какая точка ответила.
- 01Инженер утверждает, что EDNS Client Subnet обязателен для точной гео-маршрутизации CDN. В чём ошибка этого утверждения?
- 02Опишите атаку Камински и две защиты, закрывшие её.
- 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.