Крупнейшие DNS-сервисы и серверы прекратят поддержку проблемных реализаций DNS
21 января 2019 года
1 февраля ряд DNS-сервисов и производителей DNS-серверов решили провести день корректной обработки запросов EDNS (DNS flag day). В этот же день организация ISC планирует выпустить новый значительный релиз DNS-сервера BIND 9.14, в который будут внесены изменения, нарушающие совместимость резолвера с некоторыми DNS-серверами, на которых используется старое ПО с некорректно реализованной обработкой запросов EDNS.
EDNS определяет механизм расширения размера параметров DNS и позволяет добавлять в протокол новые флаги. Расширенные флаги кодируются в специальных RR-записях, что позволят сохранить обратную совместимость с классическим протоколом DNS (не поддерживающий EDNS сервер может ответить на запрос без учёта дополнительных флагов). EDNS был стандартизирован в 1999 году в форме RFC 2671, а в 2013 году было выпущено обновление спецификации RFC 6891.
Так как в первом варианте спецификации EDNS не были явно описаны некоторые пограничные ситуации, DNS-серверы по разному реагировали на запросы с применением не поддерживаемых на этих серверах расширений EDNS. Утверждённая спецификация предписывает в случае отсутствия поддержки определённых EDNS-флагов отправлять соответствующий DNS-ответ в старом формате, просто отбрасывая флаги EDNS. Некоторые серверы поступали иначе и игнорировали не поддерживаемые запросы, вообще не отправляя ответный пакет.
Около 20 лет назад в DNS-сервере BIND был реализован обходной манёвр ("грязный хак"), позволяющий корректно взаимодействовать с подобными серверами, который впоследствии был воплощён и в других DNS-резолверах. Суть метода в том, что в качестве признака отсутствия поддержки флагов EDNS использовался таймаут - если после отправки запроса с флагами EDNS через определённый промежуток времени не поступал ответ, DNS-сервер считал, что расширенные флаги не поддерживаются и отправлял повторный запрос без флагов EDNS.
Применение обходного манёвра позволяло сохранить взаимодействие с проблемными серверами, но приводило к увеличению задержек из-за повторной отправки пакетов, повышению нагрузки на сеть и неоднозначности при отсутствии ответа из-за сетевых сбоев, а также мешало внедрению основанных на EDNS возможностей, таких как применение DNS Cookies для защиты от DDoS-атак. Добавление обходного манёвра также привело к тому, что некоторые DNS-серверы не уделяли должного внимания соблюдению стандарта и до недавнего времени практиковали игнорирование пакетов с не поддерживаемыми флагами EDNS.
В частности, в резолвере PowerDNS все замечания в области поддержки спецификации будут устранены только в готовящемся выпуске 4.2. При этом в подготовленной в 2017 году версии PowerDNS 4.1 авторитативный сервер уже полностью соответствовал спецификации EDNS, а в ветке 4.0 всплывали лишь отдельные несовместимости, возникающие при определённом стечении обстоятельств и в общем виде не мешающие нормальной работе.
Теперь разработчики DNS-серверов договорились удалить из реализаций DNS-резолверов поддержку упомянутого обходного метода проверки и более не откатываться на старый вариант протокола в случае наступления таймаута. Изменение планируется произвести в выпусках BIND 9.14 (намечен на 1 февраля), Unbound 1.8.4/1.9.0 и PowerDNS Recursor 4.2.0. В Knot Resolver рассматриваемый обходной метод не применялся изначально. К инициативе также подключились компании CloudFlare, Quad 9, Cisco (OpenDNS) и Google, которые планируют удалить поддержку обходного метода проверки на своих публичных DNS-серверах.
Изменение не повлияет на штатное поведение резолверов - запросы с использованием старого протокола DNS и корректно отбрасываемые не поддерживаемые запросы с EDNS будут обрабатываться как и прежде. Иными словами, авторитативные DNS-серверы как и раньше не обязаны поддерживать EDNS и могут ограничиваться старым классическим протоколом, но они теперь должны корректно реагировать на не поддерживаемые запросы EDNS, а не молча игнорировать их. По сути, DNS-серверы лишь принуждают к соответствию стандарту.
С практической стороны прекращение поддержки обходной проверки может привести к проблемам при взаимодействии с DNS-серверами, использующими очень старые выпуски PowerDNS. Для тестирования корректности реагирования на запросы с EDNS запущены специальные online-сервисы dnsflagday.net и EDNS Compliance Tester. Так как каждый домен обслуживает как минимум 2 разных DNS-сервера, а переход на новые выпуски Unbound и BIND будет выполняться постепенно, эффект от изменения проявится не сразу, но со временем всё больше и больше DNS-резолверов не сможет взаимодействовать с DNS-серверами, некорректно обрабатывающими EDNS-запросы (игнорирующими без отправки ответного пакета).
Проблемы после отмены обходной проверки также могут возникнуть из-за блокирования расширенных DNS-запросов на стороне межсетевых экранов - блокировка DNS-пакетов размером больше 512 байт иногда применяется для противодействия DDoS-атакам, использующим поля EDNS для усиления трафика. Поэтому администраторам межсетевых экранов также следует обратить внимание на корректность пропускания DNS-трафика с флагами EDNS.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.