DNS over UDP
DNS over UDP — это метод передачи запросов и ответов протокола DNS (Domain Name System) с использованием транспортного протокола UDP (User Datagram Protocol), являющийся стандартным и наиболее распространённым способом взаимодействия клиентов и серверов DNS. Данный подход обеспечивает минимальную задержку и низкую нагрузку на сеть за счёт отсутствия установления соединения и подтверждения доставки, что критически важно для быстрой работы системы доменных имён.
История
Протокол DNS был разработан в начале 1980-х годов для замены централизованной системы HOSTS.TXT. В спецификации RFC 1035 (1987 год), написанной Полом Мокапетрисом, было установлено, что DNS-запросы и ответы передаются по протоколу UDP через порт 53. Выбор UDP был обусловлен простотой и скоростью: для большинства DNS-запросов (например, преобразование имени в IP-адрес) достаточно одного пакета, а повторная отправка при потере пакета реализуется на уровне приложения.
Первоначально размер DNS-сообщения по UDP был ограничен 512 байтами (без учёта заголовков IP и UDP). Это ограничение было установлено в RFC 1035 и оставалось неизменным до появления расширения EDNS0 (Extension Mechanisms for DNS) в RFC 2671 (1999 год). EDNS0 позволил увеличить максимальный размер UDP-пакета до 4096 байт, что стало необходимым для поддержки DNSSEC (DNS Security Extensions) и других расширений.
Принцип работы
DNS over UDP использует модель «запрос-ответ» без установления соединения. Клиент (резолвер) отправляет UDP-датаграмму с DNS-запросом на сервер (рекурсивный или авторитативный) по порту 53. Сервер обрабатывает запрос и отправляет ответ обратно на тот же порт клиента. В отличие от TCP, UDP не гарантирует доставку, порядок пакетов или защиту от дублирования. Поэтому клиентское приложение (обычно библиотека libc или резолвер) самостоятельно управляет тайм-аутами и повторными отправками.
Структура DNS-сообщения
DNS-сообщение по UDP состоит из заголовка (12 байт) и четырёх секций: вопрос (Question), ответ (Answer), полномочия (Authority) и дополнительная информация (Additional). Заголовок содержит идентификатор (ID), флаги (QR, OPCODE, AA, TC, RD, RA, Z, RCODE) и счётчики секций.
Ограничения
- Размер пакета: без EDNS0 — 512 байт, с EDNS0 — до 4096 байт. Если ответ превышает этот лимит, сервер устанавливает флаг TC (Truncation) в заголовке, и клиент должен повторить запрос по TCP.
- Отсутствие надёжности: потеря пакета требует повторной отправки на уровне приложения.
- Уязвимость к подделке: отсутствие аутентификации и шифрования делает DNS over UDP уязвимым для атак типа «человек посередине» (MITM), отравления кэша (DNS cache poisoning) и DDoS-атак (например, DNS-амплификация).
Классификация и варианты
Стандартный DNS over UDP (без расширений)
Базовая реализация, описанная в RFC 1035. Использует порт 53, максимальный размер пакета — 512 байт. Применяется для локальных запросов (например, от домашнего роутера к DNS-серверу провайдера) и в корпоративных сетях.
DNS over UDP с EDNS0
Расширение, позволяющее увеличить размер UDP-пакета до 4096 байт. Включает поддержку DNSSEC, метаданных (например, идентификатор клиента) и флагов. EDNS0 является обязательным для современных DNS-серверов, поддерживающих DNSSEC.
DNS over UDP с DNSSEC
DNSSEC добавляет цифровые подписи к DNS-записям, но не шифрует трафик. UDP-пакеты с DNSSEC могут быть больше 512 байт, поэтому требуется EDNS0. DNSSEC защищает от подделки ответов, но не от перехвата.
DNS over UDP в локальных сетях
Внутри корпоративных сетей DNS over UDP часто используется для разрешения имён внутренних ресурсов (Active Directory, локальные серверы). Для повышения надёжности применяются несколько DNS-серверов и механизмы автоматического переключения.
Применение
Интернет-провайдеры
Большинство интернет-провайдеров в России и мире используют DNS over UDP для обслуживания абонентов. Серверы провайдеров (например, Ростелеком, МТС, Билайн) работают на порту 53 и обрабатывают миллионы запросов в секунду.
Публичные DNS-серверы
Популярные публичные DNS-серверы, такие как Google Public DNS (8.8.8.8), Cloudflare DNS (1.1.1.1) и Яндекс.DNS (77.88.8.8), поддерживают DNS over UDP. Однако для повышения безопасности они также предлагают альтернативные протоколы (DNS over HTTPS, DNS over TLS).
Встраиваемые системы и IoT
В устройствах с ограниченными ресурсами (роутеры, умные колонки, датчики) DNS over UDP является предпочтительным из-за низкого потребления памяти и процессорного времени. Реализация UDP-стека проще, чем TCP, что важно для микроконтроллеров.
Критика и ограничения
Отсутствие шифрования
Основной недостаток DNS over UDP — передача данных в открытом виде. Это позволяет провайдерам, злоумышленникам или государственным органам перехватывать DNS-запросы и узнавать, какие сайты посещает пользователь. В России действует Федеральный закон № 242-ФЗ (2015 год), который обязывает провайдеров блокировать доступ к запрещённым ресурсам, что технически реализуется через анализ DNS-трафика.
Уязвимость к атакам
- DNS-амплификация: злоумышленник отправляет запрос с поддельным IP-адресом жертвы на открытый DNS-сервер, который отвечает большим пакетом. Это может привести к DDoS-атаке.
- Отравление кэша: подмена DNS-ответа на этапе передачи, что перенаправляет пользователя на вредоносный сайт.
- Подмена DNS-сервера: атака «человек посередине» на уровне сети, когда злоумышленник выдает себя за легитимный DNS-сервер.
Альтернативные протоколы
Для решения проблем безопасности были разработаны:
- DNS over TLS (DoT): шифрование трафика с помощью TLS (порт 853).
- DNS over HTTPS (DoH): шифрование через HTTPS (порт 443).
- DNSCrypt: протокол с шифрованием и аутентификацией (порт 443).
В России использование DoH и DoT ограничено в рамках блокировок: например, в 2021 году Роскомнадзор начал блокировать DoH-серверы Google и Cloudflare, так как они позволяют обходить блокировки.
Интересные факты
- В 2020 году исследователи из компании SIDN (оператор домена .nl) обнаружили, что около 30% всех DNS-запросов в мире всё ещё используют UDP без EDNS0, что ограничивает поддержку DNSSEC.
- В России DNS over UDP является основным протоколом для работы системы «Единый реестр запрещённых сайтов» (ЕАИС), которая блокирует доступ к запрещённым ресурсам на уровне DNS.
- В 2022 году была предложена спецификация DNS over QUIC (DoQ), которая использует протокол QUIC (на базе UDP) для обеспечения шифрования и низкой задержки. Однако она пока не получила широкого распространения.
- В 2023 году компания Cloudflare сообщила, что более 50% её DNS-трафика (1.1.1.1) приходится на DoH и DoT, а не на классический DNS over UDP.
Источники
- RFC 1035 — Domain Names — Implementation and Specification (1987)
- RFC 2671 — Extension Mechanisms for DNS (EDNS0) (1999)
- RFC 4033 — DNS Security Introduction and Requirements (2005)
- RFC 7858 — Specification for DNS over Transport Layer Security (TLS) (2016)
- RFC 8484 — DNS Queries over HTTPS (DoH) (2018)
- Федеральный закон № 242-ФЗ «О внесении изменений в отдельные законодательные акты Российской Федерации в части уточнения порядка распространения информации в информационно-телекоммуникационной сети "Интернет"» (2015)
- «DNS over UDP: Performance and Security Analysis» — SIDN Labs, 2020
- «Cloudflare 1.1.1.1: 2023 Year in Review» — Cloudflare Blog, 2023
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →