Есть dns сервер, смотрящий в три сети - internal, net и в интернет.1. Для зоны "zone." он является master-ом, причем для клиентов из internal сети при query запросах
он должен выдавать данные из файла zone.internal, а для всех остальных клиентов (из net и интерента)
- из файла zone.external.
Кроме того, у него есть slave dns для этой зоны "zone." в сети net, им он при трансферах должен выдавать данные из файла zone.external.
Так же он должен уведомлять слейвов об апдейтах этой зоны.
2. Он является слейвом для зоны "zone.net1.", мастер-серверы для которой находятся в сети net.
Он должен отвечать на query запросы для этой зоны только из сети internal. Кроме того он должен принимать уведомления об апдейтах
этой зоны от мастер серверов.
3. Он является слейвом для зоны "zone.net2.", мастер-серверa для которой находятся в сети net. Он должен принимать уведомления об апдейтах
этой зоны от мастер серверов. Он должен отвечать query запросы для всех сетей (internal, net и интернета).
4. Он является мастером для зоны "zone.common.". Файл для этой зоны одинаков для всех сетей, слейвов у этой зоны нет.Ниже идёт сам конфиг - выдача разных зон через view:
acl internal { 192.168.0.0/24; };
acl net { 192.168.2.1; 192.168.2.2; };
options {
allow-query { none; };
allow-transfer { none; };
};view internal {
match-clients { internal; };recursion yes;
allow-query { internal; };
allow-transfer { none; };
zone "zone." IN {
type master;
file "zone.internal";
notify yes;
};zone "zone.common." IN {
type master;
file "zone.common";
notify yes;
};zone "zone.net1." IN {
type slave;
file "zone.net1";
allow-notify { net; };
masters { 192.168.2.1; 192.168.2.2; };
};
zone "zone.net2." IN {
type slave;
file "zone.net2";
allow-notify { net; };
masters { 192.168.2.1; 192.168.2.2; };
};
};
view external {
match-clients { any; };
recursion no;allow-query { any; };
zone "zone." IN {
type master;
allow-transfer { net1; };
also-notify { 192.168.2.1; 192.168.2.2; };
file "zone.external";
notify yes;
};zone "zone.common." IN {
type master;
file "zone.common";
notify yes;
};
zone "zone.net2." IN {
type slave;
file "zone.net2";
allow-notify { net; };
masters { 192.168.2.1; 192.168.2.2; };
};
};
Теперь вопросы.
1. В view internal для зоны "zone.net1." будут ли приниматься уведомления об апдейтах этой зоны от мастер серверов из сетей,
находящихся в сети net. Cогласно документации "A client matches a view if its source IP address matches the address_match_list
of the view's match-clients clause". Т. е. уведомления об апдейтах зоны от мастер серверов - это сообщения от клиентов? Если не
будут, то что делать?2. По поводу зоны slave "zone.net2.". Эта зона прописана в обоих view. Что произойдет если зона обновится? Обновленная зона будет видна из
всех сетей или только из внешней сети (net + интеренет), а для внутренней сети до перезагрузки bind будут выдаваться данные старой (необновленной)
зоны?
по логике я бы сделал 3 view
> Обновленная зона будет видна извсех сетей или только из внешней сети (net + интеренет), а для внутренней сети до перезагрузки bind будут выдаваться данные старой (необновленной) зоны?У меня была похожая проблема. На слейве можно сделать
rndc reload zone.ru in external
rndc reload zone.ru in internal
это помоает обновить зону на слейве, но автоматом она не обновлялась.
Решилась проблема при помощи команды notify-source <ip> на мастере в конфигах views. Тонкость в том, что он высылал слейву notify не с того айпи, соответвенно она обновляла зону не в той view.