Класс view в DNS сервере named (Bind9) или как отдавать разные IP адреса разным клиентам для одного доменного имени.
Допустим, есть некие подсети для которых желательно хождение трафика без заворачивания в интернет или на внешний интерфейс шлюза. Т.е. чтобы зайти на ресурс по доменному имени, который располагается в своей подсети, клиенту надо отдать локальный IP адрес этого ресурса, а не внешний. Для этого и служит класс view в DNS сервере named. Так же предполагается что DNS сервер named (Bind9) уже настроен и работает.
Чтобы добиться такой работы named следует выполнить:
Добавить в начало файла /etc/bind/named.conf строку
include "/etc/bind/nets";
Где /etc/bind/nets - список подсетей при обращении с которых будут отдаваться измененные адреса, пример /etc/bind/nets:
acl nets {
a.a.a.a/aa;
b.b.b.b/bb;
...
z.z.z.z/zz;
};
Все содержимое /etc/bind/named.conf.default-zones заключить в класс
view "root" {
...
};
root - произвольное название класса.
Иначе будет вылазить ошибка:
/etc/bind/named.conf.default-zones:2: when using 'view' statements, all zones must be in views
Изменить описания зон, было:
zone "notessysadmin.com" {
type master;
file "/etc/bind/master/notessysadmin.com";
allow-query { any; };
notify yes;
};
Стало:
view "nets" {
match-clients { nets; };
recursion yes;
zone "notessysadmin.com" {
type master;
file "/etc/bind/master/nets-notessysadmin.com";
allow-query { any; };
notify yes;
};
};
view "all" {
match-clients { any; };
recursion yes;
zone "notessysadmin.com" {
type master;
file "/etc/bind/master/notessysadmin.com";
allow-query { any; };
notify yes;
};
};
all и nets - произвольные названия классов.
В /etc/bind/master/nets-notessysadmin.com изменить на локальные IP адреса.
Последовательность имеет принципиально значение для работоспособности данной конструкции. Класс nets обязательно должен быть первым.
В итоге все подсети, перечисленные в /etc/bind/nets, при обращении к настраиваемому DNS серверу получат нужный нам IP адрес, указанный в master/nets-notessysadmin.com, все остальные клиенты получат адрес из master/notessysadmin.com.