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

EDNS

EDNS (расшифровывается как Extended DNS или EDNS0) — это расширение протокола DNS (Domain Name System), описанное в RFC 6891 и предназначенное для увеличения функциональности и производительности системы доменных имён. В отличие от базового протокола DNS, который имеет жёсткие ограничения по размеру пакетов (до 512 байт для UDP-запросов), EDNS позволяет передавать более крупные сообщения, поддерживать новые типы записей и расширять возможности DNS-серверов и клиентов. EDNS является стандартом де-факто в современном интернете и используется всеми основными DNS-резолверами и серверами.

История

Протокол DNS был разработан в 1980-х годах и изначально предполагал, что все DNS-сообщения передаются в UDP-пакетах размером не более 512 байт. Это ограничение было связано с техническими возможностями того времени и необходимостью минимизировать задержки. Однако с развитием интернета возникла потребность в передаче дополнительных данных: подписей DNSSEC, информации о сетевых протоколах IPv6 (записи AAAA), а также в поддержке новых типов записей.

В 1999 году была опубликована спецификация EDNS0 (RFC 2671, позднее заменённая на RFC 6891). Она ввела механизм, позволяющий DNS-пакетам превышать 512 байт за счёт использования расширенных флагов и опций. EDNS0 стал первым шагом к модернизации DNS без полной переработки протокола. В последующие годы EDNS был дополнен новыми опциями, такими как EDNS Client Subnet (ECS) для оптимизации маршрутизации трафика и DNS Cookies для защиты от атак.

Принцип работы

EDNS работает на уровне транспортного протокола DNS. В базовом DNS-запросе клиент (резолвер) отправляет запрос на сервер, который отвечает в пределах 512 байт. Если ответ превышает этот лимит, сервер может использовать TCP-соединение, но это увеличивает задержки. EDNS решает проблему, добавляя в запрос специальный псевдо-заголовок (OPT record), который сообщает серверу о возможности принимать более крупные пакеты.

Структура OPT-записи

OPT-запись (псевдо-запись типа 41) вставляется в дополнительную секцию DNS-сообщения. Она содержит:

Когда DNS-сервер получает запрос с OPT-записью, он может отправить ответ размером до указанного клиентом лимита. Если ответ всё же превышает этот размер, сервер переключается на TCP.

Основные возможности и расширения

EDNS не является самостоятельным протоколом, а служит платформой для внедрения различных расширений DNS. Наиболее значимые из них:

DNSSEC (DNS Security Extensions)

DNSSEC использует EDNS для передачи цифровых подписей и ключей. Без EDNS размер DNSSEC-ответов (содержащих записи RRSIG, DNSKEY, DS) часто превышает 512 байт, что делает EDNS обязательным для работы DNSSEC.

EDNS Client Subnet (ECS)

Опция ECS (RFC 7871) позволяет DNS-резолверу передавать часть IP-адреса клиента (обычно префикс /24 для IPv4 или /56 для IPv6) авторитетному DNS-серверу. Это помогает серверу возвращать географически оптимальные IP-адреса (например, для CDN). ECS используется крупными провайдерами, такими как Google Public DNS и Cloudflare.

DNS Cookies

DNS Cookies (RFC 7873) — это механизм аутентификации, защищающий от амплитудных DDoS-атак на DNS-серверы. Клиент и сервер обмениваются «печеньями» (cookies) через EDNS-опции, что позволяет серверу отклонять запросы с поддельными IP-адресами.

Extended DNS Error (EDE)

Опция EDE (RFC 8914) позволяет DNS-серверу возвращать более подробные сообщения об ошибках (например, «DNS resolution policy violation» или «blocked due to censorship»). Это улучшает диагностику проблем.

Padding

Опция Padding (RFC 7830) добавляет случайные байты в DNS-пакеты для затруднения анализа трафика (например, для защиты от утечки информации через размер пакета).

Применение

EDNS используется повсеместно в современном интернете. Без него невозможна работа:

В России EDNS активно используется операторами связи и DNS-провайдерами для реализации требований законодательства (например, блокировка запрещённых сайтов). При этом некоторые российские DNS-серверы могут модифицировать EDNS-опции (например, удалять ECS) для соблюдения политик.

Проблемы и критика

Несмотря на широкое распространение, EDNS имеет ряд недостатков:

Совместимость

Некоторые старые DNS-серверы и сетевые устройства (например, межсетевые экраны) могут некорректно обрабатывать EDNS-запросы. В результате клиенты с EDNS могут получать неполные ответы или тайм-ауты. Для решения этой проблемы был разработан механизм EDNS0 fallback, при котором клиент повторяет запрос без EDNS, если первый запрос не удался.

Безопасность

Опция ECS может раскрывать приблизительное местоположение пользователя, что вызывает опасения с точки зрения конфиденциальности. Некоторые провайдеры (например, Quad9) отключают ECS по умолчанию.

Атаки

EDNS может использоваться для усиления DDoS-атак: злоумышленники отправляют небольшие запросы с большим значением UDPSize, вынуждая серверы генерировать крупные ответы. Однако современные DNS-серверы ограничивают размер ответов и используют рандомизацию портов для защиты.

Будущее развития

EDNS продолжает эволюционировать. В 2020-х годах активно обсуждается внедрение:

Ожидается, что EDNS останется ключевым элементом DNS-инфраструктуры, пока не будет разработан полностью новый протокол (например, DNS over QUIC).

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →