Hosted by uCoz

Формат базы данных DNS

Стандарты DNS

Настройка базы DNS задается в специальных текстовых файлах на серверах имен. Форматы записей в этих файлах регламентируются стандартами, изложенными в документах RFC (Request For Comments). Они разрабатываются "законодательным" органом Internet - IETF (Internet Engineering Task Force). Однако сам набор файлов и порядок их загрузки на серверах имен RFC не регламентируется. Для этого существует стандарт de facto под названием BIND (Berkley Internet Name Domain). Данная спецификация была разработана в университете Беркли и впервые реализована в BSD Unix. Подавляющее большинство серверов имен поддерживают спецификацию BIND.

Многие версии программного обеспечения серверов имен имеют административные утилиты, упрощающие настройку и управление базами DNS. Тем не менее администраторы сетей, как правило, предпочитают не пользоваться ими, а работать напрямую с файлами базы DNS. Хотя это несколько усложняет администрирование, но в то же время дает максимальную гибкость и полный контроль при управлении DNS.

В общем случае порядок запуска серверов имен следующий: сначала создаются файлы базы DNS (напрямую или через административные утилиты), а затем запускается сервис DNS (в AIX - демон named).

Формат записей в файлах базы DNS

В файлах базы DNS серверов имен используется так называемый формат записи стандартных ресурсов (Standard Resource Record Format). Выглядит этот формат следующим образом:

[<Name>] [<TTL>] [<Class>] <Type> <Data>

Каждая составляющая здесь является полем записи и отделена от других пробелами или знаками табуляции.

<Name> - имя описываемого ресурса. Оно зависит от поля и может обозначать домен, зону управления, имя хоста и т. д. Если поле <Name> пустое, то в качестве него используется последнее заданное поле <Name> (в предыдущих записях).

<TTL> - время жизни (в секундах). Определяет, как долго клиент DNS будет хранить запись в кэш-памяти. Если данное поле пустое, то в качестве <TTL> берется значение поля , задаваемое в записи SOA (см. ниже).

<Class> описание класса используемых протоколов. Для Internet (TCP/IP) значение этого поля - IN. Если поле пустое, то в качестве него используется последний заданный класс.

<Type> - поле, задающее тип ресурса записи. Возможные значения этого поля приведены в разделе "Типы ресурсов".

<Data> - поле, устанавливающее данные текущего ресурса. Его содержание зависит от поля . Поле может быть составным, т. е. состоять из нескольких полей.

Следующие символы в записях имеют специальное значение (ниже перечислены некоторые из этих символов).

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

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

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

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

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

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

Типы ресурсов

Тип ресурса задается в поле записи ресурса. Типов ресурсов множество. Полный их список можно узнать в соответствующих RFC (см. "Дополнительную информацию"). Ниже приводятся наиболее используемые типы.

SOA Начало полномочий (управления) сервера имен.
NS Сервер имен.
A Адрес хоста.
CNAME Каноническое имя. Используется для задания псевдонимов.
HINFO Информация о хосте.
MX Почтовый шлюз.
PTR Указатель.

Рассмотрим каждый из этих типов.

SOA (начало полномочий)
Запись с ресурсом типа SOA обозначает начало зоны управления сервера имен. Зона управления действует до следующей записи SOA.

ПРИМЕР ЗАПИСИ SOA

<Name> [<TTL>] [<Class>] SOA <Origin> <Person> (
<Serial>
<Refresh>
<Retry>
<Expire>
<Minimum> )

komtek.dp.ua. IN SOA srv.komtek.dp.ua. root.srv.komtek.dp.ua. (
970308
3600
600
3600000
86400 ) Здесь поле <Data> является составным и включает поля <Origin>, <Person>, <Serial> и т. д.

<Name> Обозначает имя домена зоны управления.

<Origin> Имя первичного сервера имен зоны.

<Person> Почтовый ящик лица, ответственного за зону. Данное поле формируется аналогично электронному адресу, но вместо символа "@" ставится точка (т. е. alex@komtek.dp.ua заменяется на alex.komtek.dp.ua).

<Serial> Номер версии зоны. Когда производятся изменения в зоне, то это число необходимо увеличить. Именно по данному полю ориентируется вторичный сервер имен, определяя необходимость обновления информации по зоне.

<Refresh> Время в секундах, по прошествии которого вторичный сервер проверяет необходимость обновления информации по зоне.

<Retry> Время в секундах для повторного обращения вторичного сервера зоны, если ранее попытка обращения к первичному серверу была неудачной.

<Expire> Предел времени в секундах. Если вторичный сервер не может получить доступ к первичному в течение этого времени, то он будет считать информацию по зоне устаревшей.

<Minimum> Значение TTL в записях ресурсов данной зоны по умолчанию, т. е. когда поле <TTL> пустое.

NS (сервер имен)
Запись с ресурсом типа NS обозначает имя хоста, являющегося первичным сервером имен для домена.

ПРИМЕР ЗАПИСИ NS

[<Domain>] [<TTL>] [<Class>] NS <Server>

komtek.dp.ua. NS srv1.komtek.dp.ua.
NS srv2.komtek.dp.ua. <Domain> обозначает домен, а <Server> - имя сервера имен. В примере показывается, что серверы srv1.komtek.dp.ua и srv2.komtek.dp.ua представляют собой серверы имен домена komtek.dp.ua.

A (адрес)
Запись с ресурсом типа A служит для задания сетевого адреса хоста. Здесь <Host> - доменное имя хоста, а <Address>- его IP-адрес.

ПРИМЕР ЗАПИСИ A

[<Host>] [<TTL>] [<Class>] A <Adress>

sri-nic.arpa. A 10.0.0.51

CNAME (каноническое имя)
Запись с ресурсом типа CNAME применяется для указания псевдонима хоста. обозначает псевдоним, а <Host> - официальное (каноническое) имя хоста.

ПРИМЕР ЗАПИСИ CNAME

[<Nickname>] [<TTL>] [<Class>] CNAME <Host>

rs1 CNAME srv1.komtek.dp.ua.
www CNAME srv2.komtek.dp.ua
ftp CNAME srv2.komtek.dp.ua
HINFO (информация о хосте)
Запись с ресурсом типа HINFO служит для хранения информации о хосте, в частности об аппаратной платформе и операционной системе компьютера.

Поле <Host> обозначает доменное имя хоста, <Hardware> - аппаратную платформу, <Software> - ОС хоста. Значения полей <Hardware> и <Software> стандартизированы, их следует брать из RFC 1700.

ПРИМЕР ЗАПИСИ HINFO

[<Host>] [<TTL>] [<Class>] HINFO <Hardware> <Software>

pc1 HINFO IBM-PC MSDOS
rs1 HINFO IBM-RS/6000 AIX
MX (почтовый шлюз)
Так как не на всех хостах запущен сервер e-mail, то для отдельных хостов или всего домена запись с ресурсом типа MX позволяет определить почтовый шлюз - компьютер, куда будет направляться электронная почта, предназначенная для этих хостов. Поле <Name> обозначает домен или имя хоста, для которого устанавливается почтовый шлюз. <Host> - имя хоста почтового шлюза. задает приоритет доставки, при этом ноль означает самый высокий приоритет.

В примере показано, что если почта предназначена для домена komtek.dp.ua, то она доставляется на машину unix1.komtek.dp.ua. Если же почта предназначена для любого компьютера домена, имя которого оканчивается на -dos, то она направляется на unix2.komtek.dp.ua.

ПРИМЕР ЗАПИСИ MX

[<Name> ] [<TTL>] [<Class>] MX <Preference> <Host>

komtek.dp.ua. MX 10 unix1.komtek.dp.ua.
*-dos.komtek.dp.ua. MX 10 unix2.komtek.dp.ua.
Таким образом, письмо, отправленное по адресу:

1. alex@komtek.dp.ua, переадресуется alex@unix1.komtek.dp.ua;
2. vad@pc-dos.komtek.dp.ua, переадресуется vad@unix2.komtek.dp.ua;
3. dba@host1.komtek.dp.ua, попадет к dba@host1.komtek.dp.ua.

Если администратор определяет несколько записей MX, то для указания порядка опроса почтовых шлюзов используется число (в примере - 10) первым опрашивается шлюз с меньшим числом.

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

Структура имен в доменной системе построена так, что, продвигаясь вдоль иерархического дерева DNS, за счет последовательного обращения к серверам имен IP-адрес хоста можно найти по его имени (прямое преобразование). А вот доменное имя хоста по его IP-адресу в такой системе найти довольно трудно.

Для того чтобы облегчить эту задачу, в пределах общей доменной структуры был создан вспомогательный домен. Он имеет специальное название IN-ADDR.ARPA. Внутри этого домена существуют поддомены для каждой IP-сети. Имена этих поддоменов основаны на сетевых адресах, причем байты (октеты) IP-адресов представлены в обратном порядке.

Например, сеть cso.uiuc.edu имеет сетевой адрес 128.174 (вернее, 128.174.0.0, это IP-сеть класса B). Внутри этой сети имеется хост vmd.cso.uiuc.edu с IP-адресом 128.174.5.98. Тогда для всей сети вспомогательный домен будет 174.128.in-addr.arpa. Имя хоста в этом домене будет 98.5.174.128.in-addr.arpa.

Ресурсы с записью типа PTR служат для отображения этих специальных доменных имен в обычные. Поле обозначает специальное доменное имя (в домене IN-ADDR.ARPA), а поле <Name> - официальное доменное имя хоста.

ПРИМЕР ЗАПИСИ PTR ДЛЯ ХОСТА

[<Special-name>] [<TTL>] [<Class>] PTR <Name>

98.5.174.128.in-addr.arpa. PTR vmd.cso.uiuc.edu.
51.0.0.10.in-addr.arpa. PTR sri-nic.arpa.
Вспомогательный домен IN-ADDR.ARPA используется также для указания шлюза (маршрутизатора) для сетей. Шлюз представляет собой хост, соединяющий несколько IP-сетей. Для него существуют обычные записи PTR хоста, но, кроме того, имеются специальные записи PTR, представляющие IP-сети целиком. Эти записи включают только первые 1, 2 или 3 байта (октета) IP-адреса сети в зависимости от класса IP-сети (A, B или C).

Допустим, имеется шлюз gw.komtek.dp.ua, объединяющий сети класса A, B и C и имеющий соответствующие IP-адреса: 12.2.0.7, 129.14.1.3 и 194.140.13.2. Ниже представлены записи A и PTR для данного шлюза.

ПРИМЕР ЗАПИСЕЙ PTR И A ДЛЯ ШЛЮЗА

;Записи A
gw.komtek.dp.ua. A 192.168.1.7
A 192.168.2.3
A 194.140.13.2
; Записи PTR для шлюза
7.1.168.192.in-addr.arpa. PTR gw.komtek.dp.ua.
3.2.168.192.in-addr.arpa. PTR gw.komtek.dp.ua.
2.13.140.194.in-addr.arpa. PTR gw.komtek.dp.ua.
; Записи PTR для сетей
1.1.168.192.in-addr.arpa. PTR gw.komtek.dp.ua.
2.168.192.in-addr.arpa. PTR gw.komtek.dp.ua.
13.140.194.in-addr.arpa. PTR gw.komtek.dp.ua.

Спецификация BIND
Как уже отмечалось, стандартом de facto в описании состава файлов DNS и порядка их загрузки на сервере имен является спецификация BIND. Она поддерживается во всех Unix-системах, в NetWare (программные продукты Novell NFS Services, FTP Services, NetWare/IP) и ряде других систем.

Согласно данной спецификации существует файл загрузки базы DNS. В Unix-системах обычно это файл /etc/named.boot, в NetWare - SYS:ETC\NAMED.CFG, который загру-жается при запуске сервиса DNS на сервере имен.

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

Файл загрузки базы DNS является текстовым и состоит из отдельных записей. Наиболее часто используются следующие записи:

1. directory <Path> Устанавливает каталог хранения файлов базы DNS, если не указаны абсолютные пути к файлам. Пример: directory /etc

2. domain <Domain> Определяет домен по умолчанию для данного сервера имен. Пример: domain komtek.dp.ua

3. primary <Domain> <FileName> Показывает, что сервер имен является первичным для домена <Domain> и что база домена хранится в файле <FileName>. Пример: primary komtek.dp.ua /usr/named.data

4. secondary <Domain> <IP-1< [<IP-2<...] <FileName> Указывает, что данный сервер имен является вторичным для домена <Domain>. Первичные серверы расположены по IP-адресам , и т. д. Данный вторичный сервер запрашивает по порядку первичные серверы и копирует полученную с первого ответившего первичного сервера информацию в файл <FileName>. Пример: secondary komtek.dp.ua 192.168.1.3 named.bak

5. cache <Domain> <FileName> Указывает, что данный сервер является кэш-сервером имен для домена <Domain>. Параметры кэш-сервера (прежде всего адреса и имена серверов имен корневого домена) считываются из файла <FileName>. Пример: cache . named.ca

6. Строка, начинающаяся с символа ";", считается комментарием. Кстати, для обозначения полного доменного имени в файле загрузки ставить точку в конце имени не обязательно: здесь все имена считаются полными