Вики / Службы и systemd
BIND9 (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 при правке зоны!
См. также
- journalctl — Логи и аудит
- Файрвол (nftables / ufw) — Сеть
- DNS и разрешение имён — Сеть