Наверно, многие сталкивались с ситуацией, когда внутри сети компании необходим доступ к DNS серверам Интернет. Рассмотрим ситуацию, когда у вас в сети развернута роль Active Directory, у вас есть лес (домен) и DNS. Одним словом, поднята связка AD+DNS, сеть не имеет прямого доступа в Интернет, клиентские компьютеры внутри сети.
Задача: обеспечить возможность DNS сервера отвечать на запросы клиентов не только из своей базы, но и отправлять и получать ответы от рутовых DNS серверов.
Конечно, Microsoft DNS сервер это умеет делать по умолчанию, однако, для этого нужен доступ в интернет, что как решение с точки зрения политики безопасности неудачное.
Другой вариант имея DMZ в среде компании настроить шлюз (getaway) и на DNS сервере прописать Перенаправление (Forwarders), однако, мы открываем доступ к нашему серверу, что тоже не очень желательно.
На мой взгляд, удачный вариант — это иметь в DMZ некий сервер DNS, который будет принимать и отвечать на запросы нашего внутреннего сервера AD+DNS.
Конечно, существуют другие варианты решения данной задачи, однако, цель рассмотреть именно эту возможность: поднять DNS сервер, который будет являться форвардером для другого DNS сервера.
Итак, для решения будем использовать систему Debian 9, развернутую на виртуальной машине. Параметры для виртуалки были выбраны: 1 CPU, 512Mb RAM, 10Gb HDD. Можно играть этими параметрами исходя из ресурсов и возможностей. DNS сервер выбран pdnsd — это прокси-сервер DNS-сервер. Pdns распространяется под лицензией GNU общей публичной лицензии (GPL лицензией).
Pdns – легкий, простой в настройке прокси-сервер DNS и полностью обеспечивает решение нашей задачи. Однако я столкнулся с тем, что в библиотеке пакетов Debian 9 не нашел pdnsd.
Скачиваем пакет с сайта https://pkgs.org/download/pdnsd для Debian 8 и перекидываем на наш сервер.
Устанавливаем
dpkg -i </path/pdnsd_pack.deb>
При установке предлагается 3 варианта:
- resolvconf – будет использоваться DNS настройки сервера для направления запросов.
- root servers – запросы будут направлены на root сервера
- manual – собственные настройки, которые будут произведены через conf файл.
Для решения нашей задачи достаточно выбрать режим root servers, что мы и сделаем.
Из настроек, что может понадобиться следующее:
Настроить размер кеша в Мб
perm_cache=2048;
Настройки сети: от каких сетей ожидать запросы и ответы. Адрес вашей внутренней сети
server_ip =
А нам останется прописать перенаправление на нашем DNS сервере внутри сети.
Нажимаем Edit
И прописываем внутренний IP адрес нашего сервера pdnsd.
Теперь запросы, на которые не сможет ответить наш AD DNS сервер будут перенаправлены на pdnsd сервер. При этом внутренняя сеть останется закрытой. Еще одной положительной стороной прокси кеширования является ускорение процесса запрос-ответ.
Управление сервером
Проверка статуса:
pdnsd-ctl status
Очистить кэш:
pdnsd-ctl record airmeno.ru delete - для одной записи
pdnsd-ctl empty-cach - полностью
Посмотреть кэш:
pdnsd-ctl dump
Подробно настройки сервера можно просмотреть тут:
http://manpages.ylsoftware.com/ru/pdnsd.8.html
http://manpages.ylsoftware.com/ru/pdnsd-ctl.8.html
https://wiki.archlinux.org/index.php/pdnsd#DNS_servers