С чего начать Первые шаги трек · 15 ступеней
Linux Labs

BIND9 — DNS-сервер

3 мин Ubuntu 24.04 · BIND 9

Собственный DNS-сервер BIND: зоны и записи, проверка конфигурации, отладка разрешения имён.

Шпаргалка

4 команды Версия для печати
  • named-checkconf проверить синтаксис named.conf
  • named-checkzone example.com /etc/bind/db.example.com проверить зону (ПЕРЕД reload)
  • sudo rndc reload применить (или systemctl reload named)
  • dig @localhost www.example.com спросить свой сервер
  • не забудь увеличить serial в SOA при правке зоны!

Обзор

BIND9 — самый распространённый DNS-сервер. Поднимают для своей зоны (авторитетный сервер) или как кэширующий резолвер. Служба named (пакет bind9); клиентскую сторону смотри в dns-resolv.

bash
systemctl status named            # (служба называется named)
ss -tulnp | grep :53              # слушает ли DNS (53 TCP/UDP)

Конфигурация

Конфиг — /etc/bind/named.conf*; файлы зон — обычно /etc/bind/db.*.

text
// named.conf.local
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};
text
; db.example.com (упрощённо)
$TTL 3600
@   IN SOA ns1.example.com. admin.example.com. ( 2026062501 3600 600 86400 600 )
@   IN NS  ns1.example.com.
@   IN A   10.0.0.1
www IN A   10.0.0.1

При каждом изменении зоны увеличивай serial (число в SOA) — иначе вторичные серверы и кэши не подхватят правки.

Рецепты

1

Проверка

bash
named-checkconf                    # проверить синтаксис named.conf
named-checkzone example.com /etc/bind/db.example.com   # проверить зону
sudo systemctl reload named        # применить (или sudo rndc reload)
dig @localhost www.example.com     # спросить свой сервер (см. dns-resolv)

Неполадки

4

Сервер не отвечает на запросы

named-checkconf (нет ли ошибок), служба активна, слушает 53 (ss -tulnp), порт открыт в firewall (53/udp и 53/tcp). Проверь, что dig @IP доходит.

Изменил зону — старые данные

Не увеличил serial в SOA или не перезагрузил (rndc reload). Плюс TTL: пока не истёк, кэши держат старое.

SERVFAIL

Ошибка в зоне (named-checkzone), битый делегат или DNSSEC. Смотри journalctl -u named.

Резолвит только локально

Проверь allow-query / listen-on в named.conf.options — слушает ли на нужном адресе и пускает ли клиентов.

См. также

  • dns-resolv — Как имя превращается в IP — resolv.conf, systemd-resolved, /etc/hosts, dig.
  • firewall — Фильтрация трафика — простой ufw и низкоуровневый nftables.
  • journalctl — Чтение журнала systemd (journald) — фильтры по службе, времени, приоритету.
Загрузка…