Считается ли допустимым запрос DNS с установленным достоверным битом (или другими битами, используемыми для ответов)? - PullRequest
0 голосов
/ 07 июня 2019

С RFC 1035 :

Авторитетный ответ - этот бит действителен в ответах и указывает, что отвечающий сервер имен является полномочием длядоменное имя в разделе вопросов.

Итак, что произойдет, если этот бит установлен в запросе DNS (QD=0)?Большинство реализаций DNS рассматривают пакет как недействительный, или этот бит будет просто проигнорирован?

Тот же вопрос относится к другим битам, которые относятся либо к запросам, либо к ответам, таким как установка бита RD вответ.

Я предполагаю, что эти биты просто игнорируются, если они не применимы к рассматриваемому пакету, но я не знаю наверняка или как я узнаю.

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

1 Ответ

1 голос
/ 11 июня 2019

Вы либо применяете закон Постеля («Будь консервативен в том, что ты делаешь, будь либеральным в том, что ты принимаешь от других»), - который часто преподносится как одна из причин / условий успеха взаимодействия многих других вещей сверхуИнтернета - или если вы строго применяете RFC, вы считаете его недействительным, и вы можете немедленно ответить, например, с помощью FORMERR.

Во втором случае, поскольку вы получите отклоняющихся клиентов (не обязательно для вашего конкретного случаяв мире DNS они представляют собой множество несоответствующих реализаций в различных точках), вам нужно будет определить, создаете ли вы определенные правила (например, ACL), чтобы принять некоторые из них, тем не менее, поскольку вы считаете их «важными».

Обратите внимание, что на данном этапе ваш вопрос не имеет никакого отношения к программированию (без кода), так что это своего рода оффтоп.Но ответ также зависит от того, какой «обработчик пакетов» вы создаете.Если это для какого-то IDS / мониторинга / и т.д.вам нужно проанализировать «как можно больше» трафика DNS, чтобы сообщить об этом.Если это имитирует реальный распознаватель DNS и просто убедитесь, что он ведет себя как распознаватель, то вам, вероятно, не нужно разбираться со всеми странными отклонениями.

Также помните, что все это можно изменить при передаче, поэтому, если вы получаете некоторые ошибочные вещи, это не всегда является ошибкой, исходящей от отправителя, это может быть из-за какого-то посредника, добровольно или нет.

В заключение невозможно предсказать все, что вы получитеи в любом достаточно широком эксперименте вы будете удивлены количеством трафика, который вы не сможете понять, и тем, как он будет существовать.Поэтому вместо того, чтобы пытаться определить все перед запуском, вам следует перебирать версии, имея четкое представление о вашей цели (максимально возможный анализ для какой-либо системы мониторинга, ИЛИ максимально простой / безопасный / безопасный / близкий к реальным возможностям).Разрешение DNS по возможности).

А что касается "как бы я узнал".Вы можете изучить источник различных существующих распознавателей (bind, nsd, unbound и т. д.) и посмотреть, как они реагируют.Или просто запустите их и добавьте в них несколько ошибочных пакетов, которые вы себе представляете, и посмотрите их ответ.Некоторые случаи, вероятно, существуют в виде модульного / регрессионного теста, а некоторые инструменты, такие как ZoneMaster, возможно, будут расширены (если они еще не выполняли эти конкретные тесты), чтобы охватить ваши случаи.

...