Каждую зону обслуживает один главный сервер имен, хранящий официальную копию данных о зоне. Он называется «авторитетным», потому что его ответ — точный и окончательный. В зоне может быть также сколько угодно кэширующих серверов, у которых собственных данных нет: они накапливают данные, кэшируя ответы на свои запросы. Ответ кэширующего сервера неавторитетен, зато быстр. Обычно они используются для уменьшения DNS-трафика во внутренней сети.
Если собственного домена у вас нет, то имеет смысл возложить обработку DNS-запросов на провайдера, создав у себя кэширующий DNS-сервер. Вместо того, чтобы запрашивать последовательно несколько удаленных корневых серверов, он будет отсылать в сеть только один запрос на разрешение имени (DNS-серверу провайдера) и получать только один окончательный ответ. Это особенно полезно, если у вас плохое соединение с Интернетом.
13.4.1. Настройка кэширования на DNS-сервере
Для того, чтобы насладиться такой возможностью, следует в блок options
файлаnamed.conf
добавить следующие параметры:forward first;
forwarders {
81.3.165.35;
81.3.150.2;
};
Директива forwarders
задает заключенный в фигурные скобки список IP-адресов DNS-серверов, которым ваш DNS-сервер будет переадресовывать запросы вместо того, чтобы отвечать на них самому. IP-адреса перечисляются через точку с запятой.Директива forward
может принимать одно из двух следующих значений:♦ only
— ваш DNS-сервер никогда не должен предпринимать попыток обработать запрос самостоятельно;♦ first
— ваш DNS-сервер должен пытаться сам обработать запрос, если указанные далее параметром forwarders сервера DNS не были найдены.Без директивы forwarders
директива forward не имеет смысла.Таким образом, возвращаясь к настройке сервера, весь файл named.conf
Листинг 13.7. Файл named.conf кэширующего сервера DNS
options {
directory "/var/named";
forward first;
forwarders {
81.3.165.35;
81.3.150.2;
};
// Раскомментируйте следующую строку, если брандмауэр
// мешает работе службы DNS
// query-source port 53;
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type slave;
file " named.local ";
}
Обратите внимание, что в этом примере уже не поддерживается зона dhsilabs.com.
13.4.2. Возможные проблемы и их решение
Как правило, кэширующий сервер запускается на отдельном компьютере, который подключается к Интернету по коммутируемому соединению. Нужно учитывать, что сервер DNS сразу требует обращения к какому-нибудь сетевому ресурсу. В нашем же случае, если соединение не установлено, то устройство ppp0
lo
, а программа nslookup, если она нам понадобится без существования сети, просто «подвиснет», ожидая ответа от сервера DNS.Есть два способа решить данную проблему. Какой использовать — это решать вам. Первый заключается в том, чтобы запускать сервер DNS после установления PPP-соединения и останавливать перед его разрывом.
Для управления демоном named
служит утилита rndc (ndc в BIND 8). Ее можно использовать с параметрами start, stop, reload (перегрузить файлы данных зоны, если в них произошли изменения), restart. Командуrndc start
следует включить в сценарий установления PPP-соединения, а команду rndc stop
— в сценарий разрыва.Второй способ состоит в том, чтобы при постоянно работающем сервере DNS подменять файл корневого кэша named.ca
named.ca.ppp-on
. При использовании этого способа в ваших протоколах (журналах) будут регулярно появляться сообщения примерно такого содержания:Jan 5 16:10:11 den named[10147]: No root nameserver for class IN
Для полноты картины хочу отметить, что, если при использовании DNS у вас возникают проблемы с монтированием удаленных файловых систем, запускайте сервер named
после запуска nfsd и mountd.13.5. Вторичный сервер DNS