Динамическое обновление 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
    

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

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

Похожие