linux-labs

Вики / Службы и systemd

BIND9 (DNS-сервер)

Сервис Ubuntu 24.04 · BIND 9 СлужбыСетьDNS

Свой DNS — зоны, записи, проверка конфигурации, отладка резолвинга.

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

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

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

// named.conf.local
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
};
; 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) — иначе вторичные серверы и кэши не подхватят правки.

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)

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

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 — слушает ли на нужном адресе и пускает ли клиентов.

named-checkconf ; named-checkzone ZONE FILE   # проверки ПЕРЕД reload
sudo rndc reload                   # применить (или systemctl reload named)
dig @localhost name                # спросить свой сервер
# не забудь увеличить serial в SOA при правке зоны!

См. также