Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сети_лекции2.doc
Скачиваний:
146
Добавлен:
11.03.2015
Размер:
25.77 Mб
Скачать

7.3. Система доменных имен

Первоначально, когда сети были относительно небольшими, для установления соответствия между доменным именем и сетевым адре­сом использовался простой текстовый файл hosts, в котором содержал­ся список всех доменных имен и соответствующие им IP-адреса. Этот файл хранился на каждом компьютере в сети. Однако по мере добав­ления в сеть новых компьютеров обновление этого файла становилось все более трудной задачей. Ситуация кардинально изменилась после создания системы доменных имен. Система доменных имен (Domain Name System, DNS) - распределенная система, предназначенная для получения информации о сетевом узле по его доменному имени.

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

Структура DNS

Как показано на рис. 7.5 в DNS имеет иерархическую структуру. Каждый уровень в этой иерархии называется доменом (domain). При записи домены отделяются друг от друга точкой. Самый верхний уро­вень этой иерархии называется корнем (root). Следующий уровень в иерархии DNS занимают имена доменов верхнего уровня (такие как .com. .net, .org), описывающие категорию, к которой относится то или иное пространство доменных имен. Домены верхнего уровня являются общедоступными и могут применять любыми людьми и организация­ми. Например, коммерческим организациям обычно назначается домен .com. Также поддерживаются доменные имена, в которых отражают код страны, например для России используется домен ли.

За управление доменами верхнего уровня отвечает Центр по при­своению номеров Интернета (Internet Assigned Numbers Authority, IANA). База данных всех доменов верхнего уровня доступна по адресу http://www.iana.org/domains/root/db/.

Корень(root)

It.Bstu.Ru

Рис. 7.5. Пример иерархии DNS

После доменов верхнего уровня следуют домены второго уровни, например bstu.ru. В иерархии DNS также могут создаваться различные поддомены. Например, в домене bstu.ru существует поддомен it.bstu.ru.

Принципы работы DNS

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

Если необходимо получить IP-адрес какого-либо домена, то от­правляется запрос локальному DNS-серверу на поиск этого IP-адреса. В DNS реализуются три сценария поиска IP-адреса:

  1. Если домен располагается в той же зоне, что и компьютер, кото­рый посылал запрос. Локальный DNS-сервер, имеющий адрес до­мена в своей базе данных, возвращает запрашиваемый IP-адрес.

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

Кроме «прямого» запроса, который пытается найти IP-адрес по из­вестному доменному имени. Существует «обратный» запрос, который решает противоположную задачу - поиск доменного имени по извест­ному IP-адресу.

База данных DNS

База данных DNS представляет собой текстовый файл, состоящий из записей ресурсов (Resource Records. RR), которые описывают до­мены и их функции в зоне. DNS-сервер выдает записи ресурсов по за­просу компьютеров или других DNS-серверов. Таким образом, истин­ное назначение DNS заключается в преобразовании доменных имен в записи ресурсов.

Запись ресурса, как правило, состоит из пяти полей. Первое поле всегда содержит имя домена к которому относится текущая запись. Есть две формы записи имен: полное имя домена с точкой на конце (it.bstu.ru.) или только имя поддомена (it). За этим полем может следо­вать необязательное значение время жизни, которое указывает, в тече­ние какого промежутка времени информация в этой записи должна сч итаться действителыгой.

Третье поле указывает класс адреса, который всегда принимает значение IN (адреса сети Интернет). Данное поле является необяза­тельным и присутствует для совместимости со старыми DNS-сер верами.

Четвертое поле определяет тип записи ресурса. За ним идут зна­чения, специфические для данного тина. Существует более двадцати типов записей ресурсов. В данном курсе будут рассмотрены только наиболее используемые записи ресурсов.

Запись начала полномочий (SOA)

Запись начала полномочий (Start Of Authority, SOA) в базе данных DNS показывает, какой сервер является ответственным за конкретную зону. Кроме того, в записях SOA содержится адрес электронной почты администратора, отвечающего за работу DNS, и другая критически важная информация. Формат записи SOA:

name [время жизни] [класс адреса] SOA origin person (

serial

refresh

retry

expire

minimum)

Здесь name - имя зоны, которая далее описывается в базе данных; origin - имя сервера, где ведется эта зона; person - адрес электронной почты администратора данной зоны: serial - текущая версия базы дан­ных DNS (при обновлении версия увеличивается); refresh - период обновления (в секундах), который определяет, как часто вторичные DNS-сервера должны проверять данные на первичных DNS-серверах; retry - период повтора, который определяет когда вторичный DNS-сервер повторяет попытку обновить содержимое своей базы после не­удачной предыдущей попытки; expire - период актуальности, опреде­ляет период времени, в течение которого данные вторичного сервера считаются достоверными; minimum - время жизни, которое возвраща­ется для всех запросов к базе данных.

Записи А

Наиболее распространенным типом записей ресурсов являются за­писи A (Address). Запись A (Address) связывает имя домена с адресом протокола IPv4. Формат записи А:

host [время жизни] [класс адреса] A address

Здесь host - имя домена, a address - IP-адрес этого домена.

Записи сервера имей (NS)

Запись сервера имен (Name Server, NS) указывают, какие домены в базе данных DNS являются DNS-серверами для конкретной зоны. Формат записи:

host [время жизни] [класс адреса] NS server

Здесь host - имя домена в зоне, за который отвечает DNS-сервер (если оно опущено, то запись относится к зоне, указанной в SOA); server- доменное имя DNS-сервера.

Записи обмена почтой (MX)

Записи обмена почтой (Mail Exchanger, MX) указывают, какие до­мены позволяют принимать сообщения электронной почты. Записи MX настраиваются на уровне зоны, т.е. когда электронная почта будет отправляться домену с именем зоны, она будет перенаправляться тому домену или доменам, на которые установлена соответствующая запись MX. Формат записи MX:

name [время жизни] [класс адреса] MX preference host

Здесь name - имя зоны (если оно опущено, то запись относится к зоне, указанной в SOA); preference - целое число, обозначающее поря­док подключения, если используется несколько почтовых серверов; host - имя домена, на котором установлен почтовый сервер.

Записи указателей (PTR)

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

X.X.X.X.in-addr.ama. [время жизни] [класс адреса] PTR host

Параметр X.X.X.X.in-addr.ama. - это обратное отражение доменно­го имени в IP-адрес (дтя домена с IP-адресом 192.168.0.1 будет равно 1.0.168.192.in-addr.arpa). Параметр host означает имя домена.

Записи канонических имен (CNAME)

Запись канонического имени домена (Canonical Name, CNAME) позволяет представлять псевдоним домена и тем самым позволяет лю­бому домену упоминаться в DNS под несколькими именами. По сути, эта запись перенаправляет адресуемые ей запросы к записи А соответ­ствующего домена. Формат записи CNAME:

name [время жизни] [класс адреса] CNAME host

Здесь name - каноническое имя домена, a host - имя домена.

Пример балы дачных DNS

Ниже приводится небольшой пример базы данных DNS (точка с запятой начинает комментарий).

example.com. IN S0A ns1.example.com. master.example.com. (

2000260601 ; серийный номер

10800 ; период обновления (3 часа)

3600 ; период повтора (1 час)

604800 ; период актуальности (1 неделя)

86400) ; время жизни (1 день)

IN NS ns1 .example.com. ; первичный DNS-сервер hostl IN NS ns2.example.com. ; вторичный DNS-сервер

MX 10 mail1.example.com. ; первичный почтовый сервер MX 20 mail2.example.com. ; вторичный почтовый сервер

www IN CNAME host1.example.com. ; Web-сервер ftp IN CNAME host1.example.com. ; FTP-cepeep

host1.example.com. IN A 192.168.0.1 host2 IN A 192.168.0.2

1.0.168.192.in-addr.arpa. IN PTR host1.example.com. 2.0.168.192.in-addr.arpa. IN PTR host2.example.com.

Протокол DNS

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

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

Заголовок DNS-пакета

На рис 7.6 изображен заголовок, который имеет фиксированную длину 12 байт [8]. Первые два байта содержат поле «Идентифика­тор», который позволяет распознавать различные запросы и ответы. Следующие два байта это флаги. Флаг QR обозначает тип (0 - запрос.

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

1 - ответ). Флаг OPCODE определяет тип запроса (0 - стандартный, 1 - обратный, 2 - запрос о статусе сервера).

36

Флаг ТС устанавливается, когда требуется урезать данные в паке­те до вида, удобного для передачи по сети. Такое вполне возможно при использовании протокола UDP.

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

Флаг Z в настоящее время не используются и зарезервирован на будущее.

Флаг RCODE отображает состояние ответа (0 - без ошибок, 1 -ошибки в пакете запроса, 2 - внутренние ошибки не дали возможности серверу обработать запрос, 3 - имя, указанное в запросе, не существу­ет, 4 - данный тип запроса не поддерживается сервером, 5 - сервер отказался обработать запрос).

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

Блок запросов DNS-пакета

Блок запроса состоит из трех полей. Первое поле переменной дли­ны содержит имя домена. Для записи доменных имен используется специальный формат. Перед именем каждого домена ставится одно­байтное значение, которое определяет длину имени. Конец списка обо­значается нулем. На рис. 7.7 показано как будет записано доменное имя www.bstu.ru в таком формате.

Рис. 7.7. Пример записи доменного имени в DNS-накета

Второе поле имеет длину 2 байта и определяет тип записи ресур­сов. Значения этого поля для каждого типа перечислены в таблице 7.3. Третье поле указывает класс адреса, который всегда принимает значе­ние равное 1, что соответствует классу IN. Длина этого поля 2 байта.

Таблица 7.3. Значения, поля тип записи ресурсов

Тин записей ресурсов

Значение

SOA

6

Л

1

NS

2

MX

15

PTR

12

CNAME

5

Блоки ответов, авторитетных серверов и дополнительной информации

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

Каждый из этих блоков состоит из шести полей. Первое поле пе­ременной длины содержит имя домена (записывается в том же форма­те, что и в запросе). Второе поле длиной два байта содержит тип запи­си ресурса то же, что и в запросе. Третье поле кчасс адреса длиной два байта всегда принимает значение 1. Четвертое поле содержит время жизни для данной записи (размер 4 байта). Пятое поле определяет размер поля данных (размер 2 байта). Последнее содержит данные для соответствующей записи.