Открыть сервис

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 →