Kea DHCP: настройка современного DHCP-сервера на Ubuntu — полное руководство

Kea DHCP на Ubuntu

Kea DHCP — это современный DHCP-сервер, разработанный Internet Systems Consortium (ISC) для замены устаревшего isc-dhcp-server. Если вы ищете актуальное решение для автоматической раздачи IP-адресов в вашей сети — Kea станет отличным выбором. В этом руководстве мы подробно разберём настройку Kea DHCP на Ubuntu с нуля: установку, базовую конфигурацию, создание пулов адресов, резервирование IP по MAC, дополнительные опции и отладку.

💡 Важно: ISC DHCP (isc-dhcp-server) объявлен устаревшим и больше не поддерживается. Его поддержка официально прекращена в 2022 году. Kea — это современная замена с модульной архитектурой, поддержкой REST API и высокой производительностью

Оглавление

1. Что такое Kea DHCP и почему он лучше ISC DHCP

Kea DHCP — это высокопроизводительный DHCP-сервер, разработанный ISC (Internet Systems Consortium). Он пришёл на смену классическому isc-dhcp-server, который использовался десятилетиями, но больше не поддерживается.

Ключевые преимущества Kea:

  • Модульная архитектура — каждый компонент работает независимо (DHCPv4, DHCPv6, DDNS, Control Agent).
  • REST API — возможность динамической перезагрузки конфигурации без остановки сервера через kea-shell.
  • Высокая производительность — Kea обрабатывает тысячи запросов в секунду, что критично для крупных сетей и провайдеров.
  • Поддержка современных баз данных — хранение аренд и резервирований в MySQL, PostgreSQL.
  • Гибкая система классов и hook-библиотек — позволяет расширять функциональность.

Сравнение Kea и ISC DHCP:

ХарактеристикаISC DHCPKea DHCP
Статус поддержки❌ Не поддерживается (EOL 2022)✅ Активно развивается
Формат конфигурацииdhcpd.confJSON
REST APIНет✅ Да (kea-ctrl-agent)
Динамическая перезагрузкаТолько restartЧерез API без остановки
Базы данных для арендТолько файлыMySQL, PostgreSQL, Memfile

🔗 Будущая статья: Сравнение DHCP-серверов: Kea vs ISC DHCP vs dnsmasq

2. Требования и подготовка к установке

Перед установкой Kea DHCP убедитесь, что выполнены следующие условия:

  • Ubuntu Server 22.04 LTS или новее (рекомендуется 24.04 LTS).
  • Статический IP-адрес на сервере (или зарезервированный через DHCP).
  • Права sudo.
  • Интернет для установки пакетов.

Важно: Kea работает на Ubuntu 23.04 и новее. На Ubuntu 22.04 пакет доступен, но может быть старой версии. Для получения последней версии рекомендуется использовать официальный репозиторий ISC.

2.1. Определение сетевого интерфейса

Узнайте имя сетевого интерфейса, на котором будет работать DHCP-сервер:

ip link show

Обычно интерфейсы называются eth0, ens3, enp0s3. Запомните это имя — оно понадобится в конфигурации.

3. Установка Kea DHCP на Ubuntu

Существует два способа установки Kea: из официальных репозиториев Ubuntu (проще, но версия может быть не самой свежей) и из репозитория ISC (рекомендуется для production).

3.1. Установка из официальных репозиториев Ubuntu

Для базовых задач и тестирования подойдёт стандартный репозиторий:

sudo apt update
sudo apt install kea -y

Эта команда установит мета-пакет kea, который включает все компоненты:

  • kea-dhcp4-server — DHCPv4 сервер
  • kea-dhcp6-server — DHCPv6 сервер
  • kea-ctrl-agent — REST API агент для управления
  • kea-dhcp-ddns-server — сервер динамического обновления DNS

3.2. Установка последней версии из репозитория ISC (рекомендуется)

Для получения актуальной версии Kea 2.6+ используйте официальный репозиторий ISC:

# Удалить старую версию (если установлена)
sudo apt remove --purge kea

# Установить curl
sudo apt install curl -y

# Добавить репозиторий ISC
curl -1sLf 'https://dl.cloudsmith.io/public/isc/kea-2-6/setup.deb.sh' | sudo bash

# Обновить репозитории и установить Kea
sudo apt update
sudo apt install isc-kea-dhcp4 -y

3.3. Настройка пароля для kea-ctrl-agent (если нужен REST API)

При установке kea из официальных репозиториев вас спросят о настройке пароля для Control Agent:

  • no action — Control Agent не будет запущен.
  • configure with a random password — сгенерировать случайный пароль.
  • configure with a given password — указать свой пароль.

Пароль сохраняется в файле /etc/kea/kea-api-password. Для изменения пароля выполните:

sudo dpkg-reconfigure kea-ctrl-agent

🔗 Будущая статья: Kea Control Agent: полное руководство по REST API

4. Базовая настройка kea-dhcp4.conf

Конфигурационный файл Kea находится по пути /etc/kea/kea-dhcp4.conf и имеет формат JSON. Рекомендуется сделать резервную копию оригинального файла перед редактированием:

sudo cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.bak

Откройте файл для редактирования:

sudo nano /etc/kea/kea-dhcp4.conf

4.1. Минимальная рабочая конфигурация

Вот пример базовой конфигурации, которая заставит Kea раздавать IP-адреса:

{
    "Dhcp4": {
        "interfaces-config": {
            "interfaces": ["eth0"]
        },
        "control-socket": {
            "socket-type": "unix",
            "socket-name": "/run/kea/kea4-ctrl-socket"
        },
        "lease-database": {
            "type": "memfile",
            "lfc-interval": 3600
        },
        "valid-lifetime": 3600,
        "subnet4": [{
            "id": 1,
            "subnet": "192.168.1.0/24",
            "pools": [{
                "pool": "192.168.1.100 - 192.168.1.200"
            }],
            "option-data": [{
                "name": "routers",
                "data": "192.168.1.1"
            }]
        }]
    }
}

4.2. Пояснение параметров

  • interfaces-config.interfaces — сетевой интерфейс, на котором сервер слушает запросы (замените eth0 на ваш интерфейс).
  • control-socket — UNIX-сокет для управления сервером.
  • lease-database — где хранятся аренды. memfile означает хранение в CSV-файле /var/lib/kea/kea-leases4.csv.
  • valid-lifetime — время аренды в секундах (3600 = 1 час).
  • subnet4 — массив подсетей, которые обслуживает сервер.
  • pools — диапазон выдаваемых IP-адресов.
  • option-data.routers — шлюз по умолчанию.

4.3. Проверка синтаксиса конфигурации

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

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

Если конфигурация корректна, вы не увидите ошибок. При наличии ошибок Kea укажет строку и проблему.

4.4. Запуск и перезапуск службы

sudo systemctl restart kea-dhcp4-server
sudo systemctl status kea-dhcp4-server

Включите автозапуск при загрузке системы:

sudo systemctl enable kea-dhcp4-server

5. Настройка пула адресов и подсетей

Что такое пул dhcp? Это диапазон IP-адресов, которые сервер может выдавать клиентам. В Kea пулы настраиваются внутри объявления подсети.

5.1. Один пул в подсети

"subnet4": [{
    "id": 1,
    "subnet": "192.168.1.0/24",
    "pools": [{
        "pool": "192.168.1.100 - 192.168.1.200"
    }]
}]

5.2. Несколько пулов в одной подсети

Можно создать несколько пулов, например, для разных типов устройств:

"subnet4": [{
    "id": 1,
    "subnet": "192.168.1.0/24",
    "pools": [
        { "pool": "192.168.1.100 - 192.168.1.150" },
        { "pool": "192.168.1.160 - 192.168.1.199" }
    ]
}]

5.3. Настройка таймеров аренды

Kea поддерживает три типа таймеров:

  • renew-timer — через сколько секунд клиент должен попытаться продлить аренду (T1).
  • rebind-timer — через сколько секунд клиент должен попытаться перепривязаться (T2).
  • valid-lifetime — общее время жизни аренды.

Пример настройки:

"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600

🔗 Будущая статья: Продвинутые таймеры аренды в Kea DHCP

6. Настройка DNS, шлюза и опций

Dhcp сервер настройка dns — критически важный этап. Kea позволяет настраивать опции на разных уровнях: глобальном, уровне подсети, уровне пула и уровне резервирования.

6.1. Глобальные опции (действуют для всех подсетей)

"option-data": [
    {
        "name": "domain-name-servers",
        "data": "8.8.8.8, 8.8.4.4"
    },
    {
        "name": "domain-name",
        "data": "example.local"
    },
    {
        "name": "domain-search",
        "data": "example.local, corp.example.local"
    }
]

6.2. Опции на уровне подсети

Опции, заданные в подсети, переопределяют глобальные для этой подсети:

"subnet4": [{
    "id": 1,
    "subnet": "192.168.1.0/24",
    "pools": [{ "pool": "192.168.1.100 - 192.168.1.200" }],
    "option-data": [
        {
            "name": "routers",
            "data": "192.168.1.1"
        },
        {
            "name": "domain-name-servers",
            "data": "192.168.1.2, 8.8.8.8"
        }
    ]
}]

6.3. Часто используемые опции DHCP

Опция (Option)Название в KeaНазначение
1subnet-maskМаска подсети (задаётся автоматически из subnet)
3routersШлюз по умолчанию
6domain-name-serversDNS-серверы
15domain-nameDNS-суффикс
42ntp-serversNTP-серверы
66tftp-server-nameTFTP-сервер
67boot-file-nameФайл загрузки (PXE)

🔗 Будущая статья: Все опции DHCP: от Option 1 до Option 252 — справочник администратора

7. Настройка резервирования IP (Host Reservations)

Что такое статический dhcp? Это привязка конкретного IP-адреса к MAC-адресу устройства. В Kea резервирования настраиваются в секции reservations внутри подсети.

7.1. Базовое резервирование по MAC-адресу

"subnet4": [{
    "id": 1,
    "subnet": "192.168.1.0/24",
    "pools": [{ "pool": "192.168.1.100 - 192.168.1.200" }],
    "reservations": [
        {
            "hw-address": "00:11:22:33:44:55",
            "ip-address": "192.168.1.10"
        },
        {
            "hw-address": "AA:BB:CC:DD:EE:FF",
            "ip-address": "192.168.1.20",
            "hostname": "fileserver"
        }
    ]
}]

7.2. Резервирование с индивидуальными опциями

Можно задать специфические опции для конкретного устройства (например, другой DNS) :

"reservations": [
    {
        "hw-address": "00:0c:29:e5:f5:43",
        "ip-address": "192.168.1.201",
        "option-data": [
            {
                "name": "domain-name-servers",
                "data": "10.0.0.11"
            }
        ]
    }
]

7.3. Резервирование по client-id

Некоторые устройства используют client-id вместо MAC-адреса:

"reservations": [
    {
        "client-id": "01:52:54:00:9d:05:35",
        "ip-address": "192.168.1.202",
        "hostname": "ubuntu-client"
    }
]

Важно: IP-адреса резервирований должны находиться вне динамического пула, чтобы избежать конфликтов. В примере выше пул начинается со 100, а резервирования — 10 и 20.

🔗 Будущая статья: Массовое резервирование IP в Kea через базу данных

8. Настройка нескольких подсетей и VLAN

Kea может обслуживать несколько подсетей (например, разные VLAN) одновременно. Для этого добавьте несколько блоков в массив subnet4.

8.1. Пример для двух подсетей

"subnet4": [
    {
        "id": 1,
        "subnet": "192.168.1.0/24",
        "pools": [{ "pool": "192.168.1.100 - 192.168.1.200" }],
        "option-data": [
            { "name": "routers", "data": "192.168.1.1" }
        ]
    },
    {
        "id": 2,
        "subnet": "192.168.2.0/24",
        "pools": [{ "pool": "192.168.2.100 - 192.168.2.200" }],
        "option-data": [
            { "name": "routers", "data": "192.168.2.1" }
        ]
    }
]

8.2. Работа с VLAN через DHCP Relay

Если Kea находится в одной VLAN, а клиенты — в других, необходимо настроить DHCP Relay (IP Helper) на маршрутизаторе. Kea автоматически определит подсеть по IP-адресу Relay (GIADDR) и выдаст адрес из соответствующего пула.

🔗 Будущая статья: Настройка DHCP для нескольких VLAN через IP Helper

9. Управление через kea-shell и REST API

Одно из главных преимуществ Kea — возможность перезагружать конфигурацию без остановки сервера через API.

9.1. Перезагрузка конфигурации через kea-shell

Если у вас настроен kea-ctrl-agent и задан пароль, выполните:

kea-shell --host 127.0.0.1 --port 8000 --auth-user kea-api --auth-password $(cat /etc/kea/kea-api-password) --service dhcp4 config-reload

После ввода команды нажмите Ctrl+D. Успешный ответ:

[ { "result": 0, "text": "Configuration successful." } ]

9.2. Проверка статуса через API

kea-shell --host 127.0.0.1 --port 8000 --auth-user kea-api --auth-password $(cat /etc/kea/kea-api-password) --service dhcp4 status-get

9.3. Альтернативный способ: перезапуск службы

Если REST API не нужен, можно просто перезапустить службу:

sudo systemctl restart kea-dhcp4-server

🔗 Будущая статья: Kea REST API: автоматизация управления DHCP

10. Просмотр аренд (leases) и мониторинг

Kea хранит информацию о выданных IP-адресах в файле /var/lib/kea/kea-leases4.csv :

sudo cat /var/lib/kea/kea-leases4.csv

Пример вывода:

address,hwaddr,client_id,valid_lifetime,expire,subnet_id,fqdn_fwd,fqdn_rev,hostname,state
192.168.1.100,00:0c:29:e5:f5:43,01:00:0c:29:e5:f5:43,3600,1741827897,1,0,0,client1,0

10.1. Мониторинг через журнал

sudo journalctl -u kea-dhcp4-server -f

Или через syslog:

sudo tail -f /var/log/syslog | grep kea

10.2. Настройка логирования в файл

В конфигурацию можно добавить отдельный файл логов:

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

Не забудьте создать директорию для логов:

sudo mkdir -p /var/log/kea
sudo chown _kea:_kea /var/log/kea

11. Отладка и устранение неполадок

11.1. Частые ошибки

Ошибка 1: «Kea не запускается»

  • Причина: Синтаксическая ошибка в JSON-файле (лишняя запятая, незакрытая скобка).
  • Решение: Проверьте конфигурацию: sudo kea-dhcp4 -t -c /etc/kea/kea-dhcp4.conf.

Ошибка 2: «Нет интерфейса»

  • Причина: Указан несуществующий интерфейс в interfaces-config.
  • Решение: Узнайте правильное имя интерфейса командой ip link show и исправьте.

Ошибка 3: «Клиенты не получают IP»

  • Причина: Другой DHCP-сервер в сети или файрволл блокирует порты 67/68.
  • Решение: Проверьте наличие других DHCP-серверов, откройте порты в UFW.

11.2. Проверка наличия других DHCP-серверов

sudo tcpdump -i eth0 -n port 67 or port 68

11.3. Настройка UFW для Kea

sudo ufw allow 67/udp
sudo ufw allow 68/udp

12. Миграция с ISC DHCP на Kea

Если у вас есть существующая конфигурация ISC DHCP (/etc/dhcp/dhcpd.conf), её необходимо переписать в формат JSON. ISC предоставляет утилиту kea-admin для миграции, но часто проще настроить Kea вручную.

12.1. Основные соответствия параметров

ISC DHCP (dhcpd.conf)Kea (kea-dhcp4.conf)
subnet 192.168.1.0 netmask 255.255.255.0"subnet": "192.168.1.0/24"
range 192.168.1.100 192.168.1.200;"pools": [{"pool": "192.168.1.100 - 192.168.1.200"}]
option routers 192.168.1.1;"option-data": [{"name": "routers", "data": "192.168.1.1"}]
default-lease-time 600;"valid-lifetime": 600
host printer { hardware ethernet ...; fixed-address ...; }"reservations": [{"hw-address": "...", "ip-address": "..."}]

12.2. Перенос файла аренд

Файл аренд ISC DHCP (/var/lib/dhcp/dhcpd.leases) имеет другой формат. Kea не умеет его читать. Рекомендуется:

  1. Остановить ISC DHCP.
  2. Настроить Kea с нуля.
  3. Клиенты получат новые аренды.

🔗 Будущая статья: Пошаговая миграция с ISC DHCP на Kea

13. Заключение и ссылки на будущие статьи

Мы подробно разобрали настройку Kea DHCP на Ubuntu — современную замену устаревшему ISC DHCP. Вы научились устанавливать Kea, настраивать пулы адресов, резервирования по MAC, опции DNS и шлюза, управлять сервером через REST API и отлаживать работу.

Ключевые выводы:

  • Kea — это будущее DHCP. ISC DHCP больше не поддерживается.
  • Конфигурация в формате JSON требует внимательности к синтаксису (запятые, скобки).
  • Всегда проверяйте конфигурацию командой kea-dhcp4 -t перед перезапуском.
  • REST API позволяет перезагружать конфигурацию без остановки сервера.

Следующие статьи из серии (обновляются):

Если вы искали современное руководство по настройке Kea DHCP на Ubuntu — эта статья дала вам все необходимые примеры. Успешной настройки вашей сетевой инфраструктуры!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *