BIND, похоже, просматривает файл конфигурации сверху вниз и назначает запросы первому совпадающему представлению на основе сопоставленных клиентов. В соответствии с http://www.zytrax.com/books/dns/ch7/view.html именно так это и должно работать.
В моей конфигурации могут быть другие представления, которые применимы к пользователю в конфигурации match-client, и я хотел бы как-то пропустить их. Если нет положительного результата (сверху вниз нормально), в идеале следует продолжить и проверить следующие представления.
Возможно ли такое с BIND? Вот пример. В приведенной ниже конфигурации пользователь из 192.168.1.100 или 192.168.200 перейдет только к первому представлению. Вместо этого я хочу, чтобы пользователь 192.168.1.200 также имел доступ ко второму представлению.
acl "kids" {
192.168.1.100;
192.168.1.200;
};
view "kids"{
response-policy { zone "kids"; };
match-clients { kids; };
recursion yes;
zone "kids" {
type master;
file "kids.db";
allow-query { none; };
};
};
acl "teens" {
192.168.1.200;
};
view "teens"{
response-policy { zone "teens"; };
match-clients { teens; };
recursion yes;
zone "teens" {
type master;
file "teens.db";
allow-query { none; };
};
};
Это невозможно сделать так, как вы хотите. Сопоставление просмотра останавливается при первом совпадении, а вне представлений может существовать только один набор записей по умолчанию. Клиент может соответствовать только одному набору зон.
У вас может быть, чтобы все ваши представления содержали все определения зон, которые вы хотите обслуживать клиентам (в вашем примере, 192.168.1.200 должен быть только в acl "teens", а представление "teens" будет иметь определение для обоих "kids" и «подростковые» зоны). Вы можете использовать команду "include", чтобы избежать ненужного дублирования, но это все.
Совершенно возможно ...
acl "kids" {
192.168.1.100;
};
view "kids"{
response-policy { zone "kids"; };
match-clients { kids; };
recursion yes;
zone "kids" {
type master;
file "kids.db";
allow-query { none; };
};
};
acl "teens" {
192.168.1.200;
};
view "teens"{
response-policy { zone "teens"; };
match-clients { teens; };
recursion yes;
zone "teens" {
type master;
file "teens.db";
allow-query { none; };
};
zone "kids" {
type master;
file "kids.db";
allow-query { none; };
};
};
для ваших рабов вам нужно использовать tsig и исключить ваших рабов из просмотров, см. Как привязка обрабатывает allow-notify и match-clients у которого есть пример.