Глава 17 DNS

Глава 17 DNS

DNS – это Доменная Система Имен (Domain Name System). DNS преобразует символические имена машин в IP-адреса и наоборот – из IP-адреса в символическое имя. Для чего это нужно? Во-первых, человеку легче запомнить осмысленное имя – типа vasya.ru чем 195.66.195.42, а для компьютера проще передать четыре байта адреса, чем 50–60 байтов имени. Во-вторых, за одним и тем же IP-адресом могут скрываться сотни различных доменов. Когда-то, на заре эры глобальных сетей, все пары «имя-IР-адрес» хранились в файле /etc/hosts. Со временем, когда компьютеров в сети стало тысячи и десятки тысяч, эти файлы превратились в монстров, на смену которым пришли DNS-серверы.

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

DNS – это иерархическая система. Вершина записывается как"." (точка) и произносится как root (корень). В корне существует некоторое количество доменов верхнего уровня (Top Level Domains, TLDs), наиболее известными из которых являются ORG, COM, EDU, GOV, MIL, NET, RU, UA и т. п.

При поиске машины запрос обрабатывается рекурсивно, начиная с корня. Если нужно найти адрес машины user.ogpu.odessa.ua, то ваш сервер имен должен найти сервер имен, который обслуживает иа. Он запрашивает корневой сервер (.), который выдает список серверов иа. Из полученного списка выясняется, какие серверы имен обслуживают иа. Затем запрашивается сервер (выбирается по определенному алгоритму или берется первый в полученном списке) чтобы узнать, какие серверы обслуживают odessa.ua. Затем берется сервер из полученного списка и выясняется, кто обслуживает ogpu.odessa.ua, и уже у этого сервера узнается IP-адрес компьютера user.ogpu.odessa.ua. А чтобы в следующий раз не повторять этот поиск, полученную пару "имя—IP-адрес" ваш сервер DNS сохраняет в своей базе данных.

В том случае, если необходимо по IP-адресу узнать имя компьютера, опять используется DNS-сервер. Для этих целей существует псевдодомен in-addr.arpa и в нем точно так же прописываются адреса, только порядок следования цифр обратный. Например, для адреса 195.66.195.22 запрос получится как к 22.195.66.195.in-addr.aipa, а схема поиска ответа остается такая же.

По своим функциональным обязанностям различают два вида DNS-серверов – обычный и кэширующий.

•  Кэширующий сервер DNS используется для локального хранения запрошенных пользователем пар «имя—IP-адрес», что при интенсивном общении со многими Web-серверами позволяет экономить время на DNS-запросах. Кэширующий сервер не отвечает на внешние DNS-запросы.

•  обычный сервер DNS – это полнофункциональный сервер, позволяющий получать, передавать и синхронизировать DNS-данные с другими DNS-серверами.

Настройка сетевых параметров

Поскольку настройка (и функционирование) DNS-сервера затрагивает практически все сетевые параметры, работоспособность DNS-сервера зависит от правильной конфигурации сети. В современных дистрибутивах, если вы выбрали «устанавливать DNS-сервер», конфигурирование его производится автоматически. Однако разработчик дистрибутива рассчитывает на абстрактную среднестатистическую систему, которой, как показывает практика, не существует. Поэтому следует убедиться, что с сетевыми настройками у вас все в порядке.

host.conf

Следующая запись в файле host.conf означает, что при поиске хостов система сначала посмотрит в /etc/hosts, а потом только обратится к серверу DNS:

order hosts,bind

/etc/hosts

В этом файле должны находиться пары «IP-адрес—имя»:

127.0.0.1 localhost localhost.localdomain

192.168.0.1 user

192.168.0.2 user2

Причем обязательно должна присутствовать следующая строка:

127.0.0.1 localhost localhost.localdomain

/etc/resolf.conf

В этом файле должны находиться строки, подобные приведенным:

search ogpu.odessa.ua nameserver 195.66.195.22

В строке, которая начинается со слова search, указывается, какое доменное имя будет принято по умолчанию. Так, если вы напишете user, то система сразу попытается обратиться к компьютеру user.ogpu.odessa.ua. После search можно указывать несколько имен. В следующей строчке указываются адреса DNS-серверов, к которым будет обращаться ваша машина.

Настройка кэширующего сервера

Кэширующий сервер найдет ответ на запрос об имени машины и запомнит его, чтобы ответить, когда вы запросите эту же информацию в следующий раз. Это значительно уменьшит время ожидания ответа при следующем запросе, особенно если у вас медленное соединение.

/etc/named.conf

Это основной конфигурационный файл для DNS-сервера. Для кэширующего сервера он должен содержать следующие строки:

options {

directory "/var/named";

};

zone"." {

type hint;

file "root.hints";

};

zone "О.0.127.in-addr.arpa" {

type master;

file "127.0.0";

};

Строка directory указывает bind где искать файлы. Все файлы, используемые впоследствии, будут иметь путь относительно этого каталога.

Строка zone "0.0.127. in-addr.arpa" показывает, что bind также отвечает за обратную зону для подсети 127.*.*.*, является в ней мастером, и файл описания зоны – 127.0.0.

Секция zone"." самая важная. Она описывает, в каком файле лежат адреса корневых DNS-серверов, которые отвечают за зоны первого уровня.

Файл, названный /var/named/root.hints, должен находиться в указанном каталоге и содержать приблизительно следующую информацию:

Этот файл описывает имена корневых серверов имен по всему миру. Их список периодически изменяется. Поэтому данный файл необходимо время от времени корректировать.

Для получения файла root.hints существует по меньшей мере два пути: либо забрать его по FTP с сервера internic, либо выполнить команду:

dig @rs.internic.net. ns >root.hints

Данный текст является ознакомительным фрагментом.