Настраиваем динамическое обновление DNS-сервера BIND 9 при помощи ISC DHCP

  • Автор:

dynamic-dns-bind-and-isc-dhcp-000.pngРанее мы рассматривали как создать отказоустойчивые конфигурации DNS и DHCP на базе открытых решений от ISC. Сегодня мы дополним цикл завершающей статьей, в которой расскажем, как настроить автоматическое обновление зон DNS-сервера на основе выданных DНСP-сервером адресов. Это полезно для больших сетей, где пользователи активно взаимодействуют друг с другом, так как для обращения к узлу будет достаточно знать его сетевое имя. Всю остальную необходимую информацию нам предоставит DNS-сервер, а DHCP-сервера будут следить за ее актуальностью.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

В рамках данной статьи мы будем подразумевать, что у вас уже есть настроенные и нормально функционирующие BIND 9 и ISC DHCP и будем в дальнейшем опираться на конфигурации, описанные в статьях:

• Настраиваем отказоустойчивый DHCP-сервер на базе ISC DHCP
• Настраиваем отказоустойчивый DNS-сервер на базе BIND 9

Перед тем, как продолжать настройку рекомендуем внимательно с ними ознакомиться на предмет расположения файлов и настроек. Все инструкции актуальны для текущих выпусков операционных систем Debian и Ubuntu.

Общая схема сети

Чтобы вам было легче ориентироваться в адресах и настройках мы привели ниже общую схему сети. В ней мы будем использовать диапазон адресов 192.168.72.0/24 и домен interface31.lab. В данной сети у нас развернуты отказоустойчивые конфигурации DNS и DHCP, и мы добавили на схему все важные узлы.

dynamic-dns-bind-and-isc-dhcp-001.pngВнимательный читатель сразу может спросить, а почему мы изобразили на схеме два DHCP-сервера и только один DNS? Все очень просто, в отказоустойчивой конфигурации оба DHCP-сервера являются активными, выдают IP-адреса и, следовательно, должны уметь обновлять DNS-зону. В структуре DNS за внесение изменений в файлы зоны отвечает первичный сервер, все остальные реплицируют информацию с него и вносить изменения не имеют права, поэтому оба наших DHCP-сервера должны взаимодействовать только с первичным DNS, который мы и указали на схеме.

Настройка первичного DNS-сервера BIND 9

Прежде всего убедимся, что файлы зоны находятся в /var/lib/bind, это важно, так как AppArmor блокирует для службы named возможность записи в другие расположения. Если это не так, то просто скопируйте файлы зон в /var/lib/bind.

Затем откроем файл /etc/bind/named.conf.local и в самом начале добавим строку:

include "/etc/bind/rndc.key";

Она указывает на RNDC-ключ, который нужен для проверки подлинности серверов, имеющих право вносить изменения в зону, данный ключ создается автоматически при установке BIND.

Теперь приведем описания зон к следующему виду. Для прямой:

zone "interface31.lab" {
type master;
file "/var/lib/bind/db.interface31.lab";
allow-transfer { 192.168.72.9; };
allow-update { key rndc-key; };
};

Обратной:

zone "72.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/db.192.168.72";
allow-transfer { 192.168.72.9; };
allow-update { key rndc-key; };
};

Обращаем внимание на опцию allow-update, которая разрешает обновлять зоны предъявителю RNDC-ключа и опцию file, которая обязательно должна указывать на расположение файлов зон в /var/lib/bind.

Проверяем отсутствие ошибок в конфигурации:

named-checkconf

И перезапускаем службу DNS-сервера:

systemctl restart named

Более никаких настроек DNS-сервера не требуется.

Настройка DHCP-серверов ISC DHCP

Для каждого из серверов нам потребуется провести одинаковые настройки, поэтому разберем их только для одного из них.

Прежде всего скопируем с первичного DNS-сервера файл RNDC-ключа /etc/bind/rndc.key и поместим его в /etc/dhcp, затем установим на него следующие права:

chown root:root /etc/dhcp/rndc.key
chmod 640 /etc/dhcp/rndc.key

После этого откроем /etc/dhcp/dhcpd.conf и найдем в нем опцию ddns-update-style, которую заменим следующим блоком:

ddns-updates on;
ddns-update-style interim;
ignore client-updates;
update-static-leases on;

Данные опции включают динамическое обновление DNS и предписывают делать это в том числе и для статических записей. Это общие настройки сервера, сохраняем изменения и входим.

Теперь будем настраивать непосредственно область, настройки которой в нашем случае хранятся в файле /etc/dhcp/dhcpd.d/subnet.conf. Прежде всего добавим в самое его начало строки:

include "/etc/dhcp/rndc.key";

zone interface31.lab. {
primary 192.168.72.8;
key rndc-key;
}

zone 72.168.192.in-addr.arpa. {
primary 192.168.72.8;
key rndc-key;
}

В них мы импортировали RNDC-ключ и указали DNS-зоны, которые мы хотим обновлять. Обратите внимание, что имена зон мы пишем в абсолютном формате, т.е. с точкой на конце. Внутри каждой секции указываем адрес первичного DNS-сервера и ключ доступа к нему.

Ниже, в секцию subnet добавляем следующие опции:

option domain-name "interface31.lab";
option domain-search "interface31.lab";

Проверяем конфигурацию на ошибки:

dhcpd -t -cf /etc/dhcp/dhcpd.conf

И перезапускаем DHCP-сервер:

systemctl restart isc-dhcp-server

Затем выполняем аналогичные настройки на втором сервере.

На этом настройка закончена. Проверить работу мы можем после получения клиентом адреса выполнив DNS-запрос по его имени хоста:

nslookup  WIN10LAB

Либо с явным указанием DNS-сервера, которому направляем запрос:

 nslookup WIN10LAB 192.168.72.9

dynamic-dns-bind-and-isc-dhcp-002.png

Как видим, настроить динамическое обновление DNS-зон на основе данных аренды DHCP-сервера совсем несложно, получив при этом полноценное управление инфраструктурой при помощи доменных имен, не задумываясь какой именно IP-адрес в данный момент получен узлом.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments