При использовании инструмента views в настройках dns-серверов настройки slave dns-сервера необзодимо производить с особенной тщательностью. Ведь если мы попросту сконфигурируем такой же набор views, как и на мастер-сервере, вся система будет разрушена при первом же трансфере файлов доменных зон с мастер-днс-мервера - ведь мастер сервер определит зону, к которой принадлежит slave-сервер по его айпи-адресу и выдаст ему соответствующий файл зоны, причем это будет один и тот же файл на все view.
Решением проблемы является использовании на вторичном днс-сервере множественных (по количеству различных view на мастер-сервере) айпи-адресов и внесение этих этих ip-адресов по одному в различные view мастер-сервера. Далле мы настраиваем вторичный днс-сервер так, чтобы для каждого из view при запросе трансфера файла зоны вторичный днс-снрвер использовал нужный ip-адрес.
Итак, поехали!Сначала добавляем новые ip-адреса на сетевую карту (192.168.0.238 - этот уже был, потребуется еще два). Редактируем файл /etc/network/interfaces:
auto eth0
auto eth0:1
auto eth0:2
iface eth0 inet static
address 192.168.0.238
netmask ...
...
iface eth0:1 inet static
addres 192.168.0.248
netmask ...
...
iface eth0:1 inet static
addres 192.168.0.249
netmask ...
...
Далее смотрим и редактируем настройки файла /etc/bind/named.conf на мастер-сервере:
acl "dns_slaves" { 192.168.0.238; // этот ip-адрес slave dns-сервера будет использован в view "local_lan_hosts"
192.168.0.248; // этот ip-адрес slave dns-сервера будет использован в view "petersburg_peers"
192.168.0.249; // этот ip-адрес slave dns-сервера будет использован в view "external"
};
// далее идут определения списков ip-адресов для использования в view
// сначала пользователи локальной сети
acl "local_lan_hosts" {
192.168.0.0/24;
127.0.0.1;
};
// затем список адресов пиринговых сетей санкт-петербурга
acl "petersburg_peers" {
109.120.128.0/18;
...... //там довольно много записей :)
95.80.64.0/18;
};// теперь - собственно определения view
view "local_lan" {
match-clients {"local_lan_hosts"; };
recursion yes;
notify yes;
allow-transfer {192.168.0.238;};
zone "muslincats.ru" {
type master;
file "/etc/bind/local-lan/muslincats.ru.zone";
};
};
view "internal" {
match-clients { !192.168.0.249; 192.168.0.248; "petersburg_peers"; };
recursion no;
notify yes;
allow-transfer {"dns_slaves"; };
zone "muslincats.ru" {
type master;
file "/etc/bind/internal/muslincats.ru.zone";
};
};
view "external" {
match-clients { any; };
recursion no;
notify yes;
allow-transfer {"dns_slaves"; };
zone "muslincats.ru" {
type master;
file "/etc/bind/external/muslincats.ru.zone";
};
};