Переопределение имен отдельных хостов в 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.

Не забудьте очистить кэши DNS-серверов, которые участвуют в обработке пользовательских запросов. В нашем случае это может быть контроллер домена corp.company.biz (или выделенный DNS-сервер служб каталогов), а также кэш рабочей станции wkst-01.corp.company.biz.