Независимые dns запросы для получения содержащихся на сайте изображений

Обновлено: 06.07.2024

Как уже говорилось выше, каждый DNS-сервер отвечает за обслуживание определенной части пространства имен DNS. Информация о доменах, хранящаяся в БД сервера DNS, организуется в особые единицы, называемые зонами (zones). Зона - основная единица репликации данных между серверами DNS. Каждая зона содержит определенное количество ресурсных записей для соответствующего домена и, быть может, его поддоменов.

Системы семейства Windows Server поддерживают следующие типы зон:

  • Стандартная основная (standard primary) - главная копия стандартной зоны; только в данном экземпляре зоны допускается производить какие-либо изменения, которые затем реплицируются на серверы, хранящие дополнительные зоны;
  • Стандартная дополнительная (standard secondary) - копия основной зоны, доступная в режиме "только-чтение", предназначена для повышения отказоустойчивости и распределения нагрузки между серверами, отвечающими за определенную зону; процесс репликации изменений в записях зон называется "передачей зоны" ( zone transfer ) (информация в стандартных зонах хранится в текстовых файлах, файлы создаются в папке "%system root%\system32\dns", имя файла, как правило, образуется из имени зоны с добавлением расширения файла ".dns"; термин "стандартная" используется только в системах семейства Windows);
  • Интегрированная в Active Directory (Active Directory–integrated) - вся информация о зоне хранится в виде одной записи в базе данных Active Directory (такие типы зон могут существовать только на серверах Windows, являющихся контроллерами доменов Active Directory; в интегрированных зонах можно более жестко управлять правами доступа к записям зоны; изменения в записях зоны между разными экземплярами интегрированной зоны производятся не по технологии передачи зоны службой DNS, а механизмами репликации службы Active Directory);
  • Зона-заглушка ( stub ; только в Windows 2003) - особый тип зоны, которая для данной части пространства имен DNS содержит самый минимальный набор ресурсных записей (начальная запись зоны SOA, список серверов имен, отвечающих за данную зону, и несколько записей типа A для ссылок на серверы имен для данной зоны).

Рассмотрим на примере соотношение между понятиями домена и зоны. Проанализируем информацию, представленную на рис. 4.9.

  • записи, относящиеся к доменам microsoft.com и edu.microsoft.com, хранятся в одной зоне в файле "microsoft.com.dns" (на рисунке зона обозначена большим наклонным овалом);
  • управление доменами sales.microsoft.com и it.microsoft.com делегировано другим серверам DNS, для этих доменов на других серверах созданы соответствующие файлы "sales.microsoft.com.dns" и "it.microsoft.com.dns" (данные зоны обозначены большими вертикальными овалами).

Делегирование управления - передача ответственности за часть пространства имен другим серверам DNS.

Зоны прямого и обратного просмотра

Зоны, рассмотренные в предыдущем примере, являются зонами прямого просмотра (forward lookup zones). Данные зоны служат для разрешения имен узлов в IP-адреса. Наиболее часто используемые для этого типы записей: A , CNAME , SRV .

Для определения имени узла по его IP-адресу служат зоны обратного просмотра ( reverse lookup zones), основной тип записи в "обратных" зонах - PTR. Для решения данной задачи создан специальный домен с именем in-addr.arpa . Для каждой IP-сети в таком домене создаются соответствующие поддомены, образованные из идентификатора сети, записанного в обратном порядке. Записи в такой зоне будут сопоставлять идентификатору узла полное FQDN-имя данного узла. Например, для IP-сети 192.168.0.0/24 необходимо создать зону с именем "0.168.192.in-addr.arpa" . Для узла с IP-адресом 192.168.0.10 и именем host.company.ru в данной зоне должна быть создана запись "10 PTR host.company.ru" .

Алгоритмы работы итеративных и рекурсивных запросов DNS

Все запросы, отправляемые DNS-клиентом DNS-серверу для разрешения имен, делятся на два типа:

Обычные DNS-клиенты (например, рабочие станции пользователей), как правило, посылают рекурсивные запросы.

Рассмотрим на примерах, как происходит взаимодействие DNS-клиента и DNS-сервера при обработке итеративных и рекурсивных запросов.

Вариант 1 (итеративный запрос).

Если клиент отправил серверу итеративный запрос (напомним, что обычно клиенты посылают рекурсивные запросы), то обработка запроса происходит по следующей схеме:

если такая зона найдена, то в ней ищется запись для узла www ; если запись найдена, то результат поиска сразу же возвращается клиенту;

если искомое имя есть в кэше, то результат поиска возвращается клиенту; если локальный DNS-сервер не нашел в своей базе данных искомую запись, то клиенту посылается IP-адрес одного из корневых серверов DNS;

корневой сервер не содержит в своей БД зоны "microsoft.com", но ему известны DNS-серверы, отвечающие за зону "com", и корневой сервер посылает клиенту IP-адрес одного из серверов, отвечающих за эту зону;

Вариант 2 ( рекурсивный запрос ).

Если клиент отправил серверу рекурсивный запрос , то обработка запроса происходит по такой схеме:

Реализация службы DNS в системах семейства Windows Server

Главная особенность службы DNS в системах семейства Windows Server заключается в том, что служба DNS разрабатывалась для поддержки службы каталогов Active Directory. Для выполнения этой функции требуются обеспечение двух условий:

  • поддержка службой DNS динамической регистрации (dynamic updates);
  • поддержка службой DNS записей типа SRV .

Служба DNS систем Windows Server удовлетворяет обоим условиям, и реализация служб каталогов Active Directory может быть обеспечена только серверами на базе систем Windows Server.

Рассмотрим несколько простых примеров управления службой DNS:

  • установка службы DNS;
  • создание основной и дополнительной зоны прямого просмотра;
  • создание зоны обратного просмотра;
  • выполнение динамической регистрации узлов в зоне.

Все рассматриваемые далее в пособии примеры были выполнены в следующей конфигурации:

Подробные рекомендации по организации сети для изучения данного курса (как под руководством преподавателя в организованной группе, так и при самостоятельном изучении) изложены в указаниях к выполнению упражнений лабораторных работ в конце пособия.


Основная функция DNS — преобразование имен для запрашивающих клиентов, поэто­му механизм запроса является одним из наиболее важных элементов системы. Обычно к базе данных DNS выполняются два типа запросов: рекурсивный и итеративный.

Выполнение рекурсивных запросов

Чаще всего рекурсивные запросы выполняются распознавателями (resolvers), или клиентами, которые нуждаются в преобразовании конкретного имени сервером DNS. Рекурсивные запросы выполняются также DNS-сервером, если ретрансляторы сконфи­гурированы для использования на конкретном сервере имен. Рекурсивный запрос про­сто выясняет, может ли конкретный сервер имен разрешить конкретную запись. Ответ на рекурсивный запрос может быть отрицательным или положительным. Типичный сценарий выполнения рекурсивного запроса показан на рис. 1.

QIP Shot - Image: 2016-09-05 11:11:28

Рис. 1. Рекурсивные и итеративные запросы

Выполнение итеративных запросов

Итеративные запросы требуют от сервера DNS либо выполнить запрос, либо ука­зать наилучшую ссылку на DNS-сервер, содержащий более точную информацию о том, где этот запрос может быть разрешен. Затем выполняется еще один итеративный за­прос к указанному в ссылке серверу и так далее, пока не будет получен положительный или отрицательный результат.

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

Другие компоненты DNS

В основе DNS лежат и другие основные компоненты, которые необходимы для ее правильного функционирования. Кроме того, следует полностью разобраться в функ­циях некоторых основных компонентов DNS, интенсивно используемых в DNS реали­зации Microsoft.

Динамическая DNS

Предыдущие версии DNS зависели от обновлений всех записей в базе данных DNS, которые администраторы выполняли вручную. При каждом добавлении ресурса или из­менении информации о ресурсе база данных DNS обновлялась вручную для отражения этих изменений, обычно с помощью простого текстового редактора. Динамическая DNS была разработана из-за возросшей нагрузки администраторов по поддержанию баз данных DNS в работоспособном состоянии. Пользуясь динамической DNS, клиен­ты могут автоматически обновлять свои записи в DNS в соответствии с настройками безопасности данной зоны.

Важно отметить, что динамические обновления уже поддерживали клиенты Windows 2000/ХР и последующих систем, а для обновления в DNS информации клиен­тов предшествующих систем (NT/9x) они должны иметь должным образом сконфигу­рированный протокол DHCP. Однако с этой функциональностью связаны некоторые проблемы безопасности.

Значение времени существования (TTL)

Значение времени существования (Time to Live — TTL) отвечает за то, на протя­жении какого времени (в секундах) распознаватель или сервер имен будет хранить DNS-запрос в кэше, прежде чем запрашивать его снова с исходного сервера имен. Это значение помогает поддерживать содержащуюся в базе данных DNS информацию в актуальном состоянии. Установка уровней TTL, по сути, представляет собой попытку отыскать оптимальный компромисс между необходимостью в обновлении информа­ции и необходимостью в сокращении объема связанного с передачей DNS-запросов сетевого трафика.

Значение TTL для ответа устанавливается тем сервером имен, который успешно разрешает запрос. Другими словами, элементы в кэше могут иметь разные значения TTL на основании того, где они обрабатывались, и какое значение TTL используется в той зоне, откуда они были получены.

2. Начните работу

Откройте CMD.exe и введите:

Запустите Wireshark, выберите допустимую сетевую карту и начните захват пакетов.

Остановите мониторинг после выполнения ввода с консоли.

\

Должно быть видно, что есть два DNS-пакета (одно разрешение имени домена) и восемь ICMP-пакетов (четыре эхо-запроса)

Следующее начинает анализировать рабочий процесс DNS:

Откройте первый пакет:

\

Можно обнаружить, что DNS является протоколом прикладного уровня, нижний транспортный уровень использует UDP, а затем нижний сетевой уровень представляет собой IP-протокол, а затем кадр Ethernet канального уровня.

На что нужно обратить внимание - это на уровне приложения, которым является сам протокол DNS.

Перед этим вы можете получить необходимую информацию с нижнего уровня:

Поскольку IP-пакет маршрутизируется на сетевом уровне, он по очереди отправляет его маршрутизатору, а не непосредственно на DNS-сервер, что также очень легко понять.

Первый пакет является пакетом запроса, невозможно напрямую содержать адрес DNS-сервера.

Развернуть данные DNS:

\

Второе - это поле флага Flags, 2 байта, значение каждого бита различно, вы можете обратиться к рисунку выше или увидеть следующий рисунок:

\

QR: запрос / ответ, 1 ответ, 0 запрос

Код операции: тип запроса или ответа, где 0 означает стандартный, 1 означает обратный и 2 означает запрос о состоянии сервера

TC: усечено, 1 означает более 512 байт и было усечено, 0 означает отсутствие усечения

РД: Хотите рекурсивный ответ?

ноль: все 0 Зарезервированное поле

Ошибка в 1 формате

2-ошибка произошла на сервере имен

3-доменная проблема со ссылкой

4 - Тип запроса не поддерживается

Сразу после того, как флаг

Очереди (количество вопросов), 2 байта, обычно 1

RR ответа (количество записей ресурсов), RR полномочий (количество авторизованных записей ресурсов), Дополнительные RR (количество дополнительных записей ресурсов) обычно равны 0

Поле Queries является частью тела запроса или ответа, разделенной на Name Type Class

Имя (имя запроса): это параметр после пинга, неопределенная длина заканчивается 0

Тип (тип запроса): 2 байта, вот запись узла А. Значение каждого значения следующее:

Значение мнемонического описания

1 1 A A IPv4-адрес.

2 NS NS name server.

5 5 CNAME Каноническое имя. Псевдоним, который определяет официальное имя хоста.

6 SOA SOA начали авторизовать. Отметить начало зоны.

11 WKS WKS Хорошо знаю сервис. Определите сетевые сервисы, предоставляемые хостом.

12 12 PTR Указатель для PTR. Преобразуйте IP-адреса в доменные имена.

13 Информация о хосте HINFO. Дайте описание оборудования и операционной системы, используемой хостом.

15 MX MX mail exchange. Измените маршрутизацию почты на почтовый сервер.

28 AAAA A IPv6-адрес.

252 AXFR… передает запросы по всему району.

255 ЛЮБОЙ ЛЮБОЙ запрос на все записи.

Класс (класс): 2 байта, IN представляет данные Интернета, обычно 1

Вот второй перехваченный пакет DNS:

\

Можно видеть, что по сравнению с первым пакетом запроса ответный пакет имеет дополнительное поле «Ответы», и каждый бит поля «Флаги» определен.

Обратите внимание на тот факт, что в поле «Ответы в флагах» указано значение 4, чтобы указать, что в соответствующем поле «Ответы» будет 4 результата анализа.

Поле Ответы можно рассматривать как список, каждый элемент в коллекции является записью ресурса, за исключением упомянутых выше имени, типа, класса, И время

Время жизни (Time to Live): указывает жизненный цикл записи ресурса, время от принятия записи до стирания кэша записи, в секундах. 0x00 00 00 fd всего 253 с.

Длина данных (длина данных ресурса): в байтах 4 здесь означает, что длина IP-адреса составляет 4 байта. Это длина поля Addr ниже.

Addr (данные ресурса): возвращаемый IP-адрес - это результат, который мы хотим получить.

Первое и второе шоу 403 Запрещено

1. Обзор

1.1 DNS

Примечание. Помимо предоставления имени хоста для преобразования IP-адреса, DNS также предоставляет следующие услуги: псевдоним хоста, псевдоним почтового сервера и распределение нагрузки.



2.1.1 Область заголовка

Количество знаков

Логотип [1]


0 Нет ошибок

1 Ошибка формата

2 Проблема на сервере доменных имен

3 Проблемы со ссылкой на домен

4 Тип запроса не поддерживается

5 Управление запрещено

6-15 Зарезервировано

Количество вопросов, ответы RR, авторитетные RR, дополнительные RR

2.1.2 Площадь

(1) Проблемная зона

Содержит информацию о текущих запросах. Содержит имя запроса (поле имени запрашиваемого имени хоста), тип запроса и класс запроса.


Название запроса

Длина имени запроса является переменной, и, как правило, это запрашиваемое имя домена (при наличии IP-адреса, то есть обратного запроса). Эта частьСостоит из одной или нескольких последовательностей идентификаторов, Каждый идентификатор использует значение счетчика первого байта для описания длины идентификатора, и каждое имя заканчивается на 0. Количество подсчитанных байтов должно быть от 0 до 63. Нет необходимости заполнять байты в этом поле. Давайте возьмем пример, чтобы проиллюстрировать, что он более интуитивно понятен. Если имя запроса - gemini.tuc.noao.edu, поле имени запроса выглядит следующим образом [1]:


Тип запроса

Обычно тип запроса - A (получить IP-адрес по имени) или PTR (получить имя домена, соответствующее IP-адресу). Список типов выглядит следующим образом:

тип

мнемонический

объяснение

Каноническое имя определяет псевдоним официального имени хоста

Стартовая авторизация отмечает начало зоны

Знакомы с сетевыми услугами определения услуг, предоставляемыми хостом

Указатель IP Адрес к доменному имени

Информация о хосте дает описание оборудования и операционной системы, используемой хостом.

Обмен почтой перенаправляет почту на почтовый сервер

Запрос всех записей

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

Класс запроса

Обычно 1, это относится к интернет-данным.

(2) Ответ, полномочия, дополнительная область

Каждая запись данных представляет собой 5-кортеж следующим образом:

(Доменное имя, время жизни, категория, тип, значение)

Прямо выражается следующим образом [1]:


Рисунок 6 Записи ресурсов пакета DNS

Доменное имя (2 байта или переменная длина)

Тип (тип записи, см. Таблицу 1)

Запись, Name - это имя хоста, а Value - это IP-адрес имени хоста, поэтому запись ресурса типа A предоставляет стандартное имя хоста для сопоставления IP-адреса.

Записи CNAME, Name - псевдоним хоста, а Value - соответствующий псевдоним хоста.Каноническое имя хоста, Запись может предоставить запрашивающему хосту каноническое имя хоста, соответствующее имени хоста.

Записи MX, Name - псевдоним почтового сервера, а Value - каноническое имя хоста псевдонима почтового сервера. Через записи MX почтовый сервер компании и другие серверы могут использовать один и тот же псевдоним.

Примечание: хост со сложным именем хоста может иметь несколько псевдонимов: первый называется каноническим именем хоста, а второй - псевдонимом хоста (легко запомнить).

категория

Для информации в Интернете, это всегда IN.

Время жить

Используется для указания стабильности записи, чрезвычайно стабильной информации будет присвоено большое значение (например, 86400, количество секунд в дне). В этом поле указывается жизненный цикл (в секундах) записи ресурса, который обычно используется для определения времени сохранения и использования кэшированных данных после того, как программа разрешения адресов извлекает запись ресурса [1].

Длина данных ресурса (2 байта)

Указывает длину данных ресурса (в байтах или 0004, если данными ресурса является IP).

Ресурсные данные

Это поле переменной длины и представляет данные связанных записей ресурсов, возвращаемых в соответствии с требованиями сегмента запроса.



Третье и четвертое шоу 404 Not Found

Для каждого сервера также существуют разные адреса: Oscali, oscdb, liubc, ep2, первый из которых выглядит как облачный сервер Alibaba, а второй - какбаза данныхСервер другой не узнает .

В прошлой статье мы рассмотрели систему доменных имен DNS, которая позволяет по доменному имени определить ip-адрес компьютера.

p, blockquote 1,0,0,0,0 -->

Протокол DNS

p, blockquote 2,0,0,0,0 -->

p, blockquote 3,0,0,0,0 -->

Система работы протокола DNS

p, blockquote 4,0,0,0,0 -->

p, blockquote 5,0,0,0,0 -->

Поиск корневого домена

p, blockquote 6,0,0,0,0 -->

Но корневой сервер отвечает, что он не знает ip-адрес этого компьютера, зато он знает ip-адрес DNS-сервера, которому делегировано управление зоной ru.

p, blockquote 7,0,0,0,0 -->

ip-адрес DNS-сервера

p, blockquote 8,0,0,0,0 -->

Клиент DNS отправляет запрос к серверу, который отвечает за зону ru.

p, blockquote 9,0,0,0,0 -->

Клиент DNS отправляет запрос к серверу

p, blockquote 10,0,0,0,0 -->

p, blockquote 11,0,0,0,0 -->

Знает делегировано управление зоной yandex.ru

p, blockquote 12,0,0,0,0 -->

p, blockquote 13,0,0,0,0 -->

запрос отвечает за зону yandex.ru

p, blockquote 14,0,0,0,0 -->

У этого сервера есть необходимая нам информация и он присылает необходимый нам ip-адрес.

p, blockquote 15,0,1,0,0 -->

присылает необходимый ip-адрес

p, blockquote 16,0,0,0,0 -->

Режим работы DNS

Серверы DNS могут работать в двух режимах:

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

Инфраструктура DNS

Два режима работы необходимы, потому что в системе DNS используются два типа серверов. DNS серверы, которые хранят информацию об отображении доменных имен в ip-адресах, работают в интеративном режиме, так как к этим серверам, особенно к корневым серверам или серверам первого уровня, приходит большое количество запросов, и у них не хватит производительности для работы в рекурсивном режиме.

p, blockquote 18,0,0,0,0 -->

DNS серверы, которые хранят информацию об отображении доменных имен в ip-адресах

p, blockquote 19,0,0,0,0 -->

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

p, blockquote 20,0,0,0,0 -->

сервисы разрешением имен для клиентов

p, blockquote 21,0,0,0,0 -->

Сервер разрешения имен DNS

Сервер разрешения имен находится в локальной сети, он предоставляется либо вашим провайдером, либо вашей организации. Часто адреса таких серверов компьютеры получают автоматически, вместе с ip- адресом по протоколу DHCP.

p, blockquote 22,0,0,0,0 -->

Другой вариант это использовать открытый сервер разрешения имен, которые предоставляют некоторые компании. Например, широко известен общедоступный DNS сервер компании Google с адресом 8.8.8.8, который может использовать кто угодно. Зачем может понадобиться использовать открытый сервер, вместо серверов вашей локальной сети? Некоторые такие серверы, например, сервер компании Яндекс с таким адресом 77.88.8.7 блокирует контент для взрослых.

p, blockquote 23,0,0,0,0 -->

Кэширование

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

p, blockquote 24,0,0,0,0 -->

Кэширование в DNS

p, blockquote 25,0,0,0,0 -->

Иногда, это время может составлять несколько дней или даже недель в зависимости от настроек DNS resolver. Поэтому не удивляйтесь, если вы внесли изменения в DNS записи, но они пока не видны.

p, blockquote 26,0,0,0,0 -->

Протокол DNS

Протокол DNS использует модель клиент-сервер, причем в качестве клиента может выступать, как клиент DNS, так и сервер DNS, которые работают в рекурсивном режиме. В этом случае сервер DNS пересылают запросы другим серверам DNS и выступает в качестве клиента. Взаимодействие ведется в режиме запрос-ответ, соединение не устанавливается, используется протокол UDP, номер порта 53.

p, blockquote 28,0,0,0,0 -->

Формат пакета DNS

Пакет DNS состоит из двух частей заголовок и данные. Заголовок свою очередь состоит из шести полей.

p, blockquote 29,0,0,0,0 -->

Формат пакета DNS

p, blockquote 31,1,0,0,0 -->

Флаги

Поле флаги состоит из нескольких полей:

Формат запроса DNS

Формат DNS запроса очень простой, содержит имя, тип и класс записи.

p, blockquote 33,0,0,0,0 -->

p, blockquote 34,0,0,0,0 -->

DNS пример запроса

p, blockquote 35,0,0,0,0 -->

Формат ответа DNS

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

p, blockquote 36,0,0,0,0 -->

Формат ответа DNS

p, blockquote 37,0,0,0,0 -->

p, blockquote 38,0,0,0,0 -->

Пример ответа DNS

p, blockquote 39,0,0,0,0 -->

Типы записей DNS

До сих пор мы рассматривали единственное применение системы dns это определение IP-адреса по доменному имени компьютера, но кроме этого DNS выполняет много других функций, которые необходимы для работы сети интернет. Для их реализации используются разные типы записей DNS.

p, blockquote 40,0,0,0,0 -->

Каждая запись dns по-английский (Resource Record, RR) имеет тип записи и класс записи. Тип записей говорит о том для чего эта запись предназначена, а класс указывает в каких сетях эта запись может использоваться. Сейчас DNS применяется только в сетях интернет, поэтому в классе записи вы почти всегда увидите IN, сокращение от интернета.

p, blockquote 41,0,0,0,0 -->

Записи, которые используются для определения ip адреса компьютера (IPv4) по доменному имени имеют тип A, для адресов IPv6 используется тип запись 4 раза (AAAA ).

p, blockquote 42,0,0,0,0 -->

Запрос записей разных типов

p, blockquote 43,0,0,0,0 -->

nslookup для DNS

p, blockquote 44,0,0,0,0 -->

А если указать тип записей четыре раза A, то получим адрес IPv6 для того же самого доменного имени.

p, blockquote 45,0,0,0,0 -->

nslookup DNS ipv6

p, blockquote 46,0,0,1,0 -->

DNS псевдонимы

Для одного и того же IP-адреса можно задавать несколько доменных имен. Есть два варианта, как это можно сделать.

  • Альтернативный способ, создать большое количество A записей, которые указывают на один и тот же ip адрес. Но это не всегда удобно, например если вы хотите поменять IP адрес, то вам придется менять его в разных местах. С другой стороны на применение записей типа CNAME есть ряд технических ограничений со стороны системы DNS например, нельзя определять цепочки из канонических имен, которые ссылаются друг на друга, о других ограничениях можно подробно посмотреть в документах RFC, которые описывают работу DNS.

Адрес почтового сервера

p, blockquote 48,0,0,0,0 -->

p, blockquote 49,0,0,0,0 -->

Адрес почтового сервера в DNS протоколе

p, blockquote 50,0,0,0,0 -->

Запись MX содержит два поля. Первое поле это приоритет, а второе это адрес сервера принимающего почту для данного домена. Чем ниже значение, тем более высокий приоритет. Самый высокий приоритет у сервера, у которого значение приоритета пять и самый низкий приоритет у сервера со значением 40. Таким образом, при отправке электронной почты сначала будет выбираться сервер с наименьшим приоритетом, если по каким-либо причинам он будет недоступен, следующий сервер и так далее.

p, blockquote 51,0,0,0,0 -->

Адреса сетевых сервисов

Для некоторых типов сервисов интернет, можно указывать не только IP адрес, но и порт на котором этот сервис работает. Для этого используются DNS записи типа SRV (Service record). Структуры этой записи достаточно сложны, вместо доменного имени указывается строка с описанием сервисов в специальном формате (_сервис._протокол.имя.-˃ приоритет вес порт имя).

p, blockquote 52,0,0,0,0 -->

Адреса сетевых сервисов DNS

p, blockquote 53,0,0,0,0 -->

p, blockquote 54,0,0,0,0 -->

p, blockquote 55,0,0,0,0 -->

Делегирование ответственности

В DNS важным понятием является делегирование ответственности. Информация о компьютерах входящая в ту или иную доменную зону хранится на DNS сервере, который отвечает за работу этой зоны. Но нам необходимо знать, какие серверы отвечают за ту или иную зону.

p, blockquote 56,0,0,0,0 -->

DNS делегирование

p, blockquote 57,0,0,0,0 -->

Записи серверов имен

p, blockquote 58,0,0,0,0 -->

p, blockquote 59,0,0,0,0 -->

Определение имени по IP-адресу

Кроме определения ip адреса по компьютеру, по доменному имени, система dns может использоваться для обратной задачи определения доменного имени компьютера по его IP адресу. Для этого используются специальные зоны, называются обратные (reverse) или реверсивные.

p, blockquote 60,0,0,0,0 -->

Реверсивная зона содержит записи типа PTR (Pointer), которые ставят в соответствии IP-адрес компьютера доменному имени. Однако из-за технических ограничений DNS не может работать напрямую с IP адресами, поэтому для обратных зон был придуман обходной путь, представлять IP адрес в виде доменного имени. Для этих целей создан специальный домен in-addr.arpa и в этом домене IP адреса записываются в обратном порядке, например адрес 77.88.55.66 в обратной зоне будет записан следующим образом 66.55.88.77.in-addr.arpa.

p, blockquote 61,0,0,0,0 -->

Видео про типы записей DNS


Решил как то написать снифер DNS, так сказать just for fun. Просто посмотреть какие адреса в моей системе резолвятся. Протокол старый, документации должно быть много. Много. Но все статьи очень не полные и заканчиваются, на самом интересном моменте. Да, есть rfc1035, но хотелось бы на русском и с пояснениями. Собственно по накоплению опыта и разбора пакета и созрела данная статья. Она рассчитана на тех, кто понимает, что такое DNS и понимает, что бывают запросы и ответы. Для тех, кто хочет немного разобраться в структуре данного протокола.

Статья предполагает теорию, а потом немного практики.

Header — Заголовок DNS пакета, состоящий из 12 октет.

Question section — в этой секции DNS-клиент передает запросы DNS-серверу сообщая о том, для какого имени необходимо разрешить (зарезолвить) запись DNS, а также какого типа (NS, A, TXT и т.д.). Сервер при ответе, копирует эту информацию и отдает клиенту обратно в этой же секции.

Authoritative Section — содержит сведения о том, с помощью каких авторитетных серверов было получена информация включенная в секцию DNS-ответа.

Additional Record Section — дополнительные записи, которые относятся к запросу, но не являются строго ответами на вопрос.

Записей в секциях может быть как несколько, так и не быть вообще. Всё определяется заголовком.

QR (1 бит) — данный бит служит для индентификации того, является ли пакет запросом (QR = 0) или ответом (QR = 1).

Opcode (4 бита) — с помощью данного кода клиент может указать тип запроса, где обычное значение:

  • 0 — стандартный запрос,
  • 1 — инверсный запрос,
  • 2 — запрос статуса сервера.
  • 3-15 – зарезервированы на будущее.

TC (1 бит) — данный флаг устанавливается в пакете ответе в том случае если сервер не смог поместить всю необходимую информацию в пакет из-за существующих ограничений.

RA (1 бит) — отправляется только в ответах, и сообщает о том, что сервер поддерживает рекурсию

Z (3 бита) — являются зарезервированными и всегда равны нулю.

RCODE (4 бита) — это поле служит для уведомления клиентов о том, успешно ли выполнен запрос или с ошибкой.

  • 0 — значит запрос прошел без ошибок;
  • 1 — ошибка связана с тем, что сервер не смог понять форму запроса;
  • 2 — эта ошибка с некорректной работой сервера имен;
  • 3 — имя, которое разрешает клиент не существует в данном домене;
  • 4 — сервер не может выполнить запрос данного типа;
  • 5 — этот код означает, что сервер не может удовлетворить запроса клиента в силу административных ограничений безопасности.

QNAME — Каждая запись запроса и ответа начинается с NAME. Это доменное имя, к которому привязана или которому “принадлежит” данная запись. Она закодирована как серия меток. На этом моменте следует остановиться несколько поподробнее.

В статьях, что я видел, забывают сказать, что исходный протокол DNS предусматривает два типа меток, которые определяются первыми двумя битами:

Так же метка может содержать значение 0x00 (нулевая длина), означает что это корневое доменное имя (root).

Максимальная длина NAME <= 255. Это создано ради простоты реализации.

QTYPE — Тип записи DNS, которую мы ищем (NS, A, TXT и т.д.).
QCLASS — Определяющий класс запроса (IN для Internet).

NAME — Такой же формат, что и QNAME в секции запроса.
TYPE — тип ресурсной записи. Определяет формат и назначение данной ресурсной записи.
CLASS — класс ресурсной записи; теоретически считается, что DNS может использоваться не только с TCP/IP, но и с другими типами сетей, код в поле класс определяет тип сети. В основном IN для Internet (Код 0x0001)
TTL — (Time To Live) — допустимое время хранения данной ресурсной записи в кэше неответственного DNS-сервера.
RDLENGTH — длина поля данных (RDATA).
RDATA — поле данных, формат и содержание которого зависит от типа записи.


Разберем структуру dns заголовка.

ID транзакции = 0x9bce

Далее идут флаги. 01 00 представим как двоичное значение 0’0000’0’0’1’0’000’0000 (здесь и далее я разделяю биты апострофом для лучшего визуального представления деления флагов)
QR=0 — значит этот пакет является запросом;
Opcode=0000 – Стандартный запрос;
AA=0 — данное поле имеет смысл только в DNS-ответах, поэтому всегда 0;
TC=0 — данное поле имеет смысл только в DNS-ответах, поэтому всегда 0;
RD=1 – Просим вернуть только IP адрес;
RA=0 – отправляется только сервером;
Z=000 – всегда нули, зарезервированное поле;
RCODE=0000 – Все прошло без ошибок


Разберем структуру dns заголовка.

ID транзакции = 0x9bce. Она должна быть ровна ID от запроса.
Снова флаги. 81 80 представим как двоичное значение 1’0000’0’0’1’1’000’0000
QR=1 — значит этот пакет является ответом;
Opcode=0000 – Стандартный запрос;
AA=0 – Сервер не является авторитетным для домена;
TC=0 – Вся информация поместилась в один пакет;
RD=1 – Просим вернуть только IP адрес;
RA=1 – Сервер поддерживает рекурсию;
Z=000 – всегда нули, зарезервированное поле;
RCODE=0000 – Все прошло без ошибок

QTYPE = 0x0001 – Соответствует типу A (запрос адреса хоста)
QCLASS = 0x0001 – Соответствует классу IN.
TTL = 0x00000c90 – время актуальности данных 3216 секунд.
RDLENGTH = 0x0004 – Длина данных 4 октета.
RDATA = «b2 f8 ed 44».

Как уже было сказано, формат и содержание зависит от типа записи. Тип записи у нас “A”. Значит, чтобы получить IP мы должны считать 4 байта. Каждый байт это и будет соответствующий октет IP адреса, записанный в 16ричном виде.

Получаем IP: b2.f8.ed.44 или «178.248.237.68». Что и требовалось получить.

Читайте также: