Введение
Спецификация для механизмов расширения системы доменных имен для DNS (EDNS) - это спецификация для расширения размера нескольких параметров протокола DNS, которые имели ограничения на размер, которые инженерное сообщество Интернета считало слишком ограниченными для увеличения функциональности протокола. Первый набор расширений был опубликован в 1999 году Рабочей группой по инженерии Интернета как , также известный как EDNS0 , который был обновлен в 2013 году , немного изменив аббревиатуру на EDNS(0).
Extension Mechanisms for DNS (EDNS) is a specification for expanding the size of several parameters of the Domain Name System (DNS) protocol which had size restrictions that the Internet engineering community deemed too limited for increasing functionality of the protocol. The first set of extensions was published in 1999 by the Internet Engineering Task Force as , also known as EDNS0 which was updated by in 2013 changing abbreviation slightly to EDNS(0).
Мотивация
Система доменных имен была впервые разработана в начале 1980-х годов. С тех пор он был постепенно дополнен новыми функциями, сохраняя совместимость с более ранними версиями протокола. Ограничения в размерах нескольких полей флагов, кодов возврата и типов ярлыков, доступных в базовом протоколе DNS, препятствовали поддержке некоторых желаемых функций. Кроме того, сообщения DNS, переносимые UDP, были ограничены 512 байтами, не учитывая протокол Интернета (IP) и заголовки транспортного уровня. Прибегнув к виртуальной схеме транспортировки, используя протокол управления передачей (TCP), значительно увеличится накладный расход. Это стало серьезным препятствием для добавления новых функций в DNS. В 1999 году Пол Викси предложил расширить DNS, чтобы обеспечить новые флаги и коды ответа и обеспечить поддержку более длительных ответов в рамках, который будет обратно совместим с предыдущими реализациями.
Механизм
Поскольку в заголовок DNS не могут быть добавлены новые флаги, EDNS добавляет информацию в сообщения DNS в виде псевдо-рекорд ресурсов ("псевдо-RR"), включенных в раздел "дополнительные данные" сообщения DNS. Обратите внимание, что этот раздел существует как в запросах, так и в ответах. EDNS вводит единственный псевдо-тип RR: OPT. Как псевдо-RR, RR типа OPT никогда не появляются в файле зоны; они существуют только в сообщениях, сфабрикованных участниками DNS. Механизм является обратной совместимым, потому что более старые DNS-респондеры игнорируют любой RR неизвестного типа OPT в запросе, а более новый DNS-респондер никогда не включает OPT в ответ, если только в запросе не было одного. Наличие OPT в запросе означает, что новый заявитель знает, что делать с OPT в ответе. Псевдозапись OPT предоставляет место для до 16 флагов и расширяет пространство для кода ответа. Общий размер UDP-пакета и номер версии (в настоящее время 0) содержатся в записи OPT. Поле данных переменной длины позволяет регистрировать дополнительную информацию в будущих версиях протокола. Первоначальный протокол DNS предусматривал два типа ярлыков, которые определяются первыми двумя битами в октете длины ярлыка (RFC 1035): 00 (стандартный ярлык) и 11 (сжатый ярлык). EDNS вводит маркировку типа 01 в качестве расширенной маркировки. Нижние 6 бит первого байта могут использоваться для определения до 63 новых расширенных ярлыков.
DNSSEC
EDNS имеет важное значение для реализации расширений безопасности DNS (DNSSEC).
Наполнение EDNS
Существуют стандарты использования EDNS для установления того, сколько наполнения должно быть вокруг сообщения DNS. Заполнение имеет важное значение при шифровании DNS, потому что без заполнения может быть возможно определить доменное имя запроса из зашифрованного размера запроса.
EDNS Keeppalive (Сохранение ЭДНС)
EDNS используется для указания того, как долго должно сохраняться соединение TCP.
Подсеть клиентской сети EDNS (ECS)
EDNS также используется для отправки общей информации от резюмеров к серверам имен о географическом местоположении клиентов в форме клиентской подсети EDNS (ECS).
Проблемы
На практике могут возникнуть трудности при использовании EDNS через брандмауэры, поскольку некоторые брандмауэры предполагают максимальную длину сообщения DNS в 512 байт и блокируют более длинные пакеты DNS. Введение EDNS сделало возможным атаку на амплификацию DNS, тип отраженной атаки отказа в обслуживании, поскольку EDNS облегчает очень большие пакеты ответа по сравнению с относительно небольшими пакетами запросов. Рабочая группа IETF DNS Extensions (dnsext) завершила работу над усовершенствованием EDNS0, которое было опубликовано в качестве RFC 6891.