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

  • Автор:

dynamic-dns-bind-and-kea-dhcp-000.png

По мере роста любой сети возникает необходимость перехода от обращения к узлам с IP адресов на FQDN, что позволяет полностью отвязаться от IP-адресации и использовать постоянные и удобные для запоминания доменные имена. А задачу преобразования доменных имен в IP-адреса берет на себя DNS-сервер. Но как быть с узлами, которые получают IP-адрес по DHCP? Все просто - необходимо настроить динамическое обновление записей DNS-сервера и сегодня мы расскажем, как сделать это для DHCP-сервера Kea.

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

Прежде всего будем считать, что у вас уже есть рабочий DNS-сервер на базе BIND, его можно настроить по нашей статье:

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

Базовую настройку DHCP сервера Kea можно выполнить при помощи другого нашего материала:

Установка и базовая настройка DHCP-сервера Kea

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

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

  • Сеть: 192.168.72.0/24
  • DHCP-сервер: 192.168.72.1
  • DNS-сервер (первичный): 192.168.72.8
  • Домен: it-31.lab

В данной статье мы будем рассматривать настройку сервисов в среде Debian или Ubuntu, все действия, если не указано иного, выполняются с правами суперпользователя (root).

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

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

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

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

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

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

Теперь добавим в каждую зону опцию allow-update, которая разрешает обновлять зоны предъявителю RNDC-ключа.

Для прямой:

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

Обратной:

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

Не забываем проверить опцию file, которая обязательно должна указывать на расположение файлов зон в /var/lib/bind.

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

named-checkconf

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

systemctl restart named

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

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

Если у вас настроено более одного DHCP-сервера (отказоустойчивая конфигурация) то выполнить указанные ниже действия потребуется на каждом сервере.

Как мы уже рассказывали в статье о базовой установке Kea - продукт построен по модульному принципу, сам DHCP-сервер не умеет работать с DNS-сервером, за это отвечает отдельная служба - kea-dhcp-ddns-server, поэтому сначала убедимся, что она установлена, посмотреть все установленные компоненты Kea можно командой:

dpkg -l | grep kea

Если пакет отсутствует, то установим его командой:

apt install kea-dhcp-ddns-server

После чего перейдем к его конфигурационному файлу /etc/kea/kea-dhcp-ddns.conf. Kea использует конфигурационные файлы в формате JSON, они состоят из JSON объектов, каждый из которых заключен в фигурные скобки. Каждый объект содержит параметры, либо вложенные JSON-объекты. Все параметры разделяются запятыми (а вложенный объект - тоже параметр), поэтому редактируя конфигурацию не забывайте о правильной расстановке запятых.

Рекомендуем для работы с конфигурационными файлами Kea использовать редактор с поддержкой синтаксиса JSON, например, VS Code.

Если отбросить многочисленные комментарии, то интересующее нас начало конфигурационного файла выглядит так:

{
"DhcpDdns":
{
"ip-address": "127.0.0.1",
"port": 53001,
"control-socket": {
"socket-type": "unix",
"socket-name": "/tmp/kea-ddns-ctrl-socket"
},
"tsig-keys": [],
"forward-ddns" : {},
"reverse-ddns" : {},

Начнем с объекта tsig-keys в котором следует разместить RNDC-ключ в формате JSON, он находится на DNS-сервере в файле /etc/bind/rndc.key, прочитать его содержимое можно командой:

cat /etc/bind/rndc.key

При этом вы увидите примерно следующее:

key "rndc-key" {
algorithm hmac-sha256;
secret "LSWXnfkKZjdPJI5QxlpnfQ==";
};

На основании этого приводим объект к следующему виду:

"tsig-keys": [ 
{
"name": "rndc-key",
"algorithm": "hmac-sha256",
"secret": "LSWXnfkKZjdPJI5QxlpnfQ=="
}
],

Объект forward-ddns отвечает за настройки обновления прямой зоны, в нашем случае настройки будут следующие:

"forward-ddns" : {
"ddns-domains": [
{
"name": "it-31.lab.",
"key-name": "rndc-key",
"dns-servers": [
{"ip-address": "192.168.72.8"}
]
}
]
},

Параметр name сообщает для какой доменной зоны производить обновление, обратите внимание, что зона записывается по полному пути, т.е. с точкой на конце. Далее указывается ключ для обновления зоны и адрес первичного DNS-сервера зоны.

Для обратной зоны настройки будут аналогичные:

"reverse-ddns" : {
"ddns-domains": [
{
"name": "72.168.192.in-addr.arpa.",
"key-name": "rndc-key",
"dns-servers": [
{"ip-address": "192.168.72.8"}
]
}
]
},

Сохраняем конфигурационный файл и проверяем его на ошибки:

kea-dhcp-ddns -t /etc/kea/kea-dhcp-ddns.conf

Если ошибок нет, то перезапускаем службу:

systemctl restart kea-dhcp-ddns-server

Служба настроена и работает, но теперь нужно научить работать с ней сам DHCP-сервер, поэтому откроем файл /etc/kea/kea-dhcp4.conf и перед двумя последними закрывающими фигурными скобками добавим следующие глобальные параметры (не забудьте поставить запятую после последнего существовавшего в файле объекта):

"ddns-send-updates": true,
"ddns-qualifying-suffix": "it-31.lab",
"ddns-override-no-update": true,
"ddns-override-client-update": true,
"dhcp-ddns": {
"enable-updates": true,
"server-ip": "127.0.0.1"
}

Параметр ddns-qualifying-suffix определяет для какого доменного суффикса мы обновляем DNS-зоны, суффикс записывается в обычном виде, без точки на конце. Опции ddns-override разрешают серверу переопределять параметры клиента. И самым последним указывается расположение службы kea-dhcp-ddns-server.

Если у вас в сети существуют ПК с именами, содержащими недопустимые для DNS-имен символы (согласно RFC 1035 это: A-Z, a-z, 0-9, и -), то для таких ПК не получится зарегистрировать доменные имена. Однако можно заставить DHCP-сервер заменять недопустимые символы на указанный. Для этого добавьте в конфигурацию еще два глобальных параметра:

"hostname-char-set": "[^A-Za-z0-9.-]",
"hostname-char-replacement": "x",

Теперь все недопустимые символы будут заменены на символ "x". В случае если будут преобразованы несколько имен содержащие одинаковое количество недопустимых символов на одинаковых местах, то регистрация DNS-записи будет выполнена только для первого из них.

Закончив редактирование, проверим файл конфигурации на ошибки:

kea-dhcp4 -t  /etc/kea/kea-dhcp4.conf

Если все хорошо, то перезапустим службу:

systemctl restart kea-dhcp4-server

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

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

Дополнительные материалы:


  1. Настраиваем отказоустойчивый DHCP-сервер на базе ISC DHCP
  2. Настраиваем отказоустойчивый DNS-сервер на базе BIND 9
  3. Настраиваем динамическое обновление DNS-сервера BIND 9 при помощи ISC DHCP
  4. Установка и базовая настройка DHCP-сервера Kea
  5. Настраиваем динамическое обновление DNS-сервера BIND 9 при помощи Kea DHCP

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

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

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



Loading Comments