Переопределение имен отдельных хостов в BIND9.
Введение
В статье рассматривается ситуация, с которой можно столкнуться в процессе развёртывания (или модернизации) инфраструктуры небольшого предприятия. Небольшого — это до 50 хостов, например.
Почему не до 100? Потому что инфраструктура, содержащая 100 и более (до нескольких тысяч) хостов, разветвленную сеть отделений (филиалов) и пр., может сочетать в себе неожиданные и порой неоднозначные решения каких-то своих внутренних задач. Поэтому упрощения, принятые в статье, могут привести к ошибкам.
Итак. Допустим, у организации есть домен copmany.biz, за DNS-зону которого отвечает сервер имен Яндекса. Также есть офис, сотрудники, стоянка, кулер и web-сервер, расположенный в здании.
Постановка задачи
Остановимся подробнее на том, что есть что в нашей предполагаемой организации.
Многоцелевой сервер на базе ОС Ubuntu 18.04 с настроенным кэширующим DNS-сервером BIND9, который обслуживает запросы пользователей и службы каталогов Active Directory:
- имя сервера ubnt.corp.company.biz
- ip-адрес сервера 192.168.16.254
Веб-сервер обслуживает сайт организации и находится за неким брандмауэром (или роутером), ему снаружи «проброшены» 80 и 443 порты:
- адрес веб-сайта https://portal.company.biz
- внешний ip-адрес сервера 5.15.16.17
- внутренний ip-адрес сервера 192.168.0.16
Рабочая станция пользователя:
- имя wkst-01.corp.company.biz
- ip-адрес сервера 192.168.16.16
DNS-сервер Яндекса, который обслуживает зону company.biz для сайтов, почты и пр., с именем ns.yandex.net
На текущий момент DNS-запрос portal.company.biz с рабочей станции уйдёт на контроллер домена, оттуда — на ubnt.corp.company.biz, тот в свою очередь обратится к серверу Яндекса, который вернет нам ip-адрес 5.15.16.17. Таким образом пользователь будет пытаться подключиться к серверу через внешний адрес. Добиться этого конечно можно, но наверняка есть несложное и элегантное решение.
То есть нам необходимо сделать так, чтобы сайт организации был доступен извне по внешнему адресу 5.15.16.17, а внутри сети разрешался в адрес 192.168.0.16.
Решение
Чтобы пользователям, находящимся в офисе, DNS-сервер выдавал внутренний ip-адрес при запросе URL portal.company.biz, необходимо создать авторитативную зону для этого имени — portal.company.biz.
Для начала повысим себе привилегии, создадим каталог override и сразу подкорректируем права доступа
$ su
Password:
# mkdir -p /etc/bind/override
# chmod 755 /etc/bind/override
# chown root:bind /etc/bind/override
Добавим в основной конфигурационный файл named.conf строчку, подключающую файл под нашу задачу, и сразу же этот файл создадим
# echo 'include "/etc/bind/named.conf.override";' >> /etc/bind/named.conf
# nano /etc/bind/named.conf.override
Запишем в него определение нашей новой зоны
zone "portal.company.biz" IN {
# Указываем тип зоны
type master;
# Указываем расположение файла зоны
file "/etc/bind/override/db.portal.company.biz";
};
Готово. Файл можно сохранить и закрыть.
Теперь нам необходимо создать файл самой зоны
# nano /etc/bind/override/db.portal.company.biz
и заполнить его необходимыми параметрами
$TTL 1h
;
@ IN SOA @ portal.company.biz. (
21 ;serial
3h ;refresh
15m ;retry
1w ;expiry
1h ;minimum
)
@ IN NS @
; portal.company.biz for internal requests
@ A 192.168.0.16
Сохраняем файл и закрываем редактор. Даем команду серверу
# rndc reconfig
После этого можно проверять работу DNS.