Вопрос или проблема
Я не могу заставить BIND-слейв принимать уведомления от мастера.
Лог мастера говорит, что уведомления отправляются:
05-Nov-2024 11:56:42.655 general: info: zone example_zone.eu/IN/internal-view: loaded serial 2015010160
05-Nov-2024 11:56:42.655 general: info: zone example_zone.eu/IN/external-view: loaded serial 2015011450
05-Nov-2024 11:56:42.659 notify: info: zone example_zone.eu/IN/external-view: sending notifies (serial 2015011450)
1.2.3.4 – IP-адрес BIND-мастера
6.7.8.9 – IP-адрес BIND-слейва
Файл конфигурации мастера named.conf.options
:
server 0.0.0.0/0 {
edns no;
};
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
};
dnssec-validation no;
dnssec-enable no;
notify yes;
auth-nxdomain no; # conform to RFC1035
version "12345";
listen-on-v6 { any; };
listen-on { any; };
recursion no;
allow-query { any; };
allow-notify { internal-acl; 6.7.8.9; };
allow-query-cache { internal-acl; };
allow-transfer { 127.0.0.1; 6.7.8.9; };
};
acl internal-acl {
127.0.0.0/8;
10.0.0.0/8;
};
// ВНУТРЕННИЙ
view "internal-view" {
match-clients {
127.0.0.0/8;
!10.6.1.251;
10.0.0.0/8;
};
// internal-acl; };
recursion yes;
include "/etc/bind/named.conf.default-zones";
zone "expo" {
type master;
file "/etc/bind/forward/expo.dns";
allow-update { none; };
allow-query {
!10.6.1.251;
127.0.0.0/8;
10.0.0.0/8;
};
/*allow-query { any; };*/
};
zone "example_zone.eu" {
type master;
file "/etc/bind/forward/internal.example_zone.eu.dns";
allow-update { none; };
allow-query { any; };
};
zone "10.in-addr.arpa" {
type master;
notify no;
allow-query {
127.0.0.0/8;
10.0.0.0/8;
};
allow-transfer { 127.0.0.1; };
file "/etc/bind/reverse/10";
};
};
// ВНЕШНИЙ
view "external-view" {
match-clients { any; };
recursion no;
//zone "." { type hint; file "/etc/bind/root.hints"; };
include "/etc/bind/named.conf.default-zones";
zone "16.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/bind/reverse/empty"; };
zone "example_zone.eu"
{
type master;
file "/etc/bind/forward/example_zone.eu.dns";
allow-transfer { 6.7.8.9; };
};
};
Файл конфигурации слейва named.conf.options:
logging {
channel log_general {
file "/var/log/named/named_general.log";
print-time yes;
print-category yes;
print-severity yes;
severity debug;
};
channel log_xfer {
file "/var/log/named/xfer.log";
print-time yes;
print-category yes;
print-severity yes;
severity debug;
};
category lame-servers { null; };
category xfer-out { log_xfer; };
category xfer-in { log_xfer; };
category general { log_general; };
category client { log_general; };
category config { log_general; };
category update { log_general; };
category update-security { log_general; };
category default { log_general; };
};
zone "example_zone.eu"
{
type slave;
masters { 1.2.3.4; };
file "example_zone.eu.dns";
allow-transfer { 1.2.3.4; };
allow-notify { 1.2.3.4; };
};
Лог слейва пуст, там ничего не происходит.
Как заставить слейв принимать уведомления?
Версия BIND9 на мастере и слейве:
ii bind9 1:9.11.5.P4+dfsg-5.1+deb10u11 amd64 Internet Domain Name Server
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что BIND-система (Berkeley Internet Name Domain) на вашем ведомом сервере (slave) не принимает уведомления (notify) от основного сервера (master). Давайте рассмотрим возможные причины данной проблемы и подходы к ее решению.
1. Проверьте конфигурацию уведомлений на сервере master
Судя по приведенным вами журналам, основной сервер отправляет уведомления. Одна из ключевых строк:
notify: info: zone example_zone.eu/IN/external-view: sending notifies (serial 2015011450)
Это подтверждает, что уведомления действительно отправляются. Убедитесь, что следующие параметры в named.conf.options
на master
настроены правильно:
notify yes;
allow-notify { internal-acl; 6.7.8.9; };
Здесь видно, что разрешения настроены правильно, и уведомления могут отправляться на IP-адрес ведомого сервера.
2. Проверьте конфигурацию на сервере slave
На ведомом сервере вы в блоке zone
указали:
allow-notify { 1.2.3.4; };
Это ограничивает получение уведомлений только для основного сервера по IP-адресу 1.2.3.4. Убедитесь, что это значение соответствует фактическому IP-адресу вашего основного сервера. Возможно, вы захотите изменить его на:
allow-notify { 1.2.3.4; }; // Основной сервер
Если IP-адрес изменился или есть особые настройки сети (например, NAT), вы должны обновить эту область.
3. Сетевая доступность
Важно проверить сетевую доступность между master
и slave
. Это можно сделать с помощью команд ping
и traceroute
:
ping 1.2.3.4
traceroute 1.2.3.4
Если slave
не может связаться с master
, необходимо убедиться в открытых портов (например, 53/UDP и TCP), а также в разрешениях на брандмауэре. Если вы используете iptables, вам нужно убедиться, что правила позволяют трафик на UDP и TCP порту 53.
4. Журналирование
Согласно вашему описанию, журнал slave
пуст. Чтобы включить журналирование, добавьте следующие строчки в файл конфигурации named.conf.options
на slave
:
logging {
channel default_log {
file "/var/log/named/named.log";
severity info;
print-time yes;
};
category default { default_log; };
category notify { default_log; };
};
После внесения изменений перезапустите службу BIND на slave
и проверьте журналы на наличие ошибок или сообщений.
5. Синхронизация времени
Проверьте, синхронизированы ли часы на обоих серверах. Расхождение во времени может стать причиной проблемы, особенно если используется механизм аутентификации, основанный на времени (NTP).
6. Проверка версий BIND
Вы используете одну и ту же версию BIND (9.11.5.P4
), что позитивно сказывается на совместимости настройки уведомлений. Убедитесь, что вы используете обновленные версии всех зависимостей.
Заключение
Ваша проблема может быть решена путем тщательной проверки настройки конфигурации, сетевой доступности и журналов. Систематически проверяя каждый из предложенных шагов, вы сможете определить и устранить причину, по которой ваш ведомый сервер не принимает уведомления от основного. Если у вас останутся вопросы, не стесняйтесь обращаться за дальнейшей помощью.