Динамическое обновление DNS-сервера BIND при помощи Kea DHCP
Динамическое обновление DNS-сервера BIND при помощи Kea DHCP.
Содержание
1 Ключи
- Создадим ключ на сервере с BIND9:
tsig-keygen -a HMAC-SHA512 DHCP_UPDATER > /etc/named/keys/dhcp_updater.key
- Файл
/etc/named/keys/dhcp_updater.key
будет иметь следующий вид:key "DHCP_UPDATER" { algorithm hmac-sha512; secret "psFFSGdUIwK36l1G82LOw15PuIH4W5uB8h/cw7F0XDsjniBbwm/59tM+V3ydcCs15VLpe2pxlUlggWilytQqgg=="; };
- Поправим права доступа:
chown -R named:named /etc/named/keys
2 Настройка DNS Bind
- Настройка происходит в файле
/etc/named.conf
. - Ключ находится в файле
/etc/named/keys/dhcp_updater.key
. - Подключим ключ:
include "/etc/named/keys/dhcp_updater.key";
- Разрешим обновление зон:
zone "local.zone" IN { type master; file "local.zone.db"; allow-update { key DHCP_UPDATER; }; update-policy { grant DHCP_UPDATER wildcard *.local.zone A DHCID; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "192.168.0.db"; update-policy { grant DHCP_UPDATER wildcard *.0.168.192.in-addr.arpa PTR DHCID; }; };
- Сделаем проверку конфигурационного файла:
named-checkconf
- Перестартуйте сервер DNS:
systemctl restart named.service
3 Настройка Kea DHCP
3.1 Ключ
- Файл ключа назовём
/etc/kea/tsig-keys.json
:touch /etc/kea/tsig-keys.json
- Перенесём ключ на сервер Kea DHCP и перепишем его в формате json:
"tsig-keys": [ { "name": "DHCP_UPDATER", "algorithm": "hmac-sha512", "secret": "psFFSGdUIwK36l1G82LOw15PuIH4W5uB8h/cw7F0XDsjniBbwm/59tM+V3ydcCs15VLpe2pxlUlggWilytQqgg==" } ],
- Сменим владельца:
chown kea:root /etc/kea/tsig-keys.json
- Поправим права доступа:
chmod 640 /etc/kea/tsig-keys.json
3.2 Сервис ddns
- Настройка происходит в файле
/etc/kea/kea-dhcp-ddns.conf
. - Файл будет иметь следующий вид:
{ "DhcpDdns": { "ip-address": "127.0.0.1", "port": 53001, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea-ddns-ctrl-socket" }, <?include "/etc/kea/tsig-keys.json"?> "forward-ddns" : { "ddns-domains" : [ { "name": "local.zone.", "key-name": "DHCP_UPDATER", "dns-servers": [ { "ip-address": "192.168.0.1" } ] } ] }, "reverse-ddns" : { "ddns-domains" : [ { "name": "0.168.192.in-addr.arpa.", "key-name": "DHCP_UPDATER", "dns-servers": [ { "ip-address": "192.168.0.1" } ] } ] }, "loggers": [ { "name": "kea-dhcp-ddns", "output_options": [ { "output": "stdout", "pattern": "%-5p %m\n" } ], "severity": "INFO", "debuglevel": 0 } ] } }
- Обратите особое внимание на точку в конце имени зоны, иначе DDNS завершится сбоем и сообщит, что не удалось найти соответствующее полное доменное имя.
- Можно определить несколько DNS-серверов.
- Раздел журналирования оставлен из шаблона.
- Изменим владельца файла:
chown kea:root /etc/kea/kea-dhcp-ddns.conf
- Проверим файл на наличие возможных синтаксических ошибок:
kea-dhcp-ddns -t /etc/kea/kea-dhcp-ddns.conf
- Запустим службу ddns:
systemctl enable --now kea-dhcp-ddns.service
- Проверим статус работы службы:
systemctl status kea-dhcp-ddns.service
3.3 Сервис dhcp4
- Настройка происходит в файле
/etc/kea/kea-dhcp4.conf
. - Включим динамическое обновление:
"dhcp-ddns": { "enable-updates": true }, "ddns-qualifying-suffix": "local.zone", "ddns-override-client-update": true,
- Включаем обновления DDNS.
- Затем мы сообщаем DHCP-серверу, каким будет DNS-суффикс по умолчанию.
- Если клиент предоставляет только своё имя хоста, это вызывает проблемы для DDNS, поскольку он не будет знать, что такое полное доменное имя, и поэтому не будет знать, какую зону обновлять.
- Другими словами, команда
ddns-qualifying-suffix
используется для указания того, какое доменное имя должно быть добавлено к имени хоста. - Можно определить это для каждой подсети.
- Для параметра
ddns-override-client-update
устанавливается значениеtrue
, поскольку мы не хотим, чтобы клиент решал, какие записи обновлять. - Проверим файл на наличие возможных синтаксических ошибок:
kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
- Перезапустим службу, чтобы изменения вступили в силу:
systemctl restart kea-dhcp4.service
- Проверим статус:
systemctl status kea-dhcp4.service