Вопрос или проблема
У меня есть 2 серверы имен: мастер и слейв. Есть 2 домена: sgnetwork.net и sg-net.eu
Я использую 2 представления: “public” и “trusted”. Public должен быть доступен для всех для публичных запросов. Trusted предназначен только для одного хоста с рекурсией. Я хочу, чтобы мастер-сервер отправлял обе зоны, из public и trusted, своим аналогам на слейв.
Мастер (51.20.16.211):
view "public" {
match-clients {"any"; };
zone "sg-net.eu" IN {
type master;
file "/var/named/masters/sg-net.eu";
allow-transfer { 159.89.238.135; };
notify yes;
};
};
view "trusted" {
match-clients { 83.142.140.100; };
recursion yes;
allow-recursion { 83.142.140.100; };
zone "sgnetwork.net" {
type master;
file "/var/named/masters/sgnetwork.net";
allow-transfer { 159.89.238.135; };
notify yes;
};
};
Слейв (159.89.238.135):
view "public" {
match-clients { any; };
zone "sg-net.eu" {
type slave;
file "/var/cache/bind/slaves/sg-net.eu";
masters { 51.20.16.211; };
};
include "/etc/bind/named.conf.default-zones";
};
view "trusted" {
match-clients { 83.142.140.100; 51.20.16.211; };
recursion yes;
allow-recursion { 83.142.140.100; };
zone "sgnetwork.net" {
type slave;
file "/var/cache/bind/slaves/sgnetwork.net";
masters { 51.20.16.211; };
};
};
Зона sg-net.eu передается правильно, но sgnetwork.net – нет. Я получаю такое сообщение на слейве:
Sep 24 15:33:54 vps named[910157]: client @0x7f4454230278 51.20.16.211#49368: view public: received notify for zone 'sgnetwork.net': not authoritative
Вопрос: Почему это считается представлением public? Почему это не авторитетно?
Ответ или решение
Проблема, с которой вы сталкиваетесь, связана с тем, как настроены ваши представления (views) в DNS-сервере (BIND). Сообщение об ошибке, которое вы видите на слейв-сервере, указывает на то, что мастер-сервер не считает себя авторитетным для зоны sgnetwork.net
при передаче обновлений в представление public
.
Ваша конфигурация на мастере настроена так, что зона sgnetwork.net
находится в представлении trusted
. Это означает, что при уведомлениях (notify) и передаче зон (transfer) все необходимые сообщения должны отправляться в контексте этого представления. Однако, при попытке уведомления для зоны sgnetwork.net
, мастер проверяет, какой клиент отправил запрос. Поскольку запрос приходит от слейв-сервера, который обрабатывает представление public
, именно это представление и используется для проверки авторитетности.
Решение проблемы
-
Изменение настройки передачи: Убедитесь, что настройки передачи зон в представлении
public
и передача зон в локальную область (зонаtrusted
) совпадают:На мастере, в представлении
trusted
, добавьтеallow-transfer
для обоих представлений, чтобы разрешить передачу. Ваши настройки могут выглядеть следующим образом:view "public" { match-clients { "any"; }; zone "sg-net.eu" IN { type master; file "/var/named/masters/sg-net.eu"; allow-transfer { 159.89.238.135; }; notify yes; }; }; view "trusted" { match-clients { 83.142.140.100; }; recursion yes; allow-recursion { 83.142.140.100; }; zone "sgnetwork.net" { type master; file "/var/named/masters/sgnetwork.net"; allow-transfer { 159.89.238.135; }; notify yes; }; };
-
Убедитесь, что слейв-сервер правильно настроен для обработки представлений: На слейв-сервере нужно убедиться, что он может обращаться к мастеру для передачи зоны
sgnetwork.net
в контексте представленияtrusted
. Ваша настройка, похоже, уже правильная:view "trusted" { match-clients { 83.142.140.100; 51.20.16.211; }; recursion yes; allow-recursion { 83.142.140.100; }; zone "sgnetwork.net" { type slave; file "/var/cache/bind/slaves/sgnetwork.net"; masters { 51.20.16.211; }; }; };
-
Перезапустите оба сервера: После внесения изменений обязательно перезапустите BIND на обоих серверах, чтобы настройки вступили в силу.
Дополнительные рекомендации
- Проверьте журналы ошибок на мастере и слейве для дополнительной информации о проблемах с передачей.
- Убедитесь, что у вас нет проблем с сетью между мастером и слейвом, которые могут препятствовать передаче данных.
- Если у вас есть межсетевые экраны или другие системы безопасности, убедитесь, что они не блокируют порты, используемые для передачи зон (обычно это UDP/TCP 53).
Следуя этим рекомендациям, вы должны решить проблему с передачей зон между вашими DNS-серверами.