Вторичная (slave) зона в BIND: настройка репликации DNS
Вторичная (slave) зона BIND хранит копию зоны с первичного (master) сервера и автоматически обновляет её по зонной передаче (AXFR/IXFR). Это даёт отказоустойчивость DNS и распределение нагрузки. Инструкция подходит для CentOS/Rocky, Ubuntu и других дистрибутивов Linux.
На сервере Master
Разрешаем передачу зоны на вторичный сервер. Открываем конфиг зоны.
CentOS:
vi /etc/named.conf
Ubuntu:
vi /etc/bind/named.conf.local
Добавляем allow-transfer:
zone "imaxis.ru" {
type master;
file "master/imaxis.ru";
allow-transfer { 192.168.0.15; };
};
где imaxis.ru — домен, 192.168.0.15 — адрес вторичного сервера, которому разрешена передача.
Применяем настройки:
systemctl reload named
# или
systemctl reload bind
# или
service bind9 reload
При использовании iptables открываем TCP/53 для передачи зоны:
iptables -I INPUT 1 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
На сервере Slave
Открываем конфиг.
CentOS:
vi /etc/named.conf
Ubuntu:
vi /etc/bind/named.conf.local
Добавляем:
zone "imaxis.ru" {
type slave;
file "slaves/imaxis.ru";
masters { 192.168.0.10; };
};
где:
imaxis.ru— зона (домен);type slave— вторичная зона;slaves/imaxis.ru— файл записей. Путь относительный — значит, каталогslavesдолжен находиться в рабочем каталоге BIND (опцияdirectory). Можно указать абсолютный путь, например/etc/bind/slaves/imaxis.ru;192.168.0.10— адрес первичного сервера.
Создаём каталог для вторичных зон.
CentOS:
mkdir /var/named/slaves
Ubuntu:
mkdir /var/cache/bind/slaves
Указанные каталоги применяются по умолчанию; сверяйтесь с опцией directory.
Перезапускаем и перечитываем зоны:
systemctl reload named
rndc reload
Проверяем, что файл зоны появился:
CentOS:
ls /var/named/slaves/
Ubuntu:
ls /var/cache/bind/slaves
В списке должен быть файл imaxis.ru.
Проверяем работу вторичного сервера:
nslookup imaxis.ru 192.168.0.15
где imaxis.ru — созданный домен, 192.168.0.15 — адрес резервного DNS-сервера.
Тонкости и подводные камни
allow-transferобязателен — без него master откажет в передаче (Transfer failed).- Права на каталог
slaves— пользовательbind/namedдолжен иметь право записи, иначе файл зоны не создастся. directoryи относительные пути — путьslaves/imaxis.ruсчитается от рабочего каталога BIND.- SOA и NS — во вторичной зоне их не задают; они приходят с master. На master в NS должны быть указаны оба сервера.
- TCP/53 — зонная передача идёт по TCP, не забудьте открыть порт в брандмауэре.
- NOTIFY — master уведомляет slave об изменениях; при проблемах проверьте доступность по TCP/53 в обе стороны.
rndc reloadvssystemctl reload— первый перечитывает зоны без перезапуска процесса; используйте его для проверки.
Шпаргалка
# MASTER
vi /etc/bind/named.conf.local
# zone "imaxis.ru" { type master; file "master/imaxis.ru"; allow-transfer { 192.168.0.15; }; };
systemctl reload bind9
# SLAVE
vi /etc/bind/named.conf.local
# zone "imaxis.ru" { type slave; file "slaves/imaxis.ru"; masters { 192.168.0.10; }; };
mkdir -p /var/cache/bind/slaves
systemctl reload bind9
rndc reload
ls /var/cache/bind/slaves
nslookup imaxis.ru 192.168.0.15
Проверено на: Ubuntu 22.04/24.04/26.04, CentOS/Rocky + BIND 9.18+.
Дата: Сентябрь 2026.