Чтение онлайн

ЖАНРЫ

Linux: Полное руководство

Аллен Питер В.

Шрифт:

Перед началом настройки DNS-сервера давайте разберемся, как он работает. Пространство имен DNS — это иерархическая древовидная структура доменов. Корень дерева доменов обозначается «.». Под ним находятся домены верхнего уровня. Наиболее известные из них вы знаете: com, gov, net, org и т.п. Выделением имен доменов верхнего уровня занимается ICANN — International Corporation for Assigned Names and Numbers. Администрация домена регистрирует домены следующего уровня и так далее.

Всемирная система доменных имен представляет собой распределенную базу данных. Каждый компьютер, подключенный к сети, является клиентом этой базы, а некоторые компьютеры — серверами.

Допустим,

пользователь вводит в окне браузера адрес:Чтобы установить соединение с компьютером www.yahoo.com, компьютеру пользователя необходимо знать его IP-адрес, поэтому операционная система пользователя пытается разрешить (перевести) имя компьютера в IP-адрес. С этой целью она обращается к серверу DNS. Сервер DNS сначала пытается разрешить имя данного компьютера, используя свой собственный кэш имен. Если требуемое имя компьютера в нем отсутствует, то сервер DNS должен получить его у другого сервера DNS, поэтому база данных DNS и называется распределенной.

Сначала первичный сервер обращается к одному из корневых серверов, список IP-адресов которых находится в его конфигурационных файлах (конкретно, в файле

named.ca
). Далее запрос обрабатывается рекурсивно: корневой сервер знает имена и IP-адреса официальных серверов DNS всех доменов второго уровня и перенаправляет запрос к серверу, который отвечает за домен com, а тот, в свою очередь, — к серверу DNS домена yahoo.com.

Сервер DNS домена yahoo.com возвращает IP-адрес компьютера www — 64.58.76.222 или все адреса, которые сопоставлены этому имени (многие сетевые операционные системы, в том числе и Linux, позволяют одному имени сопоставлять несколько IP-адресов).

На самом деле, если выполнить разрешение имени

www.yahoo.com
, то сервер DNS возвратит следующие адреса:

64.58.76.222

64.58.76.228

64.58.76.223

64.58.76.176

64.58.76.224

64.58.76.177

64.58.76.227

64.58.76.179

А официальное, или каноническое, имя компьютера www.yahoo.com — www.yahoo.akadns.net.

13.2. Настройка клиента DNS

Разрешение имен на стороне DNS-клиента выполняет модуль распознавания (резолвер). В ОС Linux он представляет собой набор библиотечных функций. Конфигурационным файлом распознавателя служит

/etc/resolv.conf
, содержащий список DNS-серверов (от 1 до 3), которым можно посылать запросы:

search subdomain.domain.com domain.com

nameserver 127.0.0.1 ; сервер по умолчанию

; на локальном компьютере

nameserver 81.3.165.35; запасной — у провайдера

Директива search используется для поиска компьютера в том случае, если указано только имя узла без домена. Например, если вы введете в окне броузерато сначала будет выполнена попытка обращения к узлу host.subdomatn.domain.com, а потом, если узел не будет найден, к узлу host.domain.com.

Комментариев в файле

resolv.conf
не полагается: произвольный текст можно вписывать только в строки с директивами nameserver после IP-адреса.

Кроме сервера имен, функции распознавателя могут просматривать и другие источники данных: файл

/etc/hosts
, СУБД NIS и т.п. Порядок просмотра определен в файле переключения служб
/etc/nsswitch.conf
:

hosts: files dns

13.3.

Настройка сервера DNS

Локальная сеть с выходом в Интернет может пользоваться сервером имен, работающим на компьютере провайдера. Но, учитывая типичную для бывшего СССР скорость соединения, при которой на обращение к серверу DNS провайдера требуется от 10 до 30 секунд, имеет смысл установить собственный сервер DNS — обычно на шлюзе, который используется для выхода в Интернет.

Внутренняя сеть (intranet) может обойтись и файлами

/etc/hosts
, но при большом количестве узлов целесообразно завести DNS-сервер и для нее.

Самый известный сервер имен для Linux — это демон named из пакета BIND (Berkeley Internet Name Daemon). Вам понадобится установить еще пакет bind-libs с необходимыми библиотеками и bind-utils, содержащий утилиты командной строки (dig, host, nslookup).

Существуют три версии пакета BIND: 4, 8 и 9 (версий 5-7 никогда не было). Сейчас везде используется девятая версия, о которой я и буду рассказывать.

Для установки девятой версии BIND требуются:

♦ ядро 2.4 или выше;

♦ библиотека OpenSLL.

Для работы сервера должен быть активизирован сервис network.

Основным конфигурационным файлом named служит

named.conf
, который устанавливается по умолчанию в
/etc
для версии 9 или в
/etc/namedb
(версия 8). Синтаксис этого файла подобен языку С (листинг 13.1).

Листинг 13.1. Примерный файл named.conf

logging {

 category cname {null; };

};

options {

 directory "/var/named";

};

zone "." {

 type hint;

 file "named.ca";

};

zone "dhsilabs.com" {

 type master;

 file "dhsilabs.com";

 notify no;

};

zone "0.0.127.in-addr.arpa" {

 type master;

 file "named.local";

};

zone "1.168.192.in-addr.arpa" {

 type master;

 file "192.168.1";

 notify yes;

};

Рассмотрим этот пример подробнее. Обслуживаемая сервером зона (домен без поддоменов) —

dhsilabs.com
. Рабочий каталог сервера, от которого отсчитываются относительные пути файлов, —
/var/named
. Именно в этом каталоге сервер будет искать файлы
dhsilabs.com
,
named.local
,
192.168.1
,
named.ca
.

Поделиться с друзьями: