У меня есть два вторичных DNS-сервера для зоны. Один из этих серверов при получении запроса из определенного диапазона должен изменить одну из записей.
Чтобы разделить ответ, я планирую использовать представление:
acl dmz { 192.168.0.0/24; localhost; };
acl lan { 10.0.0.0/8; };
view dmz {
match-clients { dmz; };
zone "example.info" {
type slave;
masters { 10.100.10.254; };
file "/etc/bind/db.example-dmz.info";
};
};
view lan {
match-clients { lan; };
zone "example.info" {
type slave;
masters { 10.100.10.254; };
file "/etc/bind/db.example-lan.info";
};
};
Приведенная выше конфигурация разделяет ответы, но ответы одинаковы.
Хотелось бы, когда устройство 192.168.0.10
(в dmz
) запрашивает разрешение foo.example.info
, чтобы отправить обратно 192.168.0.20
вместо ответа из переданной зоны.
Как отменить эту единственную запись?
Сделайте этот единственный подчиненный сервер имен главным для зоны foo.example.info
и показывать его только в желаемом виде, например
view all-clients {
match-clients { lan; !192.168.0.10/32; dmz; };
zone "example.info" {
type slave;
masters { 10.100.10.254; };
file "/var/bind/db.example.info";
};
};
view exception-host {
match-clients { 192.168.0.10; };
zone "foo.example.info" {
type master;
file "/etc/bind/foo.example.info-for-192.168.0.10";
};
zone "example.info" {
in-view all-clients;
};
};
Теперь, когда 192.168.0.10 запрашивает поиск, он увидит представление «хост-исключение» и получит другой ответ для записи «foo.example.info». В противном случае он получает те же результаты, что и все другие клиенты, выполняющие поиск.
В ваших представлениях отсутствуют операторы match-clients, чтобы указать, каким ACL разрешено использовать представление. Например, вы, вероятно, захотите что-то вроде:
view dmz {
match-clients { dmz; };
zone "example.info" {
type slave;
masters { 10.100.10.254; };
file "/etc/bind/db.example-dmz.info";
};
};
И соответствующая запись для просмотра "lan".