вера позволит возложить всю эту работу на DNS-сервер провайдера. При этом ваш DNS-сервер будет отсылать в сеть только. один запрос на разрешение имени (DNS-серверу провайдера) и получать только один окончательный ответ. Это особенно полезно, если у вас плохое соединение с Интернет.
Для того, чтобы насладиться такой возможностью, следует в файл named.conf добавить следующие параметры (в блоке options):
forward first;
forwarders {
192.168.99.1;
192.168.99.2;
};
Здесь я рассматриваю конкретный пример, вы же у себя замените адреса 192.168.99.1 и 192.168.99.2 на адреса DNS-серверов вашего провайдера. Параметр forwarders задает заключенный в фигурные скобки список IP-адресов, соответствующих DNS-серверам, которым ваш DNS-сервер будет переадресовывать запросы вместо того, чтобы отвечать на них самому. IP-адреса перечисляются через точку с запятой.
Параметр forward может принимать одно из двух следующих значений:
only — ваш DNS-сервер никогда не должен предпринимать попыток обработать запрос самостоятельно;
first — ваш DNS-сервер должен пытаться сам обработать запрос, если указанные далее параметром forwarders сервера DNS не были найдены. Использование параметра forward бессмысленно без использования параметра forwarders.
Таким образом, вернемся к настройке сервера, весь файл named.conf примет следующий вид, приведенный в листинге 10.6:
Листинг 10.6. Файл named.conf кэширующего сервера DNSoptions {
directory "/var/named";
forward first;
forwarders {
192.168.99.1;
192.168.99.2;
};
// Раскомментируйте следующую строку, если вы
// работаете через firewall и система не работает
// query-source port 53;
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type slave;
file " named.local ";
};
Обратите внимание, что в примере уже не поддерживается зона dhsilabs.com.
Как правило, кэширующий сервер используется на отдельной машине, которая подключается к Интернет по коммутируемому соединению. Нужно учитывать, что сервер DNS сразу требует обращения к какому-нибудь сетевому ресурсу. В нашем же случае, если соединение не установлено, то устройство ррр0 существовать не будет, a named будет страшно ругаться на то, что сеть недоступна. При этом недоступным окажется даже интерфейс lо, а программа nslookup, если она нам понадобится без существования сети, просто «подвиснет», ожидая ответа от сервера DNS.
Есть два способа решить данную проблему. Какой использовать — это решать вам. Первый заключается в том, что при установлении соединения сценарий ррр-on, который обсуждался в гл. 7, будет запускать программу ndc с параметром start (см. ниже), а сценарий ppp-off будет останавливать сервер DNS командой ndc stop.
Второй способ основывается тоже на использовании сценариев ррр-on и ppp-off, но в этом случае сервер dns всегда будет запущен. Принцип работы заключается в подмене файла корневого кэша named.ca. Сервер dns содержит пустой файл корневого кэша, и при установке соединения сценарий ррр-on скопирует вместо пустого файла нормальный файл кэша. Сценарий ppp-off при разрыве соединения перезапишет нормальный файл named.ca пустым файлом с таким же именем. При использований этого способа в ваших протоколах (журналах) будут регулярно появляться сообщения примерно такого содержания:
Jan 5 16:10:11 den named[10147] : No root nameserver for class IN
Для полноты картины хочу отметить, что если вы используете NFS, и у вас возникают проблемы с монтированием удаленных файловых систем, запускайте сервер named после запуска nfsd и mountd.
10.3. Настройка дополнительного сервера DNS
Вы когда-нибудь обращали внимание, что у любого уважающего себя провайдера есть два сервера DNS — первичный (primary или master) и вторичный (secondary или slave)? Так вот сейчас и мы займемся настройкой вторичного сервера DNS.
Примечание. Практически у каждого провайдера работают два сервера DNS. Наличие двух серверов обеспечивает, если можно так выразиться, избыточность разрешения имени. Например, с первичным сервером что-нибудь случилось, произошел сбой, что бывает очень редко, или же просто первичный сервер не в состоянии обработать большое количество запросов клиентов. Тогда система разрешения имен операционной системы, получив отказ от первичного сервера DNS, обращается к вторичному.
Например, вам нужно создать вторичный сервер, который будет обслуживать домен domain.com. С этой целью внесите следующие изменения в файл named.conf дополнительного сервера:
zone "domain.com" {
type slave;
file "domain.com";
masters {
192.168.1.1;
192.168.1.2;
};
};
IP-адреса основных серверов DNS вашей сети указываются внутри подсекции master через точку с запятой. Вторичный сервер, в отличие от кэширующего, всегда должен иметь тип slave.
10.4. Команды управления сервером DNS
Для управления сервером DNS используется программа ndc. Ее можно использовать с параметрами start, stop, reload, restart.
Параметр start запускает сервер, a stop — останавливает. Параметр reload перезагружает файлы зоны, если в них произошли изменения, а параметр restart перезапускает сервер DNS.
10.5. Использование nslookup
Программа nslookup используется для просмотра зоны DNS и входит в состав Linux (и всех вариантов UNIX), а также Windows NT.
Примечание. В данном случае зону следует понимать как домен и читать «для просмотра домена». В зоне содержится различная информация о компьютерах в домене. Зоны бывают разные: одни содержат информацию о компьютерах в домене и служат для преобразования имени компьютера в IP-адрес и наоборот (см. листинг 10.1), другие содержат информацию о корневых серверах — зона «.». Последняя зона относится к типу hint — подсказка, зоны для разрешения имен обычно имеют тип master (главный), а зоны вторичных серверов относятся к типу slave (подчиненный).
Просмотр зоны — это просмотр информации, которую содержит зона. Обычно просмотр зоны разрешается только определенным, доверенным хостам. Итак, запустите nslookup:
# nslookup
Default Server: myserver.domain.com
Address: 127.0.0.1
>
Для того, чтобы получить информацию от сервера, нужно установить тип запроса set q= (или set type=). Перечень типов запросов представлен в табл. 10.2.
Tunы запросов Таблица 10.2
Тип Описание soa Начало полномочий а Преобразование имени в IP-адрес узла аааа Отображение IРv6-адреса узла ns Отображение информации о сервере DNS ptr Преобразование IP-адреса в имя узла wks Распространенные службы hinfo Информация о «железе» узла mx Информация о почтовых серверах домена txt Отображение записи общего назначения cname Отображение канонического имени any Отображение всех ресурсных записей
Теперь рассмотрим несколько практических примеров. Например, вы знаете имя узла — www.server.com. Давайте посмотрим, какая информация будет выведена при указании типа any:
>set q=any
>server.com
Server: myserver.domain.com
Address: 127.0.0.1
Non-authoritative answer:
server.com nameserver = comp1.server.com
server.com nameserver = comp2.server.com
server.com nameserver = comp3.server.com
Authoritative answers can be found from:
server.com nameserver = comp1.server.com