DNS-сервер BIND: базовая настройка [207.1]

Рейтинг: 73% · 17 голосов
Курс LPIC-2 (201-450 и 202-450): емкостное планирование, ядро, хранилище и RAID/LVM, продвинутая сеть, DNS/BIND, Apache/Nginx, Samba/NFS, DHCP/LDAP, почта, безопасность и VPN.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

DNS-сервер BIND: базовая настройка [207.1]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-2 и уровень инженера
  2. Измерение и устранение проблем с ресурсами [200.1]
  3. Прогнозирование потребности в ресурсах
  4. Компоненты ядра Linux [201.1]
  5. Сборка ядра из исходников [201.2]
  6. Управление модулями ядра в рантайме [201.3]
  7. Кастомизация запуска системы [202.1]
  8. Восстановление системы [202.2]
  9. Альтернативные загрузчики [202.3]
  10. Работа с файловой системой Linux [203.1]
  11. Обслуживание файловых систем [203.2]
  12. Создание и настройка опций ФС [203.3]
  13. Программный RAID [204.1]
  14. Тюнинг доступа к устройствам хранения [204.2]
  15. Менеджер логических томов LVM [204.3]
  16. Базовая конфигурация сети [205.1]
  17. Продвинутая конфигурация сети [205.2]
  18. Диагностика сетевых проблем [205.3]
  19. Сборка и установка программ из исходников [206.1]
  20. Резервное копирование [206.2]
  21. Оповещение пользователей о событиях
  22. DNS-сервер BIND: базовая настройка [207.1] (вы здесь)
  23. Зоны DNS: создание и сопровождение [207.2]
  24. Безопасность DNS-сервера [207.3]
  25. Веб-сервер Apache: базовая настройка [208.1]
  26. Apache и HTTPS [208.2]
  27. Кэширующий прокси Squid [208.3]
  28. Веб-сервер и обратный прокси Nginx [208.4]
  29. Файловый сервер Samba [209.1]
  30. Файловый сервер NFS [209.2]
  31. DHCP-сервер [210.1]
  32. Аутентификация PAM и SSSD [210.2]
  33. Использование LDAP-клиента
  34. Сервер OpenLDAP [210.4]
  35. Почтовый сервер Postfix [211.1]
  36. Управление доставкой почты и Sieve [211.2]
  37. Доступ к почтовым ящикам: Dovecot [211.3]
  38. Linux как маршрутизатор и фильтр [212.1]
  39. FTP-серверы [212.2]
  40. SSH углублённо [212.3]
  41. Безопасность, IDS и VPN [212.4 + 212.5]
Урок 21. DNS-сервер BIND: базовая настройка

DNS - это распределённая база, которая переводит имена в адреса и обратно. Без неё пользователи и сервисы говорили бы IP-адресами, а не доменами. В этом уроке мы разберём, чем авторитетный сервер отличается от рекурсивного, как устроен named.conf у BIND 9, как поднять кэширующий резолвер, проверить конфиг до запуска и управлять демоном через rndc. Это фундамент для всего блока 207 на экзамене 202-450.

Изображение

Как это работает

DNS-пространство - это дерево зон, делегированных от корня вниз. Когда клиент спрашивает адрес имени, запрос проходит по цепочке: корневые серверы, серверы TLD, серверы домена. Сервер бывает в двух принципиально разных ролях, и путать их - самая частая ошибка новичка.

Авторитетный сервер хранит зону и отвечает за неё окончательно. Его ответ помечен флагом AA (Authoritative Answer): он не гадает, он владелец данных. Рекурсивный (он же кэширующий) сервер сам ничего не хранит - он бегает по дереву от имени клиента, собирает ответ и кладёт его в кэш на время TTL. Один named может совмещать обе роли, но в 2026 это считается плохой практикой: авторитетный сервер в интернете не должен быть открыто рекурсивным, иначе он становится усилителем DDoS-атак.

Форвардер - это промежуточный вариант рекурсии. Вместо того чтобы самому ходить от корня, ваш сервер пересылает запрос вышестоящему резолверу (например, провайдера или 1.1.1.1) и просто ждёт готовый ответ. Это экономит трафик и ускоряет холодный кэш в небольших сетях.

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

Конфигурация BIND 9 живёт в named.conf. Файл состоит из секций-стейтментов: options задаёт глобальное поведение (каталоги, listen-on, recursion, forwarders), zone описывает каждую зону и её файл, а logging - журналирование. Управляющий канал rndc общается с демоном по TCP-порту 953, аутентификация - по общему ключу из rndc.key.

Команды и примеры

Пакеты и пути различаются по семействам.

Код: Выделить всё

# Debian 13 / Ubuntu 24.04
apt install bind9 bind9-utils bind9-dnsutils
# конфиг: /etc/bind/named.conf (+ named.conf.options, named.conf.local)
# юнит: named.service (алиас bind9.service)

# RHEL 10 / Fedora 41+
dnf install bind bind-utils
# конфиг: /etc/named.conf, зоны в /var/named/
# юнит: named.service
Минимальный кэширующий резолвер. В options включаем рекурсию только для своей сети.

Код: Выделить всё

options {
    directory "/var/named";        // в Debian: "/var/cache/bind"
    listen-on port 53 { 127.0.0.1; 192.168.10.1; };
    allow-query { localhost; 192.168.10.0/24; };
    recursion yes;
    allow-recursion { localhost; 192.168.10.0/24; };
    dnssec-validation auto;
};
Вариант с форвардером - не ходим от корня, а спрашиваем вышестоящий резолвер.

Код: Выделить всё

options {
    forwarders { 1.1.1.1; 8.8.8.8; };
    forward only;     // only = только форвардер; first = форвардер, потом сам
    recursion yes;
};
Объявление авторитетной зоны (мастер). Тип master в старых сборках, primary - в новых.

Код: Выделить всё

zone "example.lan" IN {
    type primary;                  // синоним master
    file "db.example.lan";
    allow-transfer { 192.168.10.2; };  // адрес вторичного сервера
};
Проверка ДО перезапуска - обязательный шаг. named-checkconf молча завершается с кодом 0, если ошибок нет, иначе печатает строку и причину. Файлы зон проверяет named-checkzone.

Код: Выделить всё

named-checkconf
named-checkconf -z          # дополнительно загрузить и проверить все зоны
named-checkzone example.lan /var/named/db.example.lan
Запуск и управление через systemd, а оперативно - через rndc.

Код: Выделить всё

systemctl enable --now named

rndc status                 # сводка: число зон, рекурсия, аптайм
rndc reload                 # перечитать конфиг и зоны
rndc reload example.lan     # перезагрузить одну зону
rndc flush                  # очистить весь кэш резолвера
rndc querylog on            # включить лог запросов на лету
Если rndc.key отсутствует, сгенерируйте его командой rndc-confgen -a. Проверяем работу резолвера с самого сервера.

Код: Выделить всё

dig @127.0.0.1 example.lan SOA +norecurse
dig @127.0.0.1 cyberlake.ru A
В ответе смотрите на флаги в строке flags: aa означает авторитетный ответ, ra - рекурсия доступна, status: NOERROR - всё в порядке.

Частые грабли
  • Открытый рекурсивный резолвер в интернет. Без allow-recursion ваш сервер используют для DNS-амплификации. Рекурсию разрешайте только своим подсетям.
  • Путаница ролей: ждёте флаг aa от рекурсивного сервера, который зону не держит. AA ставит только авторитетный.
  • Забыли поднять serial в SOA после правки зоны - вторичные серверы не заберут обновление, AXFR не сработает.
  • named-checkconf прошёл, а named не стартует. checkconf не всегда грузит зоны; запускайте с ключом -z и читайте journalctl -u named.
  • Права и SELinux на RHEL: файлы зон вне /var/named или с чужим контекстом named_zone_t - демон не прочитает. Проверяйте ls -Z и restorecon.
  • TTL и кэш: после смены записи старый ответ живёт у клиентов до конца TTL; rndc flush чистит только ваш кэш, не чужие.
  • dnssec-validation auto без доступа к корню или с битыми часами даёт SERVFAIL - синхронизируйте время через chrony.
Мини-лаба
  • Установите BIND из пакетов своего дистрибутива и найдите главный конфиг (Debian - /etc/bind, RHEL - /etc/named.conf).
  • Настройте чистый кэширующий резолвер: recursion yes только для localhost и своей подсети, listen-on на 127.0.0.1.
  • Проверьте конфиг командой named-checkconf -z, исправьте ошибки, если есть.
  • Запустите named через systemctl enable --now named и убедитесь в работе через rndc status.
  • Сделайте dig @127.0.0.1 на любой внешний домен дважды и сравните поле Query time - второй ответ из кэша должен быть быстрее.
  • Включите rndc querylog on, повторите запрос и найдите его в journalctl -u named.
  • Очистите кэш через rndc flush и снова замерьте Query time - он опять вырастет.
Контрольные вопросы
  • Чем авторитетный ответ отличается от рекурсивного и какой флаг в выводе dig это показывает?
  • Какие директивы в секции options ограничивают рекурсию только доверенными сетями?
  • В чём разница между forward only и forward first?
  • Что проверяет named-checkconf, а что named-checkzone, и почему первый может пройти при нерабочих зонах?
  • По какому порту и как аутентифицируется rndc при связи с named?
  • Почему открытый рекурсивный резолвер опасен и как это связано с DDoS?
👍7 ❤️3 🔥 😄 🤔
Аватара пользователя
natenis
Сообщения: 1
Зарегистрирован: 22 май 2026, 08:45

Re: DNS-сервер BIND: базовая настройка [207.1]

Сообщение natenis »

А обязательно держать рекурсию и авторитет на разных демонах? У меня на VPS один named и зона своя, и резолвер для локалки. Понял, что лучше views или вообще два инстанса, чтобы наружу рекурсию не светить.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
deno_coder
Сообщения: 1
Зарегистрирован: 12 май 2026, 04:14

Re: DNS-сервер BIND: базовая настройка [207.1]

Сообщение deno_coder »

Поднял кэширующий, dig второй раз реально быстрее. Но после rndc flush заметил что не весь кэш чистится мгновенно, часть запросов всё равно ходит наружу - это нормально?
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Оповещение пользователей о событиях
Следующая глава →
Зоны DNS: создание и сопровождение [207.2]

Все главы курса «LPIC-2: инженер Linux (201 + 202)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-2: инженер Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость