Динамическое обновление DNS-сервера Bind9 при помощи ISC DHCP

Динамическое обновление DNS-сервера Bind9 при помощи ISC DHCP
Photo by U. Storsberg / Unsplash

Предисловие

Это четвертая заметка из серии по настройке домашнего интернет шлюза на базе Ubuntu 24.04.1 LTS. Предыдущий материал:

DHCP сервер на Ubuntu 24.04.1 LTS
Предисловие Это третья заметка из серии заметок по настройке домашнего шлюза на Ubuntu 24.04.1 LTS. Предыдущий материал: DNS сервер Bind на Ubuntu 24.04.1 LTSПредисловие Это вторая из цикла заметок по настройке домашнего сетевого шлюза на базе Ubuntu 24.04.1. Предыдущий материал: Сетевой шлюз на базе

В этой части мы будем связывать настроенные ранее DNS и DCHP сервера в локальной сети для динамического обновления DNS сервера данными из DHCP.

Донастройка Bind9

DNS сервер Bind на Ubuntu 24.04.1 LTS
Предисловие Это вторая из цикла заметок по настройке домашнего сетевого шлюза на базе Ubuntu 24.04.1. Предыдущий материал: Сетевой шлюз на базе Ubuntu 24.04 (Gateway)Предисловие После очередного успешного теста на хоть и домашнем, но PRODe Ubuntu 20.04 - он лег далеко и надолго. Бэкапа и точек

Редактируем файл /etc/bind/named.conf.local, в самый верх добавляем строку include "/etc/bind/rndc.key";, сам файл содержит RNDC-ключ, дающий право обновления, данный ключ создается автоматически при установке BIND. Теперь в этом же файле редактируем описания зон, приводим их к виду:

zone "savenkoff.local" IN {
        type master;
        file "/var/lib/bind/db.savenkoff";
        allow-update { key rndc-key; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "/var/lib/bind/db.1.168.192";
        allow-update { key rndc-key; };
};

В прошлой версии настройки для каждой из зон строка allow-update имела значение { none; }; . Теперь зоны можно будет обновить предъявителю RNDC-ключа. Сохраняем. Проверяем конфигурацию командой named-checkconf и если ошибок в конфигурации не обнаружено - перезапускаем сервер sudo systemctl restart bind9.

Донастройка DHCP

DHCP сервер на Ubuntu 24.04.1 LTS
Предисловие Это третья заметка из серии заметок по настройке домашнего шлюза на Ubuntu 24.04.1 LTS. Предыдущий материал: DNS сервер Bind на Ubuntu 24.04.1 LTSПредисловие Это вторая из цикла заметок по настройке домашнего сетевого шлюза на базе Ubuntu 24.04.1. Предыдущий материал: Сетевой шлюз на базе

Копируем ключ обновления в директорию DHCP севера, выставляем на него права:

sudo cp /etc/bind/rndc.key /etc/dhcp/ddns-keys/
sudo chown root:dhcpd /etc/dhcp/ddns-keys/rndc.key

Редактируем файл /etc/dhcp/dhcpd.conf, комментируем следующие строки:

# option domain-name "savenkoff.local";
# option domain-name-servers 192.168.1.1;

Потом заменяем строку ddns-update-style none; на следующие:

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

Ниже добавляем следующие строки:

include "/etc/dhcp/ddns-keys/rndc.key";

zone savenkoff.local. {
    primary 192.168.1.1;
    key rndc-key;
}

zone 1.168.192.in-addr.arpa. {
    primary 192.168.1.1;
    key rndc-key;
}

В них мы разрешаем управление указанными зонами RNDC-ключом Bind'a.

Теперь вносим изменения в прописанную секцию subnet (переносим сюда строки, закомментированные выше + увеличили максимальное время аренды адреса до недели):

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.254;
  option domain-name "savenkoff.local";
  option domain-name-servers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.1;
  default-lease-time 7200;
  max-lease-time 604800;
}

Сохраняем, проверяем конфигурацию на ошибки dhcpd -t -cf /etc/dhcp/dhcpd.conf, для примера вывод информации об ошибке примерно такой:

Internet Systems Consortium DHCP Server 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Can't open /etc/bind/rndc.key: Permission denied

If you think you have received this message due to a bug rather
than a configuration issue please read the section on submitting
bugs on either our web page at www.isc.org or in the README file
before submitting a bug.  These pages explain the proper
process and the information we find helpful for debugging.

exiting.

Из всей этой кучи текста текст ошибки малозамететн, но он есть Can't open /etc/bind/rndc.key: Permission denied. В случае отсутствия ошибок вывод сокращается:

Internet Systems Consortium DHCP Server 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid

Добиваемся отсутствия ошибок и перезапускаем сервер командой sudo systemctl restart isc-dhcp-server.service.

После обновление зон должно начать работать.

Проверка

Достаточно подключить/переподключить устройство к сети. В логах bind категории general должны быть записи вида:

23-Oct-2024 23:32:58.394 update: info: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone 'savenkoff.local/IN': adding an RR at 'Nokia3310.savenkoff.local' A 192.168.1.60
23-Oct-2024 23:32:58.394 update: info: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone 'savenkoff.local/IN': adding an RR at 'Nokia3310.savenkoff.local' TXT "00e70052004f00c900540019009300ca00"
23-Oct-2024 23:32:58.394 update: debug 3: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone 'savenkoff.local/IN': checking for NSEC3PARAM changes
23-Oct-2024 23:32:58.401 update: info: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone '1.168.192.in-addr.arpa/IN': deleting rrset at '60.1.168.192.in-addr.arpa' PTR
23-Oct-2024 23:32:58.401 update: info: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone '1.168.192.in-addr.arpa/IN': adding an RR at '60.1.168.192.in-addr.arpa' PTR Nokia3310.savenkoff.local.
23-Oct-2024 23:32:58.401 update: debug 3: client @0x00000000000 192.168.1.1#13267/key rndc-key: updating zone '1.168.192.in-addr.arpa/IN': checking for NSEC3PARAM change

В сами файлы зон должны добавиться записи, для прямой зоны:

$TTL 3600       ; 1 hour
Nokia3310           A       192.168.1.60
                        TXT     "00e70052004f00c900540019009300ca00"

И обратной зоны соответственно:

$TTL 3600       ; 1 hour
60                      PTR     Nokia3310.savenkoff.local.

Теперь можно пробовать ping на устройство по имени с любого устройства локальной сети, хост должен быть доступен:

Всё отлично. Пост окончен.