Установка Bind 9 (named) в CentOS 7

Одним из важных сервисов, обеспечивающих функционирование современного интернета является сервис по преобразованию имени сайта в ip адрес. Настройкой реализации сервиса DNS мы займемся в этой статье на примере настройки Bind 9 (named) на сервере под управлением CentOS 7. Мы подготовим минимально необходимый базовый функционал и заглянем немного глубже в настройки логирования.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Что такое DNS сервер BIND

Bind - самая распространенная на текущий день реализация ДНС сервера, которая обеспечивает преобразование IP адресов в dns-имена и наоборот. Его также называют named, например в Freebsd. Судя по информации из Википедии, сейчас 10 из 13 корневых ДНС серверов интернета работают на bind. Он установлен из коробки практически во всех linux дистрибутивах. Я рассмотрю его установку на сервер CentOS 7.

Устанавливаем Bind 9 (named) в CentOS 7

Первым делом проверим, установлен ли у нас днс сервер в системе:

# rpm -qa bind*
 bind-libs-lite-9.9.4-14.el7.x86_64
 bind-license-9.9.4-14.el7.noarch

У меня не установлен, так как во время инсталляции centos выбрал минимальный пакет программ. Сервер имен у нас будет работать в chroot окружении, так что устанавливаем соответствующие пакеты:

# yum -y install bind bind-utils bind-chroot

Установка bind в CentOS 7

Еще раз обращаю внимание, что мы будем использовать bind в chroot среде для увеличения безопасности. Это накладывает определенные особенности в настройке и управлении сервером. Нужно быть внимательным в этих мелочах. Итак, запускаем bind:

# systemctl start named-chroot
# systemctl enable named-chroot
ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.service'

Проверяем содержимое chroot каталога:

# ls -l /var/named/chroot/etc

Настройка bind в chroot

Все в порядке, сервер запустился, необходимые файлы созданы, все готово для настройки. Займемся ей.

Настраиваем DNS сервер в CentOS 7

Файл конфигурации нашего сервера располагается по адресу /var/named/chroot/etc/named.conf. Открываем его и приводим к следующему виду:

# mcedit /var/named/chroot/etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
allow-query { 127.0.0.1; 192.168.7.0/24; };
recursion yes;
allow-recursion { 127.0.0.1; 192.168.7.0/24; };
forwarders { 8.8.8.8; };
version "DNS Server";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
dnssec-enable no;
dnssec-validation no;
};

zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

logging {
channel default_file {
file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
category default { default_file; };
};

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

listen-on-v6 port 53 { none; }; Отключили работу на интерфейсе ipv6.
allow-query { 127.0.0.1; 192.168.7.0/24; }; Разрешаем обычные запросы только из локальной сети.
allow-recursion { 127.0.0.1; 192.168.7.0/24; }; Разрешаем рекурсивные запросы только из локальной сети.
forwarders { 8.8.8.8; }; Перенаправляем запросы, которые сами не резолвим, на днс сервер гугла. У меня указан он просто для примера. Тут лучше всего указать сначала ДНС серверы провайдера.
version "DNS Server"; Скрываем версию бинда, вместо этого выводим указанную строку.
Не забудьте отредактировать правила фаервола для корректной работы DNS сервера - открыть 53 порт UDP для работы кэширующего сервера, который мы сейчас настроили, и 53 порт TCP для пересылки зон, о которых речь пойдет дальше

Теперь создадим папку для логов. Не забываем, что мы работаем в chroot окружении:

# cd /var/named/chroot/var/log && mkdir named && chown named. named

Поддержка собственной зоны

Допустим, нам необходимо в нашем named разместить собственную зону site1.ru. Первым делом создаем файл зоны, которую будет обслуживать dns сервер:

# mcedit /var/named/chroot/var/named/site1.ru.zone
$TTL 86400
@        IN     SOA     site1.ru. site1.ru.local. (
                        2015092502
                        43200
                        3600
                        3600000
                        2592000 )

        IN NS ns1.site1.ru.
        IN NS ns2.site1.ru.
        IN A 192.168.7.254
        IN MX 10 mx.site1.ru.

gate    IN A 192.168.7.254
mx      IN A 192.168.7.250
ns1     IN A 192.168.7.235
ns2     IN A 192.168.7.231

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

Выставляем необходимые права:

# chown root:named /var/named/chroot/var/named/site1.ru.zone
# chmod 0640 /var/named/chroot/var/named/site1.ru.zone

Дальше подключаем файл зоны в конфигурационном файле bind - /var/named/chroot/etc/named.conf:

zone "site1.ru" {
 type master;
 file "site1.ru.zone";
};

Перечитываем конфигурацию named с помощью rndc:

# rndc reconfig

Добавление в bind slave zone

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

zone "site.ru" IN {
 type slave;
 masters { 10.1.3.4; };
 file "site.ru.zone";
};

10.1.3.4 - ip адрес dns сервера, с которого мы берем зону. Не забудьте на нем разрешить передачу зоны на ваш dns сервер.

Чтобы сервер смог корректно сохранить файл со slave зоной, необходимо добавить разрешение на запись bind для директории /var/named/chroot/var/named. По-умолчанию она имеет следующие права:

drwxrx--- 6 root named 164 Jan 6 06:06 named

Нужно добавить группе named разрешение на запись, чтобы стало вот так:

drwxrwx--- 6 root named 164 Jan 6 06:06 named

После этого можно перезапустить bind и проверить, что создался файл слейв зоны. С указанными выше настройками, он будет располагаться по адресу /var/named/chroot/var/named/site.ru.zone. Если у bind не будет прав для создания файла, в логе вы получите ошибку:

dumping master file: tmp-7Swr6EZpcd: open: permission denied

Настройка логов в bind (named)

Гораздо интереснее и полезнее разобраться с подробным логированием работы сервера. Я долгое время поверхностно хватался за всякие рекомендации и куски примерных конфигов в интернете, пока в не решил разобраться сам с этой темой и не полез в оригинальный мануал.

Bind дает широкие возможности для ведения логов. Можно фиксировать практически все, что связано с работой сервера. Я сейчас на простых примерах покажу, как это работает.

Первым делом в конфигурации мы задаем канал, куда будут складываться логи по тем или иным событиям. Вот пример подобного канала:

channel general {
file "/var/log/named/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;

Здесь указано название канала, которые мы придумываем сами - general, указан путь до файла, сказано, что хранить будем 3 версии лога размером не более 5 мегабайт. Параметр severity может принимать следующие значения:

Описание параметров severity
critical Только критические ошибки.
error Обычные ошибки и все что выше.
warning Предупреждения и все, что выше.
notice Уведомления и все, что выше.
info Информационные сообщения и все что выше.
debug Сообщения уровня debug и все, что выше. Уровни debug  регулируются значениями 0, 1, 2, 3.
dynamic То же, что и debug, только его уровень регулируется глобальной настройкой сервера.

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

  • print-severity yes | no - указывает, писать или нет параметр severity в лог
  • print-category yes | no - указывает писать или нет название категории логов

Я эти параметры не указал, так как по-умолчанию устанавливается значение no, которое лично меня устраивает.

Дальше необходимо указать категорию логов и в какой канал мы будем ее записывать:

category general { general; };

Категорий у днс сервера bind достаточно много. Вот мой перевод полного списка с описаниями:

Описание категорий логов в bind (named)
default Сюда будут попадать события всех категорий из этой таблицы, если они не определены отдельно, за исключением категории queries, которую нужно включать специально. То есть если обозначить только категорию default, то в нее будут сыпаться события всех категорий.
general Эта категория для всех логов, которые не включены ни в одну из перечисленных категорий.
database Сообщения, относящиеся к хранению зон и кэшированию.
security Подтверждение и отказ в выполнении запросов.
config Все, что относится к чтению и выполнению файла конфигурация.
resolver Разрешение имен, включая информацию о рекурсивных запросах, выполняемых от имени клиента кэширующим сервером.
xfer-in Информация о получении зон.
xfer-out Информация о передаче зон.
notify Логирование операций протокола NOTIFY.
client Выполнение клиентских запросов.
unmatched Сообщения, которые named не смог отнести ни к одному классу или для которых не определено отображение.
network Логирование сетевых операций.
update Динамические апдейты.
update-security Подтверждение или отклонение запросов на апдейт.
queries Логирование запросов к ДНС серверу. Для включения этой категории необходимо отдельно задать параметр в конфигурации сервера. Это связано с тем, что эта категория генерирует очень много записей в лог файл, что может сказаться на производительности сервера.
query-errors Ошибки запросов к серверу.
dispatch Перенаправление входящих пакетов модулям сервера на обработку.
dnssec Работа протоколов DNSSEC и TSIG.
lame-servers Фиксируются ошибки, которые получает bind при обращении к удаленным серверам в попытке выполнить запрос на разрешение имени.
delegation-only Логирование запросов, вернувших NXDOMAIN.
edns-disabled Запросы, которые вынуждены использовать plain DNS из-за превышения timeouts.
RPZ  Все операции, связанные с выполнение Response Policy Zone (RPZ).
rate-limit  Операции связанные с одним или несколькими rate-limit statements в options или view.

Таким образом, чтобы вывести все категории логов в отдельные файлы, необходимо в конфиг named добавить следующую конструкцию:

logging {

channel default {
file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel general {
file "/var/log/named/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel database {
file "/var/log/named/database.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel security {
file "/var/log/named/security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel config {
file "/var/log/named/config.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel resolver {
file "/var/log/named/resolver.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel xfer-in {
file "/var/log/named/xfer-in.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel xfer-out {
file "/var/log/named/xfer-out.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel notify {
file "/var/log/named/notify.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel client {
file "/var/log/named/client.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel unmatched {
file "/var/log/named/unmatched.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel network {
file "/var/log/named/network.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel update {
file "/var/log/named/update.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel update-security {
file "/var/log/named/update-security.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel queries {
file "/var/log/named/queries.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel query-errors {
file "/var/log/named/query-errors.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel dispatch {
file "/var/log/named/dispatch.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel dnssec {
file "/var/log/named/dnssec.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel lame-servers {
file "/var/log/named/lame-servers.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel delegation-only {
file "/var/log/named/delegation-only.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel edns-disabled {
file "/var/log/named/edns-disabled.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel rpz {
file "/var/log/named/rpz.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel rate-limit {
file "/var/log/named/rate-limit.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

category default { default; };
category general { general; };
category database { database; };
category security { security; };
category config { config; };
category resolver { resolver; };
category xfer-in { xfer-in; };
category xfer-out { xfer-out; };
category notify { notify; };
category client { client; };
category unmatched { unmatched; };
category network { network; };
category update { update; };
category update-security { update-security; };
category queries { queries; };
category query-errors { query-errors; };
category dispatch { dispatch; };
category dnssec { dnssec; };
category lame-servers { lame-servers; };
category delegation-only { delegation-only; };
category edns-disabled { edns-disabled; };
category rpz { rpz; };
category rate-limit { rate-limit; };
};

Если мы хотим собирать все логи запросов из категории queries, то в раздел options файла конфигурации необходимо добавить параметр, который это разрешает:

querylog yes;

Перезапускаем bind:

# systemctl restart named-chroot.service

Проверка работы DNS Server

Первым делом пойдем в каталог с логами и проверим, что там у нас:

# cd /var/named/chroot/var/log/named
# ls -l

Настройка логов в bind (named)

Все файлы журнала созданы и начали наполняться. Можно проверить один из них. Например, посмотрим, как наш сервер centos (192.168.7.246) логирует запросы пользователей. Попробуем с компьютера 192.168.7.254 (windows) выполнить nslookup yandex.ru и посмотрим как это отразится в лог файле:

26-Sep-2015 19:25:30.923 client 192.168.7.254#56374 (yandex.ru): query: yandex.ru IN A + (192.168.7.246)
26-Sep-2015 19:25:31.013 client 192.168.7.254#56375 (yandex.ru): query: yandex.ru IN AAAA + (192.168.7.246)

Теперь выполним ping site1.ru, чтобы проверить, как сервер поддерживает нашу зону:

centos dns

Смотрим, что в логах:

26-Sep-2015 19:28:01.660 client 192.168.7.254#49816 (site1.ru): query: site1.ru IN A + (192.168.7.246)

Таким образом очень удобно отследить, куда лезет компьютер. Например, можно поднять временно dns сервер, включить лог запросов. В клиенте указать единственный днс сервер, который мы настроили. Дальше можно отслеживать, к примеру, куда лезет винда после загрузки без нашего ведома. Или откуда грузится реклама в скайпе. Все запросы будут аккуратно складываться в файл, который потом можно спокойно анализировать, а затем, к примеру, настроить запрет сайтов на микротике.

Это все, что я хотел в данном материале рассказать. Тема настройки bind (named) достаточно обширная. Возможно я еще вернусь к ней.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

52 комментария

  1. Аноним

    Обьясните плиз отличие между allow-query и allow-recursion, в частности интересует ( allow-query - он включает в себя рекурсию или нет ) ?

  2. Виталий

    День добрый. Для локалки будет работить если руками всех устройства прописать, а как делают динамическое добавление/обновление записей для новых или переименованных ПК?

    • Статика работать будет. А для динамического обновления нужна какая-то система управлениями ПК. Например, в Windows - Active Directory. Она работает в связке с DNS и DHCP серверами. В таком случае всё обновляется автоматически.

  3. Шайтан-загадка!!!!
    Как писал ранее, все установлено по статье, все работает до первой ошибки. После любой ошибки при загрузке конфиги или фалов зон, все файлы, которые должны быть чрутнуты по пути chroot "исчезают" и остаются видны по нечрутнутым путям.

    Например, после ошибки загрузки зон, файл named.conf исчез по пути /var/named/chroot/etc/named.conf и стал отображаться в /etc/named.conf

    то же самое и с файлами зон, при ошибке они видны только по пути /var/named/, а как только named-croot стартует без ошибок, они видны в /var/named/chroot/var/named/ с дублированием в /var/named/

    Что за шайтанство такое может быть?

  4. Поднял на своей виртуалке BIND по статье, все работает, по образцу перенс логирование на другие свои нейм сервера (до этого по разным потокам не раскладывались логи и диагностика работоспособности была сложной, с учетом того, что я не линукс админ). Все супер!

    Но столкнулся с проблемой CNAME записей, которые ведут на запись в другой зоне на этом же сервере.
    например, имеем зоны domain1.ru и domain2.ru
    Если в зоне domain2.ru создаю
    site IN CNAME host.domain1.ru.
    то при рестарте named-chroot получаю ошибку, при этом, если CNAME ведет на какую-нибудь зону, которую поддерживает сторонний сервер, например
    site IN CNAME mx.yandex.net.
    то все ок
    Также все отлично, если CNAME ведет на запись внутри самой зоны.

    Такое ощущение, что при загрузке зон, зона domain1.ru к моменту чтения записи site IN CNAME host.domain1.ru. еще не загружена.

    Есть ли какое-нибудь правило, как правильно делать такие CNAME?

  5. Критик

    Хочу послать автора из за вот таких вот пассажей)

    Нужно добавить группе named разрешение на запись, чтобы стало вот так:
    drwxrwx--- 6 root named 164 Jan 6 06:06 named

  6. Большое спасибо за статью! Все ваши статьи - качественные и полезные!

  7. Добрый день!
    У меня все получилось. Я этот днс настроил как ns сервер для организаций. С интернета А, NS, SOA записи отрабатывает, но с PTR запись отрабатывает если на прямую обращается на мой ns сервер через интернет. Например dig @мой.ns1.server -x 1.2.3.4, а если просто dig -x 1.2.3.4 то ответа нету. Можете объяснить про настройку ptr если запрос придет с интернета. Еще мой ns сервер за натом.
    Спасибо!

    • Не смогу объяснить. Нет такого опыта. Давно с dns не работал, особенно с ptr. Я эту зону вообще никогда не поддерживал.

    • Т.к. PTR запись - это обратная запись, которая связывает IP адрес с доменом, то прописывать её должен владелец IP адреса. Иными словами, Вам нужно обратиться к LIRу (локальному интернет-регистратору), который отвечает за этот блок IP-адресов. Уточнить информацию о LIRе можно здесь https://www.ripe.net/

      • Как дополнение: LIR прописывает адреса DNS серверов, где нужно искать актуальную PTR запись.

  8. Николай

    Наконец-то перестану вас мучить вопросами по настройке DNS. Долгое время игнорировал Linux Rosa Fresh и, наконец, решил попробовать. Специально после установки системы отключил интернет и попробовал настроить домашнюю сеть. Всё делал так же, как в CentOS, но случилось невероятное, сеть заработала с разбегу, есть соединение, через Samba из любой ОС, есть соединение, через SSH, естественно с компьютера под Linux, есть соединение с консолью, через Putty, причём моментальное, Midnight Commander на сервере, через Putty тоже запускается моментально и всё работает буквально со свистом. Получилось даже то, что не смог настроить в Ubuntu 18 server и AltLinux 8 server, торрент клиент работает и реально скачивает файлы, управляется удалённо, через Web интерфейс. Очевидно придётся досконально изучать менеджер пакетов Urpmi, кстати уже четвёртый по счёту.
    PS: Всё-таки, наверное это особенность Linux CentOS, требовать для своей работы интернет, ведь dnsmasq настроить удалось и он с отключенным интернет преобразовывал имена хостов а IP адреса (ранее я присылал отчёт о тестировании dnsmasq), вот фрагмент ответа на запрос dig tvnik.local:
    ;; ANSWER SECTION:
    tvnik.local. 0 IN A 192.168.8.22
    Ну да ладно, главное всё работает и, кстати, на отечественной ОС.

  9. Николай

    Не понимаю! Установил Ubuntu 18.04 server, просто перенёс содержимое конфигурационных файлов из CentOS и всё работает и соединение с ресурсами Samba с любой системы и совершенно не нужен интернет для соединения, соединение, через Putty без интернет моментальное, Midnight Commander на сервере без интернет запускается моментально.

  10. Николай

    Установил на второй винчестер сервера AltLinux server с настройками были проблемы, всё-таки другая система, но необходимости в настройке DNS и DHCP не возникло, сеть работает нормально без этого, необходимости подключения к интернет нет, всё работает. Неужели в CentOS нельзя ничего сделать? Мне не нужен ни DNS, ни DHCP! Может возможно из совсем отключить в системе? Если да, то как?

  11. Николай

    Снова вернул Windows на сервер, работает всё есть доступ к любому ресурсу с любого компьютера, с любой системы, причём и с подключённым интернет и с отключенным и настройка DNS не требуется. Почему же на Linux сервере невозможно это сделать? Мне не требуется ни DNS, ни DHCP, в сети всего три компьютера и используется прямая статическая адресация. Вместо имени хоста я ввожу его IP адрес, моя сеть без доменов, используется рабочая группа.

  12. Николай

    Настроил dnsmasq на сервере. После настройки начала работвть локальная сеть, при отключенном интернете, соединение с сервером, через Samba из Windows есть, из Linux отсутствует с выдачей сообщения "Превышено время ожидания". Статус dnsmasq?
    # systemctl status dnsmasq. Вывод:
    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Пн 2019-09-09 19:45:21 +04; 35min ago
    Main PID: 2511 (dnsmasq)
    CGroup: /system.slice/dnsmasq.service
    └─2511 /usr/sbin/dnsmasq -k

    сен 09 19:45:21 nikiv64 systemd[1]: Started DNS caching server..
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: started, version 2.76 cachesize 150
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: compile time options: IPv6 GNU-getopt DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-DNSSEC loop-detect inotify
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: reading /etc/resolv2.conf
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: ignoring nameserver 127.0.0.1 - local interface
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: ignoring nameserver 192.168.8.3 - local interface
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: using nameserver 8.8.8.8#53
    сен 09 19:45:21 nikiv64 dnsmasq[2511]: read /etc/hosts - 5 addresses

    Не могу понять, почему игнорируются локальные адреса сервера?

    Тест работы dnsmasq,
    # dig tvnik.local. Вывод:
    ; <> DiG 9.9.4-RedHat-9.9.4-74.el7_6.2 <> tvnik.local
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1429
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;tvnik.local. IN A

    ;; ANSWER SECTION:
    tvnik.local. 0 IN A 192.168.8.22

    ;; Query time: 0 msec
    ;; SERVER: 192.168.8.3#53(192.168.8.3)
    ;; WHEN: Пн сен 09 20:21:39 +04 2019
    ;; MSG SIZE rcvd: 56

    Получается, что сервер DNS работает, но почему-то не видит локальные адреса.

  13. Николай

    Что за адреса в настройках 192.168.7.254, 192.168.7.250, 192.168.7.235, 192.168.7.231, какие вместо них надо поставить в моём случае. У меня адрес сервера 192.168.8.3, роутера 192.168.8.1, маска подсети 255.255.255.0, адресация в сети статическая, сетевая карта в сервере одна, если необходимо могу установить ещё одну.

    • Это dns записи, в данном случае А записи. К роутерам и сетевым настройкам отношения не имеют.

      • Николай

        Я понял так, что при адресе сетевой карты 192.168.8.3, они останутся такими же, как в статье?

        • Это DNS записи. Они не связаны вообще никак с настройками сетевой карты. Вы что вообще хотите получить на выходе? Настраиваете dns сервер, а сами не понимаете, что это такое.

          • Николай

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

            • Вам bind зачем? Я подозреваю, что вам нужен кэширующий сервер для своей локальной сети. Проще и быстрее настроить dnsmasq для этого. Bind для тех, кто держит свои DNS зоны у себя. Дома это не нужно в 99% случаев.

              • Николай

                Спасибо, думаю стоит попробовать, но с dnsmasq я ещё не разобрался. Пока использую публичные DNS серверы из интернет 77.88.8.8 и 77.88.8.1, сервер с ними работает прекрасно, однако, когда пропадёт интернет, а в сельской местности это иногда случается, возможны проблемы.

  14. Здравствуйте! У меня DNS сервер стоит за NAT, но хочу настроить его безопасно(хочу его обезопасить), читал много в Интернете там про DNSSEC идёт речь.

    Не могли бы писать статью про:
    1) Как обезопасить себя даже если твой сервак за NAT?

    2) DNSSEC как его настроить, если сервак отвечает на запросы из вне?

    • Я не очень представляю, как в данном случае NAT влияет на безопасность. За NAT сервер как раз в большей безопасности, нежели напрямую в интернете. Так что каких-то особенных действий сверх того, что делают обычно, быть не должно. Насчет DNSSEC ничего не скажу, я никогда его не настраивал. Сейчас вообще не представляю, для чего нужен свой собственный DNS сервер для обслуживания публичной зоны. Эту услугу все бесплатно предоставляют (яндекс, selectel, 1cloud и д.р.)

      • Аноним

        У нас есть DNS на windows + Mikrotik работают оба супер,

        У нас много локальных сервисов вот для них мы в основном используем DNS.

        Значить можно без DNSSEC использовать. если DNS сервер у нас находится внутри?

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

  15. Продолжаю мучить сервер... Скажите пожалуйста, как определить - нужны собственные зоны BIND или hint будет достаточно. Домена нет и не будет (судя по ценам на продукты Microsoft). Какие критерии для выбора?

    • Я лично вопрос не понял. Что такое hint?

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

        • Странный вопрос. Если вам нужны свои зоны, создавайте, если нет, то нет. Вы похоже что-то не догоняете по принципу работы, поэтому и вопросы не понятные. Если у вас простой шлюз в интернет и нужен кэширующий прокси, то свои зоны не нужны. А если вы хотите создать свою зону и в локальной сети использовать не ip, а имена из этой зоны, то создавайте ее на dns сервере и добавляйте записи.

      • - master (раньше называлась - primary). Данный DNS-сервер
        является головным для данного домена.

        - slave (раньше называлась - secondary). Такие DNS-серверы
        хранят копии доменных зон, которые скачивают и периодически обновляют
        с master-сервера.

        - hint (раньше называлась - cache). Кэширующий сервер. Не
        хранит никаких таблиц зон, а просто собирает с объявленных
        root-серверов кэш резолвенных адресов. Используется для повышения
        эффективности работы DNS-сервера.

        - stub аналог slave зоны, но в отличие от нее таблиц зоны не
        хранит, только NS-записи, и просто перенаправляет запросы на
        объявленные DNS-сервера.

        Вот....

  16. Здравствуйте.
    Подскажите будет ли bind postfix mysql asterisk работать на 1 машине? Или лучше разбить на несколько виртуальных?

    • Будет, никаких проблем. Разбивают обычно, если не хватает производительности одной машины. Ну и плюс это удобство управления, когда все по разным виртуалкам и не зависит друг от друга.

  17. Полностью проверил и исправил некоторые неточности. Настроил dns сервер по статье. Все работает.

  18. Александр

    Здравствуйте

    Не поднялся бинд по этой статье. После конфигурации /var/named/chroot/etc/named.conf
    Все файлы в каталоге /var/named/chroot/etc/ исчезают

    • Александр, попробуйте закомментировать строки в файле named.comf
      # category default { default_file; };
      # };
      и запустить службу.

    • Александр Л

      файлов в каталоге /var/named/chroot/etc/ может не быть пока не будет запущен named-chroot.service
      Причину почему он не запускается нужно искать в логах. У меня например была пропущена ";" после подсети с которой разрешены запросы. при этом при запуске так и пишет

      Jan 15 12:41:16 server1.ru bash[1972]: /etc/named.conf:19: missing ';' before '}'

      Исправляем ошибки в /etc/named.conf, стартуем named-chroot.service и файлы появляются.

      Насколько я понял - по информации из интернета и собственным тестам (покрайней мере именно для centos7 с named-chroot) неважно где именно редактировать сам конфиг. В /etc/named.conf или в /var/named/chroot/etc/named.conf.
      Автору огромное спасибо за статью.

  19. Добрый день . У меня вопрос личного характера .
    Автор Вы что весь мануал прочитали по bind , 262 стр. на english ?!
    Если не секрет сколько у Вас это заняло времени , прочитать и разобраться ?
    Просто пытаюсь понять к чему мне стремиться .
    Заранее благодарю

    • Так тут нет ничего такого, что потребовало бы перечитывать весь мануал про bind. Просто прикинул, что было бы полезно настроить и настроил :)

      • Ясно , а то у меня мания какая то читать все от корки до корки и в итоге редко когда дочитываю и то на русском ))
        Это хорошо когда знаешь что ищешь , - разумный подход брать только то что нужно .
        Спасибо за Ваш ответ

  20. Евгений

    Как сделать ,что бы машина получившая аддрес от DHCP
    автоматом добавлялась в DNS ?

  21. Работает size 5m;, version 3, надо убрать,а вообще для чего?

    • version 3 означает, что будут храниться 3 файла лога после ротации. У меня работает именно так, как настроено в примере, в конфиге. При достижении размера файла лога 5 мегабайт, он ротируется и начинается новый лог файл. Старый сохраняется. Всего хранится 3 старых версии, потом они затираются по мере появления новых файлов.

  22. параметр versions 3 size 5m; не работает, продолжает писать

  23. Валерий

    Без chroot установка и натсройка кардинально не изменятся как я понимаю?

  24. Аноним

    Не хватает этой статьи для CentOS6

    • А зачем? Скоро уже centos 8 должна выйти. Писать статьи для старых версий нет никакого смысла. Зачем делать новую установку на старой системе?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar