Стандарты 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> - имя описываемого ресурса. Оно зависит от поля
<TTL> - время жизни (в секундах). Определяет, как долго клиент DNS будет
хранить запись в кэш-памяти. Если данное поле пустое, то в качестве
<TTL> берется значение поля
<Class> описание класса используемых протоколов. Для Internet (TCP/IP)
значение этого поля - IN. Если поле пустое, то в качестве него используется
последний заданный класс.
<Type> - поле, задающее тип ресурса записи. Возможные значения этого
поля приведены в разделе "Типы ресурсов".
<Data> - поле, устанавливающее данные текущего ресурса. Его содержание
зависит от поля
Следующие символы в записях имеют специальное значение (ниже перечислены
некоторые из этих символов).
. Отдельно стоящая точка в поле <Name> обозначает текущий домен.
@ Отдельно стоящий символ "@" в поле <Name> обозначает текущий исходный
домен.
( ) Скобки используются для размещения поля на нескольких строках
(когда поле занимает несколько строк).
* Метасимвол. Заменяет любой набор символов.
; Символ комментария. От этого символа и до конца строки информация
игнорируется.
Примечание. Следует знать, что в записях ресурсов доменное имя, не
заканчивающееся точкой, считается относительным. При обработке оно
прибавляется к текущему домену. Поэтому, когда задается полное имя, его
необходимо заканчивать точкой.
Типы ресурсов
Тип ресурса задается в поле
SOA Начало полномочий (управления) сервера имен.
Рассмотрим каждый из этих типов.
SOA (начало полномочий)
ПРИМЕР ЗАПИСИ SOA
<Name> [<TTL>] [<Class>] SOA <Origin>
<Person> (
komtek.dp.ua. IN SOA srv.komtek.dp.ua. root.srv.komtek.dp.ua. (
<Name> Обозначает имя домена зоны управления.
<Origin> Имя первичного сервера имен зоны.
<Person> Почтовый ящик лица, ответственного за зону. Данное поле
формируется аналогично электронному адресу, но вместо символа "@" ставится
точка (т. е. alex@komtek.dp.ua заменяется на alex.komtek.dp.ua).
<Serial> Номер версии зоны. Когда производятся изменения в зоне, то это
число необходимо увеличить. Именно по данному полю ориентируется вторичный
сервер имен, определяя необходимость обновления информации по зоне.
<Refresh> Время в секундах, по прошествии которого вторичный сервер
проверяет необходимость обновления информации по зоне.
<Retry> Время в секундах для повторного обращения вторичного сервера
зоны, если ранее попытка обращения к первичному серверу была неудачной.
<Expire> Предел времени в секундах. Если вторичный сервер не может
получить доступ к первичному в течение этого времени, то он будет считать
информацию по зоне устаревшей.
<Minimum> Значение TTL в записях ресурсов данной зоны по умолчанию, т.
е. когда поле <TTL> пустое.
NS (сервер имен)
ПРИМЕР ЗАПИСИ NS
[<Domain>] [<TTL>] [<Class>] NS <Server>
komtek.dp.ua. NS srv1.komtek.dp.ua.
A (адрес)
ПРИМЕР ЗАПИСИ A
[<Host>] [<TTL>] [<Class>] A <Adress>
sri-nic.arpa. A 10.0.0.51
CNAME (каноническое имя)
ПРИМЕР ЗАПИСИ CNAME
[<Nickname>] [<TTL>] [<Class>] CNAME <Host>
rs1 CNAME srv1.komtek.dp.ua.
Поле <Host> обозначает доменное имя хоста, <Hardware> - аппаратную
платформу, <Software> - ОС хоста. Значения полей <Hardware> и
<Software> стандартизированы, их следует брать из RFC 1700.
ПРИМЕР ЗАПИСИ HINFO
[<Host>] [<TTL>] [<Class>] HINFO <Hardware>
<Software>
pc1 HINFO IBM-PC MSDOS
В примере показано, что если почта предназначена для домена 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.
1. alex@komtek.dp.ua, переадресуется alex@unix1.komtek.dp.ua;
Если администратор определяет несколько записей MX, то для указания порядка
опроса почтовых шлюзов используется число (в примере - 10) первым опрашивается
шлюз с меньшим числом.
PTR (указатель)
Структура имен в доменной системе построена так, что, продвигаясь вдоль
иерархического дерева 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 служат для отображения этих специальных доменных
имен в обычные. Поле
ПРИМЕР ЗАПИСИ PTR ДЛЯ ХОСТА
[<Special-name>] [<TTL>] [<Class>] PTR <Name>
98.5.174.128.in-addr.arpa. PTR vmd.cso.uiuc.edu.
Допустим, имеется шлюз 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 Спецификация BIND
Согласно данной спецификации существует файл загрузки базы 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-адресам
5. cache <Domain> <FileName> Указывает, что данный сервер является
кэш-сервером имен для домена <Domain>. Параметры кэш-сервера (прежде
всего адреса и имена серверов имен корневого домена) считываются из файла
<FileName>. Пример: cache . named.ca
6. Строка, начинающаяся с символа ";", считается комментарием. Кстати, для
обозначения полного доменного имени в файле загрузки ставить точку в конце
имени не обязательно: здесь все имена считаются полными
NS Сервер имен.
A Адрес хоста.
CNAME Каноническое имя. Используется для задания псевдонимов.
HINFO Информация о хосте.
MX Почтовый шлюз.
PTR Указатель.
Запись с ресурсом типа SOA обозначает начало зоны управления сервера имен.
Зона управления действует до следующей записи SOA.
<Serial>
<Refresh>
<Retry>
<Expire>
<Minimum> )
970308
3600
600
3600000
86400 )
Здесь поле <Data> является составным и включает поля <Origin>,
<Person>, <Serial> и т. д.
Запись с ресурсом типа NS обозначает имя хоста, являющегося первичным сервером
имен для домена.
NS srv2.komtek.dp.ua.
<Domain> обозначает домен, а <Server> - имя сервера имен. В
примере показывается, что серверы srv1.komtek.dp.ua и srv2.komtek.dp.ua
представляют собой серверы имен домена komtek.dp.ua.
Запись с ресурсом типа A служит для задания сетевого адреса хоста. Здесь
<Host> - доменное имя хоста, а <Address>- его IP-адрес.
Запись с ресурсом типа CNAME применяется для указания псевдонима хоста.
www CNAME srv2.komtek.dp.ua
ftp CNAME srv2.komtek.dp.ua
HINFO (информация о хосте)
Запись с ресурсом типа HINFO служит для хранения информации о хосте, в
частности об аппаратной платформе и операционной системе компьютера.
rs1 HINFO IBM-RS/6000 AIX
MX (почтовый шлюз)
Так как не на всех хостах запущен сервер e-mail, то для отдельных хостов или
всего домена запись с ресурсом типа MX позволяет определить почтовый шлюз -
компьютер, куда будет направляться электронная почта, предназначенная для этих
хостов. Поле <Name> обозначает домен или имя хоста, для которого
устанавливается почтовый шлюз. <Host> - имя хоста почтового шлюза.
*-dos.komtek.dp.ua. MX 10 unix2.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.
Прежде чем рассматривать записи с ресурсом типа PTR, следует остановиться на
поиске доменного имени хоста по его IP-адресу (так называемое обратное
преобразование).
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 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.
Как уже отмечалось, стандартом de facto в описании состава файлов DNS и
порядка их загрузки на сервере имен является спецификация BIND. Она
поддерживается во всех Unix-системах, в NetWare (программные продукты Novell
NFS Services, FTP Services, NetWare/IP) и ряде других систем.