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

Динамическое обновление DNS-сервера BIND при помощи Kea DHCP.

Содержание

1 Ключи

  • Создадим ключ на сервере с BIND9:
    1tsig-keygen -a HMAC-SHA512 DHCP_UPDATER > /etc/named/keys/dhcp_updater.key
    
  • Файл /etc/named/keys/dhcp_updater.key будет иметь следующий вид:
    1key "DHCP_UPDATER" {
    2    algorithm hmac-sha512;
    3    secret "psFFSGdUIwK36l1G82LOw15PuIH4W5uB8h/cw7F0XDsjniBbwm/59tM+V3ydcCs15VLpe2pxlUlggWilytQqgg==";
    4};
    
  • Поправим права доступа:
    1chown -R named:named /etc/named/keys
    

2 Настройка DNS Bind

  • Настройка происходит в файле /etc/named.conf.
  • Ключ находится в файле /etc/named/keys/dhcp_updater.key.
  • Подключим ключ:
    1include "/etc/named/keys/dhcp_updater.key";
    
  • Разрешим обновление зон:
     1zone "local.zone" IN {
     2     type master;
     3     file "local.zone.db";
     4     allow-update { key DHCP_UPDATER; };
     5     update-policy {
     6          grant DHCP_UPDATER wildcard *.local.zone A DHCID;
     7     };
     8};
     9
    10zone "0.168.192.in-addr.arpa" IN {
    11     type master;
    12     file "192.168.0.db";
    13     update-policy {
    14           grant DHCP_UPDATER wildcard *.0.168.192.in-addr.arpa PTR DHCID;
    15     };
    16};
    
  • Сделаем проверку конфигурационного файла:
    1named-checkconf
    
  • Перестартуйте сервер DNS:
    1systemctl restart named.service
    

3 Настройка Kea DHCP

3.1 Ключ

  • Файл ключа назовём /etc/kea/tsig-keys.json:
    1touch /etc/kea/tsig-keys.json
    
  • Перенесём ключ на сервер Kea DHCP и перепишем его в формате json:
    1"tsig-keys": [
    2    {
    3       "name": "DHCP_UPDATER",
    4       "algorithm": "hmac-sha512",
    5       "secret": "psFFSGdUIwK36l1G82LOw15PuIH4W5uB8h/cw7F0XDsjniBbwm/59tM+V3ydcCs15VLpe2pxlUlggWilytQqgg=="
    6    }
    7],
    
  • Сменим владельца:
    1chown kea:root /etc/kea/tsig-keys.json
    
  • Поправим права доступа:
    1chmod 640 /etc/kea/tsig-keys.json
    

3.2 Сервис ddns

  • Настройка происходит в файле /etc/kea/kea-dhcp-ddns.conf.
  • Файл будет иметь следующий вид:
     1{
     2    "DhcpDdns":
     3    {
     4        "ip-address": "127.0.0.1",
     5        "port": 53001,
     6        "control-socket": {
     7            "socket-type": "unix",
     8            "socket-name": "/tmp/kea-ddns-ctrl-socket"
     9        },
    10        <?include "/etc/kea/tsig-keys.json"?>
    11
    12        "forward-ddns" : {
    13            "ddns-domains" : [
    14                {
    15                    "name": "local.zone.",
    16                    "key-name": "DHCP_UPDATER",
    17                    "dns-servers": [
    18                        { "ip-address": "192.168.0.1" }
    19                    ]
    20                }
    21            ]
    22        },
    23
    24        "reverse-ddns" : {
    25            "ddns-domains" : [
    26                {
    27                    "name": "0.168.192.in-addr.arpa.",
    28                    "key-name": "DHCP_UPDATER",
    29                    "dns-servers": [
    30                        { "ip-address": "192.168.0.1" }
    31                    ]
    32                }
    33            ]
    34        },
    35
    36        "loggers": [
    37            {
    38                "name": "kea-dhcp-ddns",
    39                "output_options": [
    40                    {
    41                        "output": "stdout",
    42                        "pattern": "%-5p %m\n"
    43                    }
    44                ],
    45                "severity": "INFO",
    46
    47                "debuglevel": 0
    48            }
    49        ]
    50    }
    51}
    
  • Обратите особое внимание на точку в конце имени зоны, иначе DDNS завершится сбоем и сообщит, что не удалось найти соответствующее полное доменное имя.
  • Можно определить несколько DNS-серверов.
  • Раздел журналирования оставлен из шаблона.
  • Изменим владельца файла:
    1chown kea:root /etc/kea/kea-dhcp-ddns.conf
    
  • Проверим файл на наличие возможных синтаксических ошибок:
    1kea-dhcp-ddns -t /etc/kea/kea-dhcp-ddns.conf
    
  • Запустим службу ddns:
    1systemctl enable --now kea-dhcp-ddns.service
    
  • Проверим статус работы службы:
    1systemctl status kea-dhcp-ddns.service
    

3.3 Сервис dhcp4

  • Настройка происходит в файле /etc/kea/kea-dhcp4.conf.
  • Включим динамическое обновление:
    1"dhcp-ddns": {
    2    "enable-updates": true
    3},
    4
    5"ddns-qualifying-suffix": "local.zone",
    6"ddns-override-client-update": true,
    
  • Включаем обновления DDNS.
  • Затем мы сообщаем DHCP-серверу, каким будет DNS-суффикс по умолчанию.
    • Если клиент предоставляет только своё имя хоста, это вызывает проблемы для DDNS, поскольку он не будет знать, что такое полное доменное имя, и поэтому не будет знать, какую зону обновлять.
    • Другими словами, команда ddns-qualifying-suffix используется для указания того, какое доменное имя должно быть добавлено к имени хоста.
    • Можно определить это для каждой подсети.
  • Для параметра ddns-override-client-update устанавливается значение true, поскольку мы не хотим, чтобы клиент решал, какие записи обновлять.
  • Проверим файл на наличие возможных синтаксических ошибок:
    1kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
    
  • Перезапустим службу, чтобы изменения вступили в силу:
    1systemctl restart kea-dhcp4.service
    
  • Проверим статус:
    1systemctl status kea-dhcp4.service
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие