База данных DNS

Глава 5. База данных DNS

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

Единичный информационный объект базы данных DNS называют записью о ресурсе (resource record, RR). Каждая из записей имеет ассоциированный с ней тип, описывающий категорию данных и тип сети, к которой принадлежит описываемый объект. При этом допускаются различные схемы адресации, например адреса IP (класс IN) или адреса сетей Hesoid (используются в Массачусетском технологическом институте, MIT). Основным типом записи о ресурсе является запись класса А, связывающая полное доменное имя с IP-адресом IP.

Каждый узел может иметь несколько доменных имен. Одно из этих имен должно быть объявлено официальным, или каноническим именем узла (canonical host name), в то время как остальные будут всего лишь псевдонимами, ссылающимися на каноническое имя. Различие в том, что каноническое имя ассоциировано с записью класса А, в то время как остальные имеют запись типа CNAME, указывающую на основное имя узла.

Записи базы данных

Имя домена идентифицирует ресурс системы. Эта ассоциация хранится в базе данных DNS виде отдельной записи — resource records (RRs), компоненты которой представлены в Табл. 1.

0                                                15

NAME

TYPE

CLASS

TTL

RDLENGTH

RDATA

Таб. 1 Компоненты записи RR

NAME (255 байт). Имя, которое идентифицирует ресурс. Имя ресурса содержит имя домена (или хоста пользователя), в котором расположен этот ресурс, т. е. "владельца" информации. Например, RR, которая содержит IP-адрес хоста, содержит и имя домена, в котором расположен этот адрес. (Серверы имен хранят информацию о ресурсе в древовидной структуре параллельно со структурой пространства имен в базе данных.)

TYPE (2 байта). Тип ресурса. Тип обозначает группу принадлежности ресурса, например, адрес хоста или идентификатор почтового роутера.

CLASS (2 байта). Поле класса ресурса. Поле класса идентифицирует формат данных ресурса. Например, принадлежит ресурс IP-адреса хоста к ARPA Internet (класс "IN") или к Computer Science Network format (класс "CSNET"). Необходимо отметить, что для разных типов ресурса класс ресурса может означать разное. Например, класс IN использует только 32-битные IP-адреса, а класс CSNET использует как 32-битные IP-адреса, так и адреса Х25 и номера телефонов. То есть поле класса используется как указатель того, как использовать информацию, хранящуюся в данном ресурсе.

TTL (32 бита). Параметр, используемый для управления RR. TTL задает временной интервал продолжительности нахождения данной записи в кэше системы (в секундах). При просмотре этой записи в кэше данный интервал уменьшается, и если он становится меньше или равным нулю — данная запись в кэше системы уничтожается. Если данное поле пустое, то в качестве TTL берется значение поля Minimum, задаваемое в записи SOA.

LENGTH (32 бита). Длина поля данных. Это поле позволяет серверу имен или программе разрешения имен домена определить границы данных, даже если они не в состоянии интерпретировать содержимое поля данных.

DATA. Данные ресурса. Максимальная длина поля — 65535 байт. Формат представления данных определяется полями типа и класса.

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

Тип

Величина

Описание

A

1

Адрес хоста или ресурса (вид адреса определяется полем класса)

NS

2

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

MX

15

Идентификатор почтового роутера (определяет хост, который служит в данном домене в качестве обработчика всей поступающей почты)

CNAME

5

Псевдоним ресурса

SOA

6

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

PTR

12

Указатель другой части пространства имен домена

WKS

11

Описание сервисов хоста (содержит спецификацию работающих на данном компьютере сервисов)

HINFO

13

Идентификатор процессора (CPU) и операционной системы (OS) хоста.

Кроме перечисленных выше, тип может принимать и другие значения. Часть из них устарела и заменилась на другие (например, MD и MF были заменены на MX), а часть используется очень редко.

Класс означает принадлежность записи к определенной системе, тогда как тип определяет функциональность записи в этой системе.

Например, сеть Internet определена значением поля класса = 1, и обозначением "IN" — Internet, а сеть CHAOS значением класса = 3, и обозначением "СН". Для типа "А" класса "IN" поле данных будет содержать 32-битный IP-адрес, а для того же типа класса "СН" (система CHAOS) — имя домене CHAOS, следующее за 16-битным адресом CHAOS.

Как уже было сказано, формат поля данных во многом зависит от типа записи. Ниже представлены форматы полей данных ресурса для класса "IN' некоторых типов RR.

Тип "CNAME". Запись с ресурсом типа CNAME  применяется для указания псевдонима хоста, тип — строка.
0                                                 15

CNAME

                   Таб. 2. Запись с ресурсом типа CNAME

Тип "HINFO". Запись с ресурсом типа HINFO  служит для хранения информации о хосте, например, об аппаратной платформе и операционной системе компьютера. CPU тип — строка, OS тип — строка.                
0                                            15

CPU

OS

                    Таб. 3. Запись с ресурсом типа HINFO

Тип "MX". Для отдельных хостов или всего домена запись с ресурсом типа MX (рис.9) позволяет определить почтовый шлюз — компьютер, куда будет направляться электронная почта, предназначенная для этих хостов. Поле данных состоит из 16-битного значения приоритетности почтового роутера, задает приоритет доставки. При этом ноль означает самый высокий приоритет, и строки — имени хоста, работающего как почтовый роутер.
0                                            15

PREFERENCE

EXCHANGE

                      Таб. 4. Запись с ресурсом типа MX

Тип "NS". Запись с ресурсом типа NS обозначает имя хоста, являющегося первичным сервером имен для домена. Поле данных содержит имя хоста
 0                                          15

NSDNAME

Таб. 5. Запись с ресурсом типа NS

Тип "SOA": параметры зоны. Запись с ресурсом типа SOA обозначает начало зоны управления сервера имен. Зона управления действует до следующей записи SOA. Пакет данных содержит: MNAME — имя родительского домена данной зоны; RNAME — имя домена, обозначающее почтовый ящик администратора зоны; SERIAL — 32-битный идентификатор зоны; REFRESH — 32-битное значение интервала времени (в секундах), через который содержание зоны должно обновляться; RETRY — 32-битный интервал (в секундах) повторения запросов обновления содержания зоны в случае неудачи операции обновления; EXPIRE — 32-битный интервал (в секундах) продолжительности полномочий домена в зоне; MINIMUM — 32-битное значение (в секундах) минимального значения TTL, которое устанавливается в сообщениях ответа в данной зоне на запросы, если у запрашиваемой записи параметр TTL не установлен в большее значение.
 0                                     15

MNAME

RNAME

SERIAL

REFRESH

RETRY

EXPIRE

MINIMUM

Таб. 6. Запись с ресурсом типа SOA

Тип "WKS". Запись с ресурсом типа WKS используется для описания широко известных сервисов, поддерживаемых определенным протоколом, хостом, расположенным по определенному адресу (поле ADDRESS — 32 бита). Поле PROTOCOL (8 бит) специфицирует тип протокола, а битовое поле (<BIT MAP> — переменной длины) определяет порт сервиса, работающий по данному протоколу: каждый бит поля, равный 1, определяет активный порт (если бит, соответствующий номеру порта отсутствует, считается, что он равен 0). Например, если PROTOCOL=6 (TCP), а 26-ой бит поля установлен в 1, это означает, что данный хост слушает 25-й (SMTP) порт протокола TCP. Запись WKS создается на каждый протокол, с которым работает хост.

0                        

8                         15

ADDRESS

PROTOCOL

BIT MAP

BIT MAP

Таб. 7. Запись с ресурсом типа WKS

Текстовое представление данных

Записи RR хранятся в базе данных DNS и передаются в пакетах DNS-протокола в двоичном виде. Однако, как известно, RRs модифицируются администратором в файлах главного архива в текстовом формате. Текстовый формат представления состояния базы данных значительно упрощает процедуры вставки, модификации или удаления записей.

Текстовый файл содержит последовательность записей, которые располагаются в строчки, заканчивающиеся символом перевода строки — <CRLF>. Для размещения информации на нескольких строках используются скобки. Ниже перечислены некоторые из этих символов, имеющих специальное значение:

Символы

Значение

.

Отдельно стоящая точка в поле name обозначает текущий домен

@

Отдельно стоящий символ "@" в поле name обозначает текущий исходный домен

( )

Скобки используются для размещения поля data на нескольких строках (когда поле data занимает несколько строк)

*

Метасимвол. Заменяет любой набор символов

;

Символ комментария. От этого символа и до конца строки информация игнорируется.

Примечание

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

Общая структура файла выглядит следующим образом:

<domain-name><RR> [; <coniment>]

<blank><RR> [ ;<comrnent>]

<blank>[;<comment>]

$INCLUDE <file-name> [<domain-name>] ;[<cominent>]

<blank> — пустая строка, символы "пробела" или табуляции.
><domain-name> — имя домена — владельца записи. Как правило, в текстовом файле запись (строка) RR начинается с идентификатора владельца данной записи. Если поле domain-name пустое, то в качестве него используется последнее заданное в предыдущих записях поле domain-name, т. е. предполагается, что данная запись относится к предыдущему имени домена (как правило, для удобства чтения, добавляется несколько пробелов и делается выравнивание столбцов).
SINCLUDE — вставляет имя файла имен в текущий файл имен (и может содержать имя домена, который описан в добавленном файле).
<RR> — информационная запись файла имеет следующий формат:

[<TTL>] [<class>] <type> <RDATA>

[<class>] [<TTL>] <type> <RDATA>

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

Здесь мы не будем описывать все тины записей, а приведем пример записей в базе данных DNS. Далее показан фрагмент базы данных серверов имен зоны physics.groucho.edu.

; Информация авторитетного узла зоны physics.groucho.edu

@      IN    SOA   niels.physics.groucho.edu.

hostmaster.niels.physics.groucho.edu. {

940902      ; номер версии файла зоны (serial no)

360000      ; период обновления информации вторичных

                  ;серверов имен (refresh)

3600          ; период повторных попыток связи (retry)

3600000    ;время жизни информации об именах (expire)

3600          ;время жизни записей о ресурсах по умолчанию

                  ; (default ttl) }

;

; Серверы имен

                  IN        NS         niels

                  IN        NS         gauss.maths.groucho.edu.

gauss.maths.groucho.edu. IN A         149.76.4.23

;

; теоретическая физика (подсеть 12)

niels           IN        A       149.76.12.1

                 IN         A       149.76.1.12

Nameserver IN CNAME niels

otto           IN         A       149.76.12.2

quark         IN        A       149.76.12.4

down         IN        A       149.76.12.5

strange       IN        A       149.76.12.6

; Collidner Lab. (подсеть 14)

boson       IN         A        149.76.14.1

muon        IN         A        149.76.14.7

bogon       IN         A        149.76.14.12

Кроме записей класса А и CNAME в начале файла можно видеть специальную запись, занимающую несколько строк. Это запись класса SOA (Start of Authority).Она содержит основную информацию о зоне, для которой этот сервер является авторитетным. Например, здесь содержится время жизни (TTL) всех записей по умолчанию. Подробное описание значений полей этой записи приведено в главе 6.

Заметьте, что все имена, не оканчивающиеся на точку, интерпретируются как относительные по отношению к домену groucho.edu . Специальное имя @ используется для обозначения самого имени домена.

Выше упоминалось, что серверы имен домена groucho.edu должны знать о зоне имен physics и перенаправлять запросы относительно компьютеров этой зоны серверам имен этой зоны. Для этого обычно используется пара записей: запись типа NS, содержащая полное доменное имя сервера, и запись типа А, отражающая IP-адрес, соответствующий этому имени. Так как эти две записи обеспечивают целостность пространства имен, их часто называют связывающими записями (glue records). Только благодаря этим записям родительская зона имен может ссылаться на имена компьютеров из дочерней зоны. Далее показаны связывающие записи, указывающие на серверы имен зоны physics.groucho.edu .

;

; Данные о зоне имен groucho.edu.

@  IN  SOA  vaxl2.gcc.groucho.edu.

hostmaster.vaxl2.gcc.groucho.edu.{

233            ; номер версии файла зоны (serial no)

360000      ; период обновления информации вторичных

                  ;серверов имен (refresh)

3600          ; период повторных попыток связи (retry).

3600000    ; время жизни информации об именах (expire)

3600          ; время жизни записей о ресурсах

                  ; по умолчанию (default ttl)

}

;

; Связывающие записи для зоны имен physics,groucho.edu

physics          IN      NS      niels.physics,groucho.edu.

                     IN      NS       gauss.maths.groucho.edu.

niels.physics   IN       A        149.76.12.1

gauss.maths   IN        A        149.76.4.23