Класс 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
.