Введение

В современных сетевых инфраструктурах DHCP-серверы играют ключевую роль в автоматической конфигурации IP-адресов для клиентских устройств. Одним из наиболее гибких и масштабируемых решений является Kea — DHCP-сервер с открытым исходным кодом, разрабатываемый проектом ISC (Internet Systems Consortium). Однако управление Kea через конфигурационные файлы может быть неудобным, особенно в крупных развертываниях. Для упрощения администрирования ISC предоставляет Stork — веб-интерфейс мониторинга и управления Kea.

В данной статье мы рассмотрим пошаговую настройку Kea DHCP-сервера и его интеграцию с Stork на примере операционной системы debian 13

Установка Kea DHCP-сервера

curl -1sLf 'https://dl.cloudsmith.io/public/isc/kea-3-0/cfg/setup/bash.deb.sh' | sudo -E bash
apt update
apt install isc-kea

Настройка Kea DHCPv4

Создадим базовую конфигурацию для DHCPv4 в файле /etc/kea/kea-dhcp4.conf:

{
  "Dhcp4": {
    "authoritative": true,
    "interfaces-config": {
      "interfaces": ["enp7s0"],
      "re-detect": false
    },
    "control-socket": {
      "socket-type": "unix",
      "socket-name": "/var/run/kea/kea4-ctrl-socket"
    },
    "lease-database": {
      "type": "memfile",
      "lfc-interval": 3600
    },
    "expired-leases-processing": {
      "reclaim-timer-wait-time": 10,
      "flush-reclaimed-timer-wait-time": 25,
      "hold-reclaimed-time": 3600,
      "max-reclaim-leases": 100,
      "max-reclaim-time": 250,
      "unwarned-reclaim-cycles": 5
    },
    "renew-timer": 900,
    "rebind-timer": 1800,
    "valid-lifetime": 3600,
    "option-data": [
      {
        "name": "domain-name-servers",
        "data": "8.8.4.4,8.8.8.8"
      },
      {
        "name": "default-ip-ttl",
        "data": "0xf0"
      }
    ],
    "subnet4": [
      {
        "id": 1,
        "subnet": "172.16.0.0/24",
        "pools": [
          {
            "pool": "172.16.0.20-172.16.0.200"
          }
        ],
        "option-data": [
          {
            "name": "routers",
            "data": "172.16.0.1"
          }
        ],
        "reservations": [
          {
            "hw-address": "1a:1b:1c:1d:1e:1f",
            "ip-address": "172.16.0.10"
          }
        ]
      }
    ],
"hooks-libraries": [
  {
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so"
  },
  {
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_host_cmds.so"
  },
  {
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_subnet_cmds.so"
  },
  {
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so"
  },
  {
    "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_perfmon.so"
  }
],

    "loggers": [
      {
        "name": "kea-dhcp4",
        "output_options": [
          {
            "output": "/var/log/kea/kea-dhcp4.log"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}

Если появляются ошибки при запуске что нет прав на файлы в каталоге /var/run/kea/ по пробуйте настроить apparmor прописываем в файле /etc/apparmor.d/usr.sbin.kea-dhcp4 на каталог

# Allow Kea DHCP4 to access its runtime directory
/var/run/kea/ r,
/var/run/kea/** rwk,

Перезагрузите профиль AppArmor

systemctl reload apparmor

Запустим и включим службу:

sudo systemctl enable --now isc-kea-dhcp4

Настройка kea-ctrl-agent

{
  "Control-agent": {
    "http-host": "127.0.0.1",
    "http-port": 8080,
    "control-sockets": {
      "dhcp4": {
        "socket-type": "unix",
        "socket-name": "/var/run/kea/kea4-ctrl-socket"
      },
      "dhcp6": {
        "socket-type": "unix",
        "socket-name": "/var/run/kea/kea6-ctrl-socket"
      }
    },
    "loggers": [
      {
        "name": "kea-ctrl-agent",
        "output_options": [
          {
            "output": "/var/log/kea/kea-ctrl-agent.log"
          }
        ],
        "severity": "INFO",
        "debuglevel": 0
      }
    ]
  }
}

Запускаем службу

systemctl ebable --now  isc-kea-ctrl-agent.service

Установка и настройка Stork

Stork состоит из двух компонентов:

  • Stork Agent — устанавливается на хост с Kea.
  • Stork Server — централизованный веб-сервер управления.

добавим репозиторий

curl -1sLf 'https://dl.cloudsmith.io/public/isc/stork/cfg/setup/bash.deb.sh' | sudo bash

Установка Stork Agent на хост Kea

apt update
apt install -y isc-stork-agent

Настроим агент (/etc/stork/agent.env):

STORK_AGENT_HOST=127.0.0.1
STORK_AGENT_PORT=8082
STORK_AGENT_SERVER_URL=http://127.0.0.1:8081
STORK_AGENT_SKIP_TLS_CERT_VERIFICATION=true
KEA_CONTROL_AGENT_URL=http://127.0.0.1:8080

Запустим агент:

systemctl enable --now isc-stork-agent.service

Установка Stork Server (на отдельном или том же хосте)

 apt install -y isc-stork-server

Устанавливаем Postgressql

apt install postgresql postgresql-contrib

Запустим и включим службу:

systemctl  enable --now postgresql

Создаем базу

 sudo -u postgres psql

-- Создаём пользователя stork с паролем
CREATE USER stork WITH PASSWORD 'pass';

-- Создаём базу данных stork, владельцем назначаем пользователя stork
CREATE DATABASE stork OWNER stork;

-- Даём все права на базу
GRANT ALL PRIVILEGES ON DATABASE stork TO stork;

-- Выйти из psql
\q

Настраиваем Stork Server для работы с Postgressql

Добавляем в конец файла /etc/stork/server.env

STORK_DATABASE_HOST=127.0.0.1
STORK_DATABASE_PORT=5432
STORK_DATABASE_NAME=stork
STORK_DATABASE_USER_NAME=stork
STORK_DATABASE_PASSWORD=pass
STORK_DATABASE_SSLMODE=disable
STORK_REST_PORT=8081
STORK_REST_HOST=0.0.0.0

Запустим сервер:

systemctl enable --now isc-stork-server

При необходимости надо произвести настройку apparmor или отключить службу

Веб-интерфейс доступен по адресу: http://<IP_сервера>:8081

Регистрация Kea в Stork

Произведите регистрацию клиента

stork-agent -s /bin/sh -c 'stork-agent register --server-url http://127.0.0.1:8081'
  1. Откройте веб-интерфейс Stork в браузере.
  2. Создайте учётную запись администратора при первом запуске. (ddefault login admin default password admin)
  3. Перейдите в раздел Machines → Register New Machine.
  4. Нажмите Register.

Stork автоматически обнаружит запущенные экземпляры Kea (dhcp4, dhcp6, ctrl-agent) и начнёт собирать метрики.

Мониторинг и управление через Stork

После успешной регистрации вы сможете:

  • Просматривать статистику использования пулов адресов.
  • Отслеживать активность клиентов.
  • Просматривать логи и состояние служб.
  • Управлять конфигурацией

Заключение

Интеграция Kea с Stork значительно упрощает эксплуатацию DHCP-инфраструктуры, особенно в распределённых или динамически изменяющихся сетях. Stork предоставляет удобный веб-интерфейс для мониторинга, диагностики и (в перспективе) полного управления конфигурацией Kea.

Для продакшн-сред настоятельно рекомендуется:

  • Настроить резервное копирование конфигураций.
  • Настроить резервного копирования Postgressql
  • Ограничить доступ к веб-интерфейсу через firewall или reverse proxy (например, Nginx с аутентификацией).