Задание базовой конфигурации BIND и запуск сервера имен
Конфигурирование BIND
Запуск демона named в качестве DNS сервера возможен в одном из трех режимов: master, slave и caching-only. Демон named управляется своими конфигурационными файлами, в первую очередь /etc/bind/named.conf, для определения режима запуска.
В master моде сервер named работает как авторитетный источник всей информации об этой зоне. Информация о домене, предоставляемая сервером, размещается в файле на локальном диске, который можно модифицировать или обновить вручную. Каждая зона DNS должна иметь единственный мастер-сервер.
В slave моде сервер named передает информацию, предоставленную мастер-сервером зоны. Технически, сервер, поддерживающий несколько зон, может играть роль master'а для одной зоны и slave для другой, но обычно в локальной сети присутствует единственная иерархия из master, slave и caching-only серверов. Сервер slave переносит полную информацию о зоне с мастер-сервера в локальные файлы, так что информация, предоставляемая slave сервером, по-прежнему остается авторитетной.
В режиме caching-only сервер named не поддерживает файлы зон. Каждый запрос перенаправляется на какой-то другой сервер имен для получения первичной информации, но затем полученная информация кешируется. Однако новые запросы требуют передачи запроса далее по сети. Caching-only сервера чаще всего используются на локальных машинах, где клиентские приложения часто посылают запросы в службу имен без генерации при этом сетевого трафика.
В конфигурации /etc/resolv.conf, показанной мной ранее в Листинге 1, 0.0.0.0 -- это caching-only сервер, 192.168.2.1 -- slave сервер и 151.203.0.84 -- как master сервер. Вы не можете определить этого, просто глядя на порядок их следования или на их IP адреса, но использование псевдо-IP адреса локальной машины дает основание полагать, что это caching-only сервер.
Создание named.conf
Есть несколько стандартных моментов, которые должны быть включены в каждый файл /etc/bind/named.conf. Это начальная директива options, задающая некоторую базовую информацию. Затем несколько директив zone, задающих конфигурацию для обработки различных зонных запросов. Домены, поименованные в директивах
zone так, что их название начинается с IP адресов, задающих начальные цифры диапазона IP адресов, обозначают "обратные" зоны. Символьные имена определяют зоны, а кроме того, позволяют дальнейшее определение поддоменов.
Файлы named.conf (и другие конфигурационные файлы BIND) следуют соглашениям по форматированию языка C для больших фрагментов текста.
Могут использоваться как C-подобные блочные комментарии (/* comment */) и принятые в C++ строчные (// comment), так и строчные комментарии shell (# comment). Директивы завершаются точками с запятой и заключаются в фигурные скобки.
Для начала несколько обычных опций. Мой локальный файл /etc/bind/named.conf начинается с:
Листинг 6. Мой локальный named.conf начинается так
include "/etc/bind/named.conf.options";
|
Но вы можете также вставлять непосредственно директиву options:
Листинг 7. Задание опций в named.conf
options {
directory "/var/bind";
forwarders { 192.168.2.1; 192.168.3.1};
// forward only;
}
|
Эти установки указывают на то, что файлы, указанные без
полного пути, будут искаться в указанном каталоге; кроме того,
BIND в первую очередь обращается к 192.168.2.1 и 192.168.3.1 для незакэшированных результатов. Директива forward only (здесь закомментированная) говорит о том, что запросы выполняются на эти сервера имен, а не запрашиваются корневые сервера в Интернете.
Специальная директива zone должна помещаться ранее других в файлах named.conf:
Листинг 8. Особая зона (Hint zone) корневых серверов
zone "." {
type hint;
file "/etc/bind/db.root";
};
|
Содержимое db.root (иногда называемого named.ca для "certifying authority") носит достаточно специальный характер. Оно представляет из себя описание набора канонических корневых серверов, собственно регистрирующих домены. Этот файл меняется достаточно редко, но вы всегда может получить его последнюю официальную версию с ftp.rs.internic.net. Это не тот файл, который будет править обычный администратор.
За корневой особой зоной в named.conf должны размещаться master и/или slave зоны. Например, для локального loopback'а:
Листинг 9. Конфигурация loopback зоны
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
|
Что более интересно, named может выступать как master домена (в том числе предоставляя и обратные записи):
Листинг 10. Конфигурация внешней зоны
zone "example.com" {
type master;
file "example.com.hosts"; // file relative to /var/bind
};
// Reverse lookup for 64.41.* IP addresses (backward IP address)
zone "41.64.in-addr.arpa" {
type master;
file "41.64.rev";
};
|
Для slave конфигурации вместо этого вы может использовать:
Листинг 11. Конфигурация внешней зоны (slave)
zone "example.com" {
type slave;
file "example.com.hosts"; // file relative to /var/bind
masters { 192.168.2.1; };
};
// Reverse lookup for 64.41.* IP addresses (backward IP address)
zone "41.64.in-addr.arpa" {
type slave;
file "41.64.rev";
masters { 192.168.2.1; };
};
|
Другие конфигурационные файлы
Файл named.conf ссылается на ряд других конфигурационных файлов через директиву file. Они могут различаться в зависимости от конкретной установки, но обычно они будут содержать какие-то записи, определенные в RFC 1033 (Domain Administrators Operations Guide; см. в разделе Ресурсы). Стандартные записи:
- SOA
- Start of authority (Начало полномочий). Параметры, действующие на всю зону.
- NS
- Nameserver (Сервер имен). Доменный сервер имен.
- A
- Address (Адрес). Имя хоста или IP адрес.
- PTR
- Pointer (Указатель). IP адрес или имя хоста.
- MX
- Mail exchange (Почтовая станция). Где обслуживается почта домена.
- CNAME
- Canonical name (Каноническое имя). Псевдоним хоста.
- TXT
- Text (Текст). Хранит произвольные значения.
Формат записи следующий: <name> <time-to-live> IN <type> <data>.
Имя и "время жизни" (time-to-live) опциональны, по умолчанию используются последние значения. Символьная строка IN обозначает Internet и частенько используется в практике. Файлы с записями ресурсов могут также содержать
директивы, начинающиеся со знака доллара. Наверное, наболее часто в $TTL, устанавливающем умолчание для времени жизни. Например, какой нибудь тривиальный файл записей для 127.* localhost'а выглядит так:
Листинг 12. Простейший файл записей
# cat /etc/bind/db.127
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1.0.0 IN PTR localhost.
|
Другие директивы -- это $ORIGIN, устанавливающая имя домена, используемое для дописывания любого относитльного имени домена; $INCLUDE, которая подгружает внешний файл; и $GENERATE, создающая серию записей, лежащих в определенном диапазоне IP адресов.
|