Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть III. Сервер DNS

Оригинал: Introduction to DNS
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 11 июля 2015 г.

Глава 4. Вводная информация о серверах DNS

4.3. Кэширующие серверы DNS

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

Существует два вида кэширующих серверов DNS. Это серверы DNS, использующие перенаправляющие серверы DNS, а также серверы DNS, использующие корневые серверы DNS.

4.3.1. Кэширующий сервер DNS, не использующий перенаправляющий сервер

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

На иллюстрации ниже показан процесс отправки клиентом запроса информации об IP-адресе для доменного имени linux-training.be. Наш кэширующий сервер соединится с корневым сервером и будет перенаправлен на сервер, обслуживающий домен верхнего уровня .be. После этого он соединится с сервером, обслуживающим домен верхнего уровня .be, и будет перенаправлен на один из серверов имен организации Openminds. Один из этих серверов имен (в данном случае nsq.openminds.be) ответит на запрос, передав IP-адрес сервера с доменным именем linux-training.be. После того, как наш кэширующий сервер передаст данную информацию клиенту, клиент сможет соединиться с рассматриваемым веб-сайтом.

Кэширующий сервер DNS, не использующий перенаправляющий сервер

При использовании сниффера tcpdump в процессе разрешения данного доменного имени можно получить следующий вывод (первые 20 символов каждой строки были удалены).

192.168.1.103.41251 > M.ROOT-SERVERS.NET.domain: 37279% [1au] A? linux-tr\
aining.be. (46)
M.ROOT-SERVERS.NET.domain > 192.168.1.103.41251: 37279- 0/11/13 (740)
192.168.1.103.65268 > d.ns.dns.be.domain: 38555% [1au] A? linux-training.\
be. (46)
d.ns.dns.be.domain > 192.168.1.103.65268: 38555- 0/7/5 (737)
192.168.1.103.7514 > ns2.openminds.be.domain: 60888% [1au] A? linux-train\
ing.be. (46)
ns2.openminds.be.domain > 192.168.1.103.7514: 60888*- 1/0/1 A 188.93.155.\
87 (62)

4.3.2. Кэширующий сервер DNS, использующий перенаправляющий сервер

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

Кэширующий сервер DNS, использующий перенаправляющий сервер

На иллюстрации выше показан сервер DNS в локальной сети компании, который использует предоставляемый интернет-провайдером сервер DNS в качестве перенаправляющего сервера DNS. В том случае, если IP-адресом предоставляемого интернет провайдером сервера DNS является адрес 212.71.8.10, в файле конфигурации named.conf сервера DNS компании должны присутствовать следующие строки:

forwarders {
        212.71.8.10;
};

Кроме того, вы также можете настроить ваш сервер DNS для работы с условно-перенаправляющими серверами DNS (conditional forwarders). Описание условно-перенаправляющего сервера DNS в файле конфигурации выглядит следующим образом:

zone "someotherdomain.local" {
       type forward;
       forward only;
       forwarders { 10.104.42.1; };
};

4.3.3. Итеративный или рекурсивный запрос

Рекурсивным запросом называется запрос DNS, после отправки которого клиент ожидает получения окончательного ответа от сервера DNS (на иллюстрации выше он изображен с помощью жирной красной стрелки, направленной от Макбука к серверу DNS). Итеративным же запросом называется запрос DNS, после отправки которого клиент не ожидает получения окончательного ответа от сервера DNS (на иллюстрации выше он изображен с помощью трех черных стрелок,направленных от сервера DNS). Итеративные запросы чаще всего осуществляются между серверами имен. Корневые серверы имен не отвечают на рекурсивные запросы.

4.4. Авторитативные серверы DNS

Сервер DNS, осуществляющий управление зоной DNS, называется авторитативным сервером DNS (authoritative DNS server) для данной зоны. Помните о том, что зона DNS является всего лишь набором ресурсных записей.

Авторитативные серверы DNS

4.5. Первичные и вторичные серверы DNS

Первый авторитативный сервер DNS для зоны DNS называется первичным сервером DNS (primary DNS server). Этот сервер будет работать с копией базы данных зоны DNS, доступной как для чтения, так и для записи. При необходимости повышения сохранности данных в случае сбоев, повышения производительности сервера или балансировки нагрузки вы можете ввести в строй другой сервер DNS, который также будет управлять данной зоной DNS. Этот сервер будет называться вторичным сервером DNS (secondary DNS server).

Первичные и вторичные серверы DNS

4.6. Процесс передачи данных зон DNS

Вторичный сервер получает копию базы данных зоны DNS от первичного сервера в процессе передачи данных зоны DNS (zone transfer). Запросы осуществления передач данных зон DNS отправляются вторичными серверами через определенные временные интервалы. Длительность этих временных интервалов устанавливаются в рамках ресурсной записи SOA.

Процесс передачи данных зон DNS

Вы можете инициировать принудительное обновление данных зоны DNS с помощью утилиты rndc. В примере ниже инициируется передача данных зоны DNS fred.local, а также выводится соответствующий фрагмент файла системного журнала /var/log/syslog.

4.7. Ведущие и ведомые серверы DNS

При добавлении вторичного сервера DNS в зону DNS вы можете настроить этот сервер таким образом, что он окажется ведомым сервером DNS (slave DNS server) по по отношению к первичному серверу. Первичный же сервер DNS окажется ведущим сервером DNS (master DNS server) по отношению к вторичному серверу.

Чаще всего первичный сервер DNS является ведущим сервером, работающим со всеми ведомыми серверами. Иногда ведомый сервер может являться одновременно и ведущим сервером для ведомых серверов следующего уровня. На иллюстрации ниже сервер с именем ns1 является первичным сервером, а серверы с именами ns2, ns3 и ns4 - вторичными серверами. Хотя ведущим сервером для серверов с именами ns2 и ns3 и является сервер с именем ns1, ведущим сервером для сервера с именем ns4 является сервер с именем ns2.

Ведущие и ведомые серверы DNS

4.8. Ресурсная запись SOA

Ресурсная запись SOA содержит значение частоты обновления данных зоны DNS с именем refresh. В том случае, если это значение устанавливается равным 30 минутам, ведомый сервер будет отправлять запросы на передачу копии данных зоны DNS через каждые 30 минут. Также данная запись содержит значение продолжительности периода ожидания с именем retry. Данное значение используется в том случае, если ведущий сервер не отвечает на последний запрос передачи данных зоны DNS. Значение с именем expiry time устанавливает период времени, в течение которого ведомый сервер может отвечать на запросы от клиентов без обновления данных зоны DNS.

Ниже приведен пример использования утилиты nslookup для чтения данных ресурсной записи SOA зоны DNS (linux-training.be).

root@debian6:~# nslookup 
> set type=SOA
> server ns1.openminds.be
> linux-training.be
Server:         ns1.openminds.be
Address:        195.47.215.14#53

linux-training.be
        origin = ns1.openminds.be
        mail addr = hostmaster.openminds.be
        serial = 2321001133
        refresh = 14400
        retry = 3600
        expire = 604800
        minimum = 3600

Передачи данных зон DNS осуществляются лишь в случаях изменения данных в базах данных зон DNS (то есть, тогда, когда происходит добавление, удаление или изменение одной или большего количества ресурсных записей на стороне ведущего сервера). Ведомый сервер осуществляет сравнение номера версии (serial number) собственной копии ресурсной записи SOA с номером версии ресурсной записи SOA соответствующего ведущего сервера. В том случае, если номера версий совпадают, обновления данных не требуется (по той причине, что другие ресурсные записи не были добавлены, удалены или изменены). В том же случае, если номер версии ресурсной записи SOA на стороне ведомого сервера меньше номера версии той же записи на стороне соответствующего ведущего сервера, будет осуществлен запрос передачи данных зоны DNS.

Ниже приведен снимок окна сниффера Wireshark с данными, перехваченными в процессе передачи данных зоны DNS.

Ресурсная запись SOA

4.9. Полные или частичные передачи данных зон DNS

Передача данных зоны DNS может быть как полной, так и частичной. Решение об использовании того или иного режима зависит от объема данных, который необходимо передать для полного обновления базы данных зоны DNS на ведомом сервере. Частичная передача данных зоны предпочтительна в том случае, когда полный объем измененных данных меньше объема всей базы данных. Полные передачи данных зон DNS осуществляются с использованием протокола AXFR, а частичные передачи данных зон DNS - с использованием протокола IXFR.


Предыдущий раздел: Оглавление Следующий раздел:
4.1. О протоколе DNS   4.10. Кэш DNS