BIND мастер не реплицирует на слейвы

Вопрос или проблема

У меня есть главный сервер BIND, который обслуживает несколько зон. Пример записи в файле named.conf:

zone "example.com" {
        type master;
        file "example.com.zone";
        allow-update { 10.202.215.10; 10.202.215.11; 10.201.215.14; };
};

Существует три ведомых сервера. Пример конфигурации, которая есть на всех трех:

zone "example.com" {
        type slave;
        file "slaves/example.com.zone";
        masters { 10.201.215.11; 10.202.215.10; 10.202.215.11; };
};

ИЗМЕНЕНИЕ

IP-адреса и имена хостов главного и ведомых серверов

Master: 10.201.215.11
Slave1: 10.201.215.14
Slave2: 10.202.215.10
Slave3: 10.202.215.11

КОНЕЦ ИЗМЕНЕНИЯ

Для файла зоны в примере я увеличил серийный номер на главном сервере, а затем запустил rndc reload на всех серверах (главном и трех ведомых). Временной штамп на файлах зоны на каждом ведомом сервере обновляется, однако серийный номер на ведомом сервере не обновляется.

Однако ведомые серверы обновляются:

Oct 14 12:14:44 dns-slave01 named[12434]: transfer of 'example.com/IN' from m 10.201.215.11#53: connected using 10.202.215.10#44420

Почему серийный номер не обновляется?

ИЗМЕНЕНИЕ

На основании комментария yoonix я удалил все, кроме одного сервера, который я знаю как главный для зоны:

zone "example.com" {
        type slave;
        file "slaves/example.com.zone";
        masters { 10.201.215.11; };
};

Я также явно установил notify yes, несмотря на то, что это включено по умолчанию.

Кроме того, я убрал опцию allow-update на главном сервере, чтобы убедиться, что все хосты могут динамически обновляться.

Однако репликация все еще не происходит.

Тем не менее, я вижу, что главный сервер отправляет уведомления NOTIFY:

Oct 17 00:48:00 dns-master01 named[5608]: zone example.com/IN: sending notifies (serial 2009091903)
Oct 17 00:48:13 dns-master01 named[5608]: zone example.com/IN: sending notifies (serial 2009091904)

Я проверил с помощью telnet, что я могу подключиться к ведомым серверам с главного сервера через порт 53.

ИЗМЕНЕНИЕ 2

Одно, что я сделал, – это убедиться, что у всех ведомых серверов одинаковая конфигурация, а также исправить систему логирования, которая была неправильно настроена. Примерно через три часа после изменения файла зоны передача произошла. Я все еще не могу понять, почему это не происходит сразу.

Ниже приведен файл named.conf главного сервера. Есть несколько других записей зон, но они все идентичны, за исключением домена.

// generated by named-bootconf.pl
// 
// конфигурация кэшированного DNS-сервера
acl trusted_nets {
 10.201.96.0/20;
 10.202.96.0/20;
 10.201.215.0/24;
 10.202.215.0/24;
 12.130.200.0/24;
 174.47.15.0/24;
 199.108.193.0/24;
 199.108.195.0/24;
 72.165.204.0/24;
};
// 
options { 
        directory "/var/named";
        allow-recursion { trusted_nets; };
        notify yes;
        allow-transfer { 10.202.215.10; 10.202.215.11; 10.201.215.14; 199.108.193.20; 209.67.192.20; 10.201.215.10; };
};
logging {
    channel dns_log {
        file "/var/log/named.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
    };
    category default {
        dns_log;
    };
};
controls { 
    inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." { 
    type hint;
    file "named.ca";
};
zone "localhost" { 
    allow-update { none; };
    type master;
    file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" { 
    allow-update { none; };
    type master;
    file "named.local";
};
zone "example.com" { 
    type master;
    file "example.com.zone";
    allow-update { 10.202.215.10; 10.202.215.11; 10.201.215.14; };
};
include  "/etc/rndc.key";

Каждый из IP-адресов в настройке allow-update является одним из ведомых серверов.

Пример ведомого сервера. Снова, есть несколько других зон, но они идентичны, кроме домена.

// generated by named-bootconf.pl
// 
// конфигурация кэшированного DNS-сервера
acl trusted_nets {
    10.201.96.0/20;
    10.202.96.0/20;
    10.202.92.0/20;
    10.201.215.0/24;
    10.202.215.0/24;
    12.130.200.0/24;
    174.47.15.0/24;
    199.108.193.0/24;
    199.108.195.0/24;
    72.165.204.0/24;
};
// 
options { 
    directory "/var/named";
    allow-recursion { trusted_nets; };
    allow-transfer { 10.202.215.10; 10.202.215.11; 10.201.215.11; 199.108.193.20; 209.67.192.20; };
};
logging {
    channel mtg_log {
        file "/var/log/named.log" versions 3 size 5m;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
    };
    category default {
        mtg_log;
    };
};
controls { 
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { rndckey; };
};
zone "." IN { 
    type hint;
    file "named.ca";
};
zone "localhost" { 
    allow-update { none; };
    type master;
    file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" { 
    allow-update { none; };
    type master;
    file "named.local";
};
zone "example.com" { 
    type slave;
    file "slaves/example.com.zone";
    masters { 10.201.215.11; }; 
};
include  "/etc/rndc.key";

За исключением опции type, они идентичны. Я не знаю, должны ли они быть настроены таким образом.

ИЗМЕНЕНИЕ 3

Уведомление NOTIFY, похоже, отправляется только когда я перезапускаю named. Я пробовал rndc reload и service named reload, но ничего не произошло. Только service named restart отправило объявление.

С вашей конфигурацией у вас есть несколько серверов-мастеров. Ведомые серверы могут запрашивать любые из мастеров для получения обновлений. Убедитесь, что все мастера обновлены, прежде чем пытаться обновить ведомые серверы. Я подозреваю, что у вас должен быть только один IPv4 и/или один IPv6 адрес в списке.

Вам, вероятно, следует добавить также список also-notify, содержащий IP-адреса ваших ведомых серверов. Обычно это должны быть единственные хосты, которые могут выполнять передачу зоны. Вам также стоит рассмотреть возможность включения уведомления для вашего главного сервера.

Я бы предложил вам удалить файлы зон на ведомых серверах и выполнить новую передачу зоны с главного сервера.

Ответ или решение

Решение проблемы отсутствия репликации между мастер и слейв BIND серверами

Если у вас возникли проблемы с репликацией зон между мастер и слейв серверами BIND, важно провести комплексный анализ конфигурации и настроек. Давайте разберемся с вашим случаем и выявим возможные причины, а также пути их устранения.

1. Проверка конфигурации мастер-сервера

На мастер-сервере у вас настроена зона "example.com" следующим образом:

zone "example.com" {
        type master;
        file "example.com.zone";
        allow-update { 10.202.215.10; 10.202.215.11; 10.201.215.14; };
};
  • Проверка allow-transfer: Убедитесь, что в настройках options вашего мастер-сервера указаны IP-адреса всех слейвов в директиве allow-transfer. В вашем случае это:
allow-transfer { 10.202.215.10; 10.202.215.11; 10.201.215.14; };

2. Проверка конфигурации слейв-серверов

Ваши слейв-серверы настроены следующим образом:

zone "example.com" {
        type slave;
        file "slaves/example.com.zone";
        masters { 10.201.215.11; };
};
  • Проверка IP-адресов мастера: Убедитесь, что IP-адрес, указанный в masters, соответствует IP вашего мастер-сервера (10.201.215.11).

3. Проблемы с уведомлениями и передачей зон

Вы указывали, что уведомления (NOTIFY) отправляются только после перезагрузки мастер-сервера. Это может быть связано с настройками кэширования. Проверьте следующие моменты:

  • Настройка notify: Убедитесь, что на мастер-сервере включены уведомления:
notify yes;
  • Директива also-notify: Рассмотрите возможность добавления директивы also-notify, чтобы явно указать IP-адреса слейв-серверов, уведомляемых о изменениях:
also-notify { 10.201.215.14; 10.202.215.10; };

4. Проверка журналов и вывода команд

Обратите внимание на следующие действия:

  • Проверьте логи на мастер и слейв серверах (/var/log/named.log) на предмет ошибок или предупреждений.
  • Используйте команду rndc refresh на слейв-серверах для ручного обновления и проверьте, обновится ли серийный номер.

5. Удаление старых файлов зон на слейв-серверах

Если старые файлы зон всё ещё присутствуют на слейв-серверах, это может препятствовать корректной репликации. Удалите файлы зон и выполните полную передачу от мастера:

# Удалите старые файлы
rm /var/named/slaves/example.com.zone
# Обновите слейв
rndc refresh

6. Настройки безопасности и сети

Убедитесь:

  • Файрволлы: Проверьте, что правила брандмауэра на всех серверах позволяют передачу данных через порт 53.
  • iptables или другие системы контроля доступа: Конфиги этих систем также могут блокировать необходимый трафик.

Заключение

Следуя приведенным рекомендациям, вы сможете выявить и устранить недочеты в настройках репликации между BIND мастер и слейв серверами. Важно внимательно проверять логи и конфигурации, чтобы обеспечить бесперебойную работу DNS. Если после всех проверок проблема не будет решена, рекомендуется обратиться к официальной документации BIND или на специализированные форумы для получения более детальной помощи.

Оцените материал
Добавить комментарий

Капча загружается...