Кэширующий DNS-server обрабатывает запросы на преобразование доменного имени в IP-адрес. Его наличие позволяет не обращаться к внешнему DNS-серверу. В связи с этим последующие запросы для того же доменного имени могут быть обслужены непосредственно из кэша, что минимизирует задержку. Кэширование помогает уменьшить количество и объём DNS-запросов, которые должны отправиться за пределы локальной сети, в результате чего снижается нагрузка на DNS-серверы.
В качестве службы кэширующего DNS-сервер будет использована служба bind9. Служба bind9 - это открытая и наиболее распространённая реализация DNS-сервера, обеспечивающая преобразование как DNS-имени в IP-адрес, так и наоборот.Порядок установки и настройки кэширующего DNS-сервера можно выполнить в следующей последовательности.
Для определения последней версии пакета bind9 необходимо ввести команду (рисунок 1):
pkg search bind9
В данном примере пакет последней версии обозначен именем bind920. Для установки вводится команда вида:
pkg install bind9<последняя версия>
В данном случае
pkg install bind920
Прежде, чем настраивать службу рекомендуется сохранить копию оригинального файла named.conf (вводится одной командой):
cp /usr/local/etc/namedb/named.conf /usr/local/etc/namedb/named.conf.back
Затем файл очищается от базовых и шаблонных настроек
echo '' > /usr/local/etc/namedb/named.conf
Далее открывается файл при помощи текстового редактора (в примере используется редактор nano):
nano /usr/local/etc/namedb/named.conf
В открывшемся файле прописывается конфигурация, исходя из параметров сети (рисунки 2 и 3).
Некоторые пояснения к конфигурации:
- dump-file - файл для хранения кэша ответов;
- параметр listen-on разрешает слушать на всех сетевых интерфейсах;
- параметр allow-query разрешает делать запросы от клиентов указанной сети;
- в параметре forwarders указываются DNS-сервера, на которые будут запросы перенаправляться на разрешение имён (если их нет в кэше или не могут изначально получить разрешение). В примере используются общедоступные DNS-сервера от Google, но можно указать и другие, например DNS-сервера провайдера;
- recursion включает рекурсивные запросы;
- dnssec-validation включает автоматическую проверку корректности ответов в рамках DNSSEC (Domain Name System Security Extensions — протокол для повышения безопасности системы доменных имён DNS).
В конце файла дописывается информация о двух дополнительных файлах в которых будут записываться определённые параметры под их особенности (рисунок 3).
В файле query.log будут записываться запросы клиентов, а во втором файле default.log - логирование по умолчанию.
Для того чтобы создать директорию для файлов, прописанных в конфигурационном файле named.conf в блоке logging, и выдать созданной директории права bind, необходимо ввести следующую команду:
mkdir -p /var/log/named && chown bind:bind /var/log/named
Для того чтобы создать два файла, прописанные в конфигурационном файле named.conf в блоке logging, нужно ввести две команды:
touch /var/log/named/query.log && chown bind:bind /var/log/named/query.log
touch /var/log/named/default.log && chown bind:bind /var/log/named/default.log
На рисунке 4 показаны два созданных файла - default.log и query.log.
Теперь необходимо добавить службу bind9 в конфигурационный файл rc.conf. Для этого открывается файл для редактирования:
nano /etc/rc.conf
И в конец файла дописывается служба (указано красной чертой на рисунке 5)
Для запуска службы вводится команда
service named start
Если необходимо перезапустить службу, то
service named restart
Для того чтобы создать директорию для dump-file, прописанную в конфигурационном файле named.conf в блоке options (рисунок 2), и выдать созданной директории права bind, необходимо ввести следующую команду (рисунок 6):
mkdir -p /var/dump && chown bind:bind /var/dump
Для того чтобы создать dump-file, необходимо ввести следующую команду:
rndc dumpdb -all
На рисунке 7 показан созданный файл named_dump.db для хранения кэша ответов (показано с помощью файлового менеджера mc).
Для проверки работоспособности кэширующего DNS-сервера на рабочей станции с операционной системой xUbuntu открывается терминал и вводится команда типа:
dig <имя домена>
В примере в качестве домена будет использован ya.ru (рисунок 8)
dig ya.ru
Время ответа первого запроса составило 484 мсек. После повторной команды время ответа на запрос заняло 0 мсек, так как кэш от первого запроса был сохранён в файле dump-file службой bind9.
На сервере FreeBSD для просмотра содержимого кэширующего DNS-сервера сначала обновляется база данных файла командой:
rndc dumpdb -all
После этого просматривается содержимое файла dump-file командой (рисунок 9, внутри красной рамки кэш ответа домена ya.ru):
nano /var/dump/named_dump.db
Также создавались дополнительные файлы в конфигурационном файле named.conf, поэтому можно с помощью команды
nano /var/log/named/query.log
просмотреть с какой рабочей станции был совершён запрос (его IP-адрес) и кому был отправлен запрос (имя домена). На рисунке 10 на последней строке продемонстрировано, что с рабочей станции 192.168.1.2 был совершён запрос на имя домена ya.ru, а также дата и время совершённого запроса.
По мере работы пользователей в сети интернет информация о доменных именах и соответствующих им IP-адресах записывается в кэше DNS. Данная схема позволяет немного экономить время на обработку DNS-запросов, что в целом несколько увеличивает скорость доступа к сайтам в сети интернет. Но при перезагрузке службы или перезагрузки сервера вся информация в кэше обнуляется.