Понимание протокола DNS (часть 1)

Опубликовано: 24 Марта, 2023

Служба доменных имен, также известная как DNS

Служба доменных имен — это то, что я бы назвал «плотным» протоколом. Я бы назвал его плотным, потому что в DNS так много всего, что это привело к тому, что многие книги написаны исключительно о DNS, о том, что это такое и что он делает. В отличие от некоторых других протоколов прикладного уровня, которые выполняют только одну функцию, DNS выполняет обычное преобразование доменного имени в IP-адрес и другие вещи, такие как помощь в маршрутизации вашей электронной почты. Под маршрутом я имею в виду не то, что DNS внезапно превратился в протокол маршрутизации, а скорее то, что благодаря распространению чего-то, называемого записями MX, ваша электронная почта может быть отправлена на правильный почтовый сервер.

В этой серии статей о DNS мы рассмотрим структуру службы доменных имен в целом. Затем мы немного подробнее расскажем о том, как на самом деле работает DNS с помощью его иерархической структуры. Кроме того, мы рассмотрим довольно много примеров того, что называется ресурсными записями и RCODES, а также их значение и то, как мы можем их разбить. Это будет сделано на уровне пакетов, чтобы дать нам контекст на тот случай, если в будущем вам придется исследовать свою сеть на уровне пакетов. Просто помните, что, как я упоминал ранее, эта серия статей на самом деле лишь поверхностно касается DNS. Чего я не буду касаться, так это фактической настройки DNS в сети и устранения неполадок. Сказав это, давайте начнем наше исследование этого часто недооцененного протокола.

Скромное начало

Для тех системных администраторов вы можете почти сопоставить раннее начало DNS с ростом внутренней DNS с точки зрения Microsoft. В Windows NT у нас было то, что называлось файлом LM Hosts. В файле LMHosts содержится сопоставление имен NetBIOS с IP-адресами. Это было сделано для облегчения задачи поиска компьютеров и услуг, предлагаемых во внутренней сети. За ним вскоре последовал сервер WINS, а затем и Active Directory.

Одной из целей этих различных схем было сопоставление IP-адреса с именем хоста. Это статическое сопоставление IP-адресов с именами компьютеров фактически положило начало DNS в том виде, в каком мы его знаем сегодня. На заре ARPA у вас был просто файл со списком компьютеров и их именами на компьютере. Не было такого понятия, как DNS в том виде, в каком мы его знаем сегодня. Он, безусловно, не распространялся, как сейчас, а хранился на отдельных компьютерах. Ссылка, предоставленная на ARPA, представляет собой интересное чтение, поскольку в ней кратко рассказывается о рождении Интернета. Хотя хранение списка имен на каждом компьютере быстро стало непрактичным по мере роста Интернета. Из-за этого DNS, каким мы его знаем сегодня, начал медленно расти. Некоторые знают DNS как распределенную службу имен, и это довольно точный термин, поскольку ни один компьютер не содержит список всех доменных имен с IP-адресами. Посмотрите здесь пример распределенного характера DNS.

Вы увидите, что в верхней части диаграммы, на которую я только что ссылался, находится корневой сервер DNS. Под корневым сервером находятся домены верхнего уровня, например,.com,.edu и.mil. Некоторые из этих доменов предназначены для исключительного использования Соединенными Штатами, поскольку именно там зародился Интернет. В крайнем левом углу этой диаграммы вы видите.arpa. Это используется для «обратного поиска» и, по сути, противоположно тому, для чего обычно используется DNS. В обратном поиске вы просите, чтобы IP-адрес был преобразован в доменное имя. Именно для этого используется домен arpa. Каждый из уровней, показанных на этой диаграмме, содержит IP-адрес DNS-сервера над ним. Хотя вы можете подумать, что корневой DNS-сервер содержит огромное количество записей, на самом деле это совсем не так. Вы можете проверить этот сайт или этот сайт, чтобы просмотреть корневые серверы DNS.

Так что же на самом деле содержится в корневом DNS-сервере? Хороший вопрос. На самом деле он содержит файл под названием «Файл корневой зоны». Этот файл содержит все имена и IP-адреса полномочных DNS-серверов в домене верхнего уровня, также известном как TLD. Примером домена верхнего уровня могут быть.com и.edu среди прочих. Как тогда создается содержимое корневого сервера имен? Ну, это в основном делается людьми из IANA. В этой ссылке также содержится огромное количество информации. Вы можете проверить назначения портов, а также назначения протоколов здесь. Вы определенно можете считать IANA окончательным источником информации, поскольку они являются «Уполномоченным органом по присвоению номеров в Интернете».

Однако вернемся к корневым серверам DNS. Фактический трафик, проходящий через корневые серверы DNS, как таковой отсутствует. Они не будут выполнять фактическую маршрутизацию. Эти серверы, как уже упоминалось, просто содержат сопоставление IP-адресов DNS-серверов домена для домена верхнего уровня. Если вы помните, я упоминал ранее, что DNS на самом деле является «распределенной» службой имен. Таким образом, нет ни одного компьютера, который содержит список всей информации DNS. Сделать это практически невозможно или, в лучшем случае, нецелесообразно.

В любом случае я не хочу слишком углубляться в разбивку самой иерархии DNS, так как есть много отличных сайтов, которые уже делают именно это. Другая часть DNS связана с кэшированием самих записей DNS. Чтобы просмотреть кеш DNS на вашем домашнем компьютере, просто введите в командной строке DOS следующее:

ipconfig/displaydns

Это вызовет записи DNS, которые (скажем, вы используете Windows XP) распознаватель XP проверит перед тем, как обратиться к DNS-серверу вашего интернет-провайдера для разрешения запроса, который вы выдаете. Вы также можете прочитать следующую ссылку, поскольку она содержит отличную информацию о кэшировании DNS на компьютере с Windows XP. Информация, которую указанная выше команда выводит в приглашение DOS, содержит имя записи, тип записи, значение ttl кэшированной записи DNS, измеряемое в секундах, длину данных, раздел и, наконец, тип записи. Вы можете увидеть пример вывода команды ipconfig /displaydns ниже. Довольно аккуратная вещь!

testlab-cs4
——————————————————
Имя записи.....: testlab-cs4
Тип записи.....: 1
Время жить....: 30318069
Длина данных.....: 4
Раздел.......: Отвечать
Запись (хост)...:






192.168.1.110

Номер типа записи, который вы видите выше, относится к записи «A». Полный список номеров типов записей и соответствующих им типов записей можно найти здесь. Что ж, на этой ноте я завершу первую часть этой серии из трех частей, посвященных DNS. Во второй и третьей частях мы углубимся в этот многогранный протокол. До тех пор!