forwarders | 128.32.0.10 | 128.32.0.4 |
Имеются два основных соображения в необходимости поступать таким
образом. Во-первых, другие системы могут не иметь полный доступ к сети и
могут быть заблокированы от посылки любых IP пакетов в остальную сеть, и,
следовательно, должны полагаться на перенаправителя, который имеет доступ к
полной сети. Вторая причина состоит в том, что перенаправитель видит
множество всех запросов при их прохождении через его сервер, и,
следовательно, он создает очень богатый кэш данных по сравнению с кэшем
сервера имен типичной рабочей станции. Фактически, перенаправитель
становится мета-кэшем, что выгодно всем host'ам, таким образом уменьшая
общее число запросов от таких узлов остальной сети.
5.1.7. Подчиненный Режим
Подчиненный режим используется, если применение перенаправителей
является единственным возможным способом разрешения запросов из-за
недостатка полного доступа к сети, или если вы хотите предотвратить сервер
имен от использования перенаправителей, отличных от указанных. Подчиненный
режим активируется просто размещением команды
slave
в загрузочном файле. Если используется подчиненный режим, то вы должны
задать перенаправителей. В подчиненном режиме сервер будет переправлять
каждый запрос каждому из перенаправителей, пока не получит ответ, или будет
исчерпан список перенаправителей.
5.1.8. Удаленный Сервер
Чтобы установить host, который будет использовать удаленный сервер
вместо локального сервера для ответа на запросы, требуется создать файл
/etc/resolv.conf. Этот файл отмечает серверы имен в сети, которым должны
посылаться запросы. Нежелательно создавать этот файл, если у вас запущен
локальный сервер. Если этот файл существует, он считывается почти каждый раз
при вызове gethostbyname() или gethostbyaddr().
5.2. Инициализация Кэша
5.2.1. root.cache
Серверу имен нужно знать серверы, которые являются авторизованными
серверами имен для корневого домена сети. Чтобы сделать это, мы должны
наполнить кэш сервера имен адресами этих более высоких хозяев. Расположение
этого файла задается в загрузочном файле. Этот файл использует Standard
Resource Record Format - Стандартный Формат Записи Ресурса (aka. Masterfile
Format), описанный далее в этой статье.
5.3. Файлы Данных Домена
Имеется три стандартных файла для задания данных для домена. Это
named.local, hosts и host.rev. Эти файлы используют Стандартный Формат
Записи Ресурса, описанный позже в этой статье.
5.3.1. named.local
Этот файл задает адрес для локального петлевого (loopback) интерфейса,
лучше известного как localhost с сетевым адресом 127.0.0.1. Положение этого
файла задается в загрузочном файле.
5.3.2. hosts
Этот файл содержит все данные о машинах в этой зоне. Положение этого
файла задается в загрузочном файле.
5.3.3. hosts.rev
Этот файл задает домен IN-ADDR.ARPA. Это специальный домен, позволяющий
отображать адрес в имя. Поскольку host-адреса Internet не пересекаются в
пределах границ домена, этот специальный домен был сформирован, чтобы
позволить обратное отображение. Домен IN-ADDR.ARPA имеет четыре метки,
предваряющие его. Эти метки соответствуют 4 октетам адреса Internet. Все
четыре октета должны быть заданы, даже если октеты являются нулевыми. Адрес
Internet 128.32.0.4 размещается в домене как 4.0.32.128.IN-ADDR.ARPA. Это
реверсирование адреса неудобочитаемо, но позволяет естественным оброазом
группировать host'ы в сети.
5.4. Стандартный Формат Записи Ресурса
Записи в файлах данных сервера имен называются записями ресурса.
Стандартный Формат Записи Ресурса (RR) определяется в RFC882 и RFC973. Далее
следует общее описание этих записей:
{name} {ttl} addr-class Record Type Record Specific data
Записи ресурса имеют стандартный формат, показанный выше. Первое поле
всегда является именем записи домена и оно должно всегда начинаться в
колонке 1. Для некоторых RR имя может быть пробелом слева; в том случае в
качестве имени берется имя предыдущей RR. Второе поле является
необязательным полем времени жизни. Оно задает, как долго эти данные будут
храниться в базе данных. При оставление этого поля пустым время жизни по
умолчанию определяется по записи ресурса Start Of Authority (Начало
Полномочий) (смотрите ниже). Третье поле - класс адреса; в настоящее время
поддерживается только один класс: IN для адресов Internet и прочей
информации. Четвертое поле устанавливает тип записи ресурса. Поля после него
зависят от типа RR. Регистр сохраняется в именах и полях данных при загрузке
в сервер имен. Все сравнения и поиски в базе данных сервера имен не
чувствительны к регистру.
Следующие символы имеют специальные значения:
- .
- Отдельно стоящая точка в поле имени отсылает к текущему домену.
- @
- Отдельно стоящий знак @ в поле имени обозначает текущий источник.
- ..
- Две отдельно стоящих точки представляют нулевое имя корневого
домена, когда используются в поле имени.
- X
- Где X - любой символ, отличный от цифры (0-9), экранирование
символа, так что специальное значение не применяется. Например,
``.'' может использоваться, чтобы поместить символ точки в метке.
- DDD
- Где каждое D - цифра, является октетом, соответствующим
десятичному номеру, описываемому с помощью DDD. Результирующий
октет по предположению является текстом и не проверяется на
специальное значение.
- ( )
- Круглые Скобки используются для группировки данных, продолжающихся
на других строках. Фактически, разделители строк не распознаются
внутри круглых скобок.
- ;
- Точка с запятой начинает комментарий; остаток строки игнорируется.
- *
- Звездочка означает групповой выбор.
Большинство записей ресурса будут иметь текущий источник,
присоединенный к именам, если они не завершаются ``.''. Это полезно для
присоединения текущего имени домена к данным, таким как имена машин, но
может повлечь проблемы, когда вы не хотите, чтобы это случилось. Хорошее
правило, чтобы избежать этого - если имя не находится в домене, для которого
вы создаете файл данных, заканчиваете имя ``.''.
5.4.1. $INCLUDE
Включаемая строка состоит из $INCLUDE, начинающегося с колонки 1, и
следующего за ним имени файла. Эта возможность особенно полезна для
отделения различных типов данных в множественных файлах. Примером может быть:
$INCLUDE /usr/named/data/mailboxes
Строка будет интерпретироваться как запрос на загрузку файла
/usr/named/data/mailboxes. Команда $INCLUDE не приводит к тому, что данные
загружаются в другую зону или дерево. Это просто способ позволить данным для
данной зоны быть организованными в отдельных файлах. Например, данные
почтового ящика могут храниться отдельно от host-данных, использующих этот
механизм.
5.4.2. $ORIGIN
Это способ изменения источника в файле данных. Строка начинается с
колонки 1, и сопровождается доменом-источником. Это полезно для помещения
более одного домена в файле данных.
5.4.3. SOA - Start Of Authority (Начало Полномочий)
name {ttl} addr-class SOA Origin Person in charge
@ IN SOA ucbvax.Berkeley.Edu. kjd.ucbvax.Berkeley.Edu. (
1.1 ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expire
3600 ) ; Minimum
Начало Полномочий (Start Of Authority - SOA), запись, отмечающая начало
зоны. Поле name - это имя зоны. Origin - имя host'а, на котором этот файл
данных размещен. Person in charge - почтовый адрес человека, ответственного
за сервер имен. Serial number - номер версии этого файла данных, который
должен увеличиваться всякий раз, когда в данные вносятся изменения. Сервер
имен не может обрабатывать номера свыше 9999 после десятичной точки. Refresh
указывает, как часто, в секундах, вторичные серверы имен сверяются с
первичным сервером имен, чтобы увидеть необходимость обновления. Retry
указывает промежуток времени, в секундах, после которого вторичный сервер
повторят обновление после отказа сверки. Expire - верхний предел, в
секундах, до которого вторичный сервер имен использует данные перед тем, как
истечет срок их хранения из-за отсутствия обновления. Minimum - число секунд
по умолчанию, используемое в качестве поля времени жизни в записи ресурса.
Должна быть только одна запись SOA на зону.
5.4.4. NS - Name Server (Сервер Имен)
{name} {ttl} addr-class NS Name servers name
IN NS ucbarpa.Berkeley.Edu.
Запись Name Server, NS, определяет ответственность сервера имен за
данный домен. Первое поле name указывает домен, который обслуживается данным
сервером имен. Должна иметься одна запись NS для каждого Первичного Главного
сервера для домена.
5.4.5. A - Address (Адрес)
{name} {ttl} addr-class A address
ucbarpa IN A 128.32.0.4
IN A 10.0.0.78
Запись Address, A, определяет адрес для данной машины. Поле name - имя
машинны, а address - сетевой адрес. Должна быть одна запись A для каждого
адреса машины.
5.4.6. HINFO - Host Information (Информация о Host'е)
{name} {ttl} addr-class HINFO Hardware OS
IN HINFO VAX-11/780 UNIX
Запись ресурса Host Information, HINFO, предназначена для специфических
данных host'а. Здесь перечислены аппаратные средства и операционная система,
на которых выполняется указанный host. Следует отметить, что только пробел
отделяет информацию об аппаратных средствах от информации об операционной
системе. Если вы хотите включить пробел в имя машины, вы должны поместить
имя в кавычки. Должна иметься одна запись HINFO для каждого host'а.
5.4.7. WKS - Well Known Services (Общеизвестный Сервис)
{name} {ttl} addr-class WKS Address Protocol List of services
IN WKS 128.32.0.10 UDP who route timed domain
IN WKS 128.32.0.10 TCP ( echo telnet
discard sunrpc sftp
uucp-path systat daytime
netstat qotd nntp
link chargen ftp
auth time whois mtp
pop rje finger smtp
supdup hostnames
domain
nameserver )
Запись Well Known Services, WKS, описывает общеизвестный сервис,
поддерживаемый конкретным протоколом по заданному адресу. Список сервиса и
номера портов исходят из списка сервиса, заданного /etc/services. Должна
быть только одна запись WKS на протокол на адрес.
5.4.8. CNAME - Canonical Name (Каноническиое Имя)
aliases {ttl} addr-class CNAME Canonical name
ucbmonet IN CNAME monet
Запись ресурса Canonical Name, CNAME, задает псевдоним для
канонического имени. Псевдоним должен быть единственной записью, связанной с
именем псевдонима; все другие записи ресурсов должны связываться с
каноническиим именем, а не с псевдонимом. В любых записях ресурсов,
включающих имя домена в качестве их значения (например, NS или MX), должно
указываться каноническиое имя, не псевдоним.
5.4.9. PTR - Domain Name Pointer (Указатель Имени Домена)
name {ttl} addr-class PTR real name
7.0 IN PTR monet.Berkeley.Edu.
Запись Domain Name Pointer, PTR, позволяет специальным именам указывать
на некоторое другое положение в домене. Вышеупомянутый пример записи PTR
используется при установке обратных указателей для специального домена
IN-ADDR.ARPA. Эта строка из файла-образца hosts.rev. Имена PTR должны быть
уникальны в зоне.
5.4.10. MB - Mailbox (Почтовый Ящик)
name {ttl} addr-class MB Machine
miriam IN MB vineyd.DEC.COM.
MB - это запись Mailbox. Она указывает машину, на которой пользователь
желает получать почту. Поле name является входным именем пользователя; поле
machine указывает машину, на которую почта должна доставляться. Имена
Почтовых Ящиков должны быть уникальны в зоне.
5.4.11. MR - Mail Rename Name (Имя Переименования Почты)
name {ttl} addr-class MR corresponding MB
Postmistress IN MR miriam
Mail Rename, MR, может использоваться для указания псевдонимов
пользователя. Поле name определяет псевдоним для имени, которое указано в
четвертом поле, и которое должно иметь соответствующую запись MB.
5.4.12. MINFO - Mailbox Information (Информация Почтового Ящика)
name {ttl} addr-class MINFO Requests Maintainer
BIND IN MINFO BIND-REQUEST kjd.Berkeley.Edu.
Запись Mail Information, MINFO, создает почтовую группа для списка
рассылки. Эта запись ресурса обычно связывается с почтовой группой Mail
Group, но может использоваться с записью Mail Box. Поле name задает имя
почтового ящика. Поле requests определяет, где почта, такая как запросы,
будет добавляться к почтовой группе, которая должна посылаться. Поле
maintainer - это почтовый ящик, который должен принимать сообщения об
ошибках. Это особенно подходит для списков рассылки, когда ошибки в именах
членов должны сообщаться лицу, отличному от отправителя.
5.4.13. MG - Mail Group Member (Член Почтовой Группы)
{mail group name} {ttl} addr-class MG Member name
IN MG Bloom
Mail Group, MG, указывает членов почтовой группы.
Пример для установки списка рассылки следующий:
Bind IN MINFO Bind-Request kjd.Berkeley.Edu.
IN MG Ralph.Berkeley.Edu.
IN MG Zhou.Berkeley.Edu.
IN MG Painter.Berkeley.Edu.
IN MG Riggle.Berkeley.Edu.
IN MG Terry.pa.Xerox.Com.
5.4.14. MX - Mail Exchanger (Почтальон)
name {ttl} addr-class MX Preference value Mailer exchanger
Munnari.OZ.AU. IN MX 0 Seismo.CSS.GOV.
*.IL. IN MX 0 RELAY.CS.NET.
Запись Mail Exchanger, MX, используются для задания машины, которая
знает, как доставить почту на машину, не связанную непосредственно с сетью.
В первом примере, выше, Seismo.CSS.GOV - это почтовый шлюз, который знает,
как доставить почту на Munnari.OZ.AU., но другие машины в сети не могут
доставлять почту прямо на Munnari. Эти две машины могут иметь личное
соединение или используются в различных транспортных средах. Поле preference
value служит для указания того, куда мэйлер должен следовать, когда имеется
более одного способа доставки почты на отдельную машину. См. RFC974 для
более подробной информации.
Групповые имена, содержащие символ ``*'', могут использоваться в
записях MX для маршрутизации почты. Имеются вероятноcть, что в сети
существуют серверы, которые просто устанавливают, что любая почта для домена
должна маршрутизироваться широковещательно. Второй пример, выше, все
отправляющий на host'ы в домене IL, маршрутизируется через RELAY.CS.NET. Это
сделано путем создании групповой записи ресурса, который устанавливает, что
*.IL имеет MX от RELAY.CS.NET.
5.5. Образцы Файлов
Следующий раздел содержит образцы файлов для сервера имен. Показаны
примеры загрузочных файлов для различных типов серверов и примеры файлов
базы данных домена.
5.5.1. Загрузочный Файл
5.5.1.1. Первичный Главный Сервер
;
; Boot file for Primary Master Name Server
;
; type domain source file or host
;
directory /usr/local/domain
primary Berkeley.Edu ucbhosts
primary 32.128.in-addr.arpa ucbhosts.rev
primary 0.0.127.in-addr.arpa named.local
cache . root.cache
5.5.1.2. Вторичный Главный Сервер
;
; Boot file for Primary Master Name Server
;
; type domain source file or host
;
directory /usr/local/domain
secondary Berkeley.Edu 128.32.0.4 128.32.0.10 ucbhosts.bak
secondary 32.128.in-addr.arpa 128.32.0.4 128.32.0.10 ucbhosts.rev.bak
primary 0.0.127.in-addr.arpa named.local
cache . root.cache
5.5.1.3. Только Кэширующий Сервер
;
; Boot file for Caching Only Name Server
;
; type domain source file or host
;
directory /usr/local/domain
cache . root.cache
primary 0.0.127.in-addr.arpa /etc/named.local
5.5.2. Удаленный Сервер
5.5.2.1. /etc/resolv.conf
domain Berkeley.Edu
nameserver 128.32.0.4
nameserver 128.32.0.10
5.5.3. root.cache
;
;
; Initial cache data for root domain servers.
;
. 99999999 IN NS SRI-NIC.ARPA.
99999999 IN NS NS.NASA.GOV.
99999999 IN NS TERP.UMD.EDU.
99999999 IN NS A.ISI.EDU.
99999999 IN NS BRL-AOS.ARPA.
99999999 IN NS GUNTER-ADAM.ARPA.
99999999 IN NS C.NYSER.NET.
.T&
l s s s s
l l l l l.
; Prep the cache (hotwire the addresses).
SRI-NIC.ARPA. 99999999 IN A 10.0.0.51
SRI-NIC.ARPA. 99999999 IN A 26.0.0.73
NS.NASA.GOV. 99999999 IN A 128.102.16.10
A.ISI.EDU. 99999999 IN A 26.3.0.103
BRL-AOS.ARPA. 99999999 IN A 128.20.1.2
BRL-AOS.ARPA. 99999999 IN A 192.5.25.82
BRL-AOS.ARPA. 99999999 IN A 192.5.22.82
GUNTER-ADAM.ARPA. 99999999 IN A 26.1.0.13
C.NYSER.NET. 99999999 IN A 128.213.5.17
TERP.UMD.EDU. 99999999 IN A 10.1.0.17
5.5.4. named.local
@ IN SOA ucbvax.Berkeley.Edu. kjd.ucbvax.Berkeley.Edu. (
1 ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ucbvax.Berkeley.Edu.
1 IN PTR localhost.
5.5.5. hosts
;
; @(#)ucb-hosts 1.2 (berkeley) 88/02/05
;
@ IN SOA ucbvax.Berkeley.Edu. kjd.monet.Berkeley.Edu. (
1.2 ; Serial
10800 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ucbarpa.Berkeley.Edu.
IN NS ucbvax.Berkeley.Edu.
localhost IN A 127.1
ucbarpa IN A 128.32.4
IN A 10.0.0.78
IN HINFO VAX-11/780 UNIX
arpa IN CNAME ucbarpa
ernie IN A 128.32.6
IN HINFO VAX-11/780 UNIX
ucbernie IN CNAME ernie
monet IN A 128.32.7
IN A 128.32.130.6
IN HINFO VAX-11/750 UNIX
ucbmonet IN CNAME monet
ucbvax IN A 10.2.0.78
IN A 128.32.10
IN HINFO VAX-11/750 UNIX
IN WKS 128.32.0.10 UDP syslog route timed domain
IN WKS 128.32.0.10 TCP ( echo telnet
discard sunrpc sftp
uucp-path systat daytime
netstat qotd nntp
link chargen ftp
auth time whois mtp
pop rje finger smtp
supdup hostnames
domain
nameserver )
vax IN CNAME ucbvax
toybox IN A 128.32.131.119
IN HINFO Pro350 RT11
toybox IN MX 0 monet.Berkeley.Edu
miriam IN MB vineyd.DEC.COM.
postmistress IN MR Miriam
Bind IN MINFO Bind-Request kjd.Berkeley.Edu.
IN MG Ralph.Berkeley.Edu.
IN MG Zhou.Berkeley.Edu.
IN MG Painter.Berkeley.Edu.
IN MG Riggle.Berkeley.Edu.
IN MG Terry.pa.Xerox.Com.
5.5.6. host.rev
;
; @(#)ucb-hosts.rev 1.1 (Berkeley) 86/02/05
;
@ IN SOA ucbvax.Berkeley.Edu. kjd.monet.Berkeley.Edu. (
1.1 ; Serial
10800 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ucbarpa.Berkeley.Edu.
IN NS ucbvax.Berkeley.Edu.
4.0 IN PTR ucbarpa.Berkeley.Edu.
6.0 IN PTR ernie.Berkeley.Edu.
7.0 IN PTR monet.Berkeley.Edu.
10.0 IN PTR ucbvax.Berkeley.Edu.
6.130 IN PTR monet.Berkeley.Edu.