Архив метки: dns

BIND: Запуск named в jail без chroot

После настройки всех конфигурационных файлов DNS-сервера named, прописываю автозапуск в /etc/rc.conf: named_enable=»YES»и решаюсь наконец запустить свой первый DNS-сервер. Пишу в консоли заветное /etc/rc.d/named start и… облом:

Поскольку джейл у меня предназначен чисто для нужд DNS-сервера и постороннего дополнительно ПО в нем не предвидится, следую совету и отключаю chroot:

 

BIND: Настройка DNS-сервера. Часть1

BIND (Berkeley Internet Domain Name System) — открытая реализация системы DNS, в системе FreeBSD установлен по умолчанию. BIND — это не отдельная программа, а набор взаимодействующих компонентов:

  • named — сервер — отвечает на запросы;
  • resolver — клиент — опрашивает другие dns-сервера; resolver library;
  • dig, host, nslookup — набор утилит для диагностики работы DNS;

BIND — универсален. Его можно использовать и как авторитетный (master/slave) dns-сервер, и как кеширующий, и как перенаправляющий.

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

Коротко о том, что должно получиться:

  • кеширующий сервер, обрабатывающий запросы определенных ip-адресов;
  • авторитетный master сервер, содержащий 1 прямую зону и несколько обратных;
  • slave попросим повесить у провайдера, а можно и воспользоваться бесплатным сервисом  — secondary.net.ua;

Файлы конфигурации можно найти в /etc/namedb, что является символической ссылкой на /var/named/etc/namedb:

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

Кеширующий сервер слушает udp и tcp порт 53, на который принимает рекурсивные (в подавляющем большинстве) запросы клиентов на разрешения каких-либо доменных имен. Приняв запрос от клиента, named сначала ищет ответ в своем кеше, и если не находит, начинает опрашивать другие dns-сервера, начиная с корневых, с помощью нерекурсивных запросов. Получив окончательный ответ (т.е. искомый ip-адрес нужного домена), сохраняет его в кеш и отправляет клиенту.

Для настройка кеширующего сервера эти файлы являются обязательными:

  • named.conf — главный conf-файл демона named;
  • named.root — файл, содержащий перечень корневых серверов — оставляем без изменений;

Файл конфигурации состоит из набора инструкций, каждая из которых заканчивается точкой с запятой. Все, что помечено «//», «/*  текст */» и «#» — комментарии.

Редактируем named.conf

Настройка опций (инструкция options):

Далее оставляем все, как есть:

Подключение файла подсказок named.root, как уже было сказано, в нем указывается перечень корневых серверов:

Указание следующих зон локально предотвращают запросы для этих зон вне нашей сети и ненужные запросы к корневым серверам:

 Настройка авторитетного dns-сервера (master):

Авторитетный dns-сервер содержит одну или несколько (или целую тучу :-)) зон и отвечает на запросы клиентов и других dns-серверов для разрешения имен именно с этих зон.

Для настройки авторитетного сервера следующие файлы являются обязательными:

  • named.conf – главный conf-файл демона named;
  • pro-voip.com.ua – файл зоны;

Файлы зоны подключаются к серверу с помощью инструкции zone в файле named.conf:

— здесь указывам имя зоны в кавычках «pro-voip.com.ua», тип зоны — master, с помощью директивы file задаем путь к файлу зоны. Сам файл зоны может храниться где угодно, у меня все master-файлы зоны находятся в директории /etc/namedb/master.

Директива allow-transfer задает список slave-серверов, на которые будет скопирована зона.

Для удобства администрирования я выношу все инструкции zone в отдельный файл master.conf, который подключается к главному конфигурационному файлу named.conf с помощью директивы include вот так:

Если необходимо выкосить какую либо из зон с dns-сервера, комментируем соответствующую инструкцию zone, не трогая сам файл зоны. Если нужно убрать с dns-сервера все зоны, просто комментируем инструкцию  include, которая подключает соответствующий файл с зонами. Удобно.

Поднастроим еще опции в named.conf.

 Настройка авторитетного dns-сервера (slave):

Настройка авторитетного slave-сервера отличается от master’а описанием подключения зоны. Создаем отдельный файл slave.conf, где и будем подключать эти самые зоны; подключаем slave.conf в named.conf:

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

— опять-таки указываем название зоны в кавычках, тип slave; путь к файлу зоны задаем с помощью директивы file; masters — задает список master-серверов, откуда будет скачана зона.

Хочу заметить, что при настройке slave-сервера файл зоны создавать не нужно — нужно лишь указать, в какой файл эта зона на slave будет сохранена.

Настройка логирования

Настройка логов действий демона named производится с помощью инструкции logging, в ней в указываем с помощью channel методы и параметры вывода логов, с помощью category — типы сообщений, которые в этот лог будут записаны:

Имя канала «logfile»; все, что приходит в этот канал, перенаправляется в файл /var/named/var/log/named.log, количество версий лога неограниченное, размер log-файла 10М. Опции для channel: уровень логирования severity (аналог «приоритетов» syslog’а) — info; печатаем в лог категорию, уровень, время — print-category, print-severity, print-time.

Категории сообщений в логе задаем с помощью директивы category, и эти сообщения перенаправляем в канал logfile. Категории, которые не хотим видеть в логе, отправляем в канал null.

Таким образом с помощью каналов и категорий можно создавать столько логов, сколько вам нужно, и определенного вида.