Найти в Дзене

Установка DHCP сервера Kea в Astra Linux 1.8

Привет! Довольно долгое время одним из популярных опенсорсных DHCP серверов был isc-dhcp - разрабатываемый Internet Systems Consortium(ISC). Но уже долгое время его авторы переключились на новое решение Kea DHCP. В репозиториях Астры этот пакет присутствует, и его легко можно поставить на замену ISC. Одно из преимуществ - модульность системы, а также возможность хранения данных в базе данных (MySQL, PostgreSQL). В этой статье мы немного потрогаем Kea DHCP, чтобы понять, что он из себя представляет. Важный нюанс! Конфигурационный файл kea использует синтаксис JSON, так что для более приятного восприятиям (и тем более чтобы не запутаться во всех этих скобках), рекомендуется править его в каком-нибудь редакторе кода, например VS Code. Итак. Первым делом установим пакет sudo apt install kea После установки этого мета пакета у нас появятся 4 сервиса. kea-dhcp4-server - DHCP сервер для ipv4 kea-dhcp6-server - DHCP сервер для ipv6 kea-ctrl-agent - Rest API сервиc. (По умолчанию на 8000 порте)

Привет!

Довольно долгое время одним из популярных опенсорсных DHCP серверов был isc-dhcp - разрабатываемый Internet Systems Consortium(ISC). Но уже долгое время его авторы переключились на новое решение Kea DHCP.

В репозиториях Астры этот пакет присутствует, и его легко можно поставить на замену ISC. Одно из преимуществ - модульность системы, а также возможность хранения данных в базе данных (MySQL, PostgreSQL).

В этой статье мы немного потрогаем Kea DHCP, чтобы понять, что он из себя представляет.

Важный нюанс!

Конфигурационный файл kea использует синтаксис JSON, так что для более приятного восприятиям (и тем более чтобы не запутаться во всех этих скобках), рекомендуется править его в каком-нибудь редакторе кода, например VS Code.

Итак. Первым делом установим пакет

sudo apt install kea
-2

После установки этого мета пакета у нас появятся 4 сервиса.

kea-dhcp4-server - DHCP сервер для ipv4

kea-dhcp6-server - DHCP сервер для ipv6

kea-ctrl-agent - Rest API сервиc. (По умолчанию на 8000 порте)

kea-dhcp-ddns-server - служба динамического обновления DNS.

Ненужные сервисы можно отключить, например dhcp6

sudo systemctl stop kea-dhcp6-server
sudo systemctl disable kea-dhcp6-server

После этого останется только настроить сервер в конфигурационном файле. Путь к нему:

/etc/kea/kea-dhcp4.conf

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

Обратите внимание на количество открывающих и закрывающих скобок в своем конфиге. На запятые. Скриншоты не показывают весь код целиком.
Обратите внимание на количество открывающих и закрывающих скобок в своем конфиге. На запятые. Скриншоты не показывают весь код целиком.

Первым делом описываем сам сервер:

"valid-lifetime": 86400,
"renew-timer": 43200,
"rebind-timer": 75600,

Описываем время аренды адреса.

"interfaces-config": {
"interfaces": [ "enp0s3" ]
}

Интерфейсы, на которых DHCP-сервер должен слушать. В данном примере интерфейс - enp0s3, если нужно указать несколько, они указываются там через запятые.

"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
}

Что собственно запускать, какой сокет.

"lease-database": {
"type": "memfile",
"lfc-interval": 3600
}

Где хранить базу данных выбранных адресов. В данном примере - в локальном файле (csv), на выбор еще базы данных MySQL или PostgreSQL. PostgreSQL подключим ниже.

-4

Опционально - добавляем PXE-сервер, если он присутствует в сети. Если нет, эту опцию можно не включать в свой конфиг.

Дальше описываем подсеть для аренды:

-5

Параметр subnet указывает на подсеть. Пул арендованных адресов указывается в поле pools. Если нужно указать несколько пулов, они так же указываются через запятую. Все опции DHCP указываются в поле option-data. В данном примере указывается шлюз подсети, DNS-сервера, имя домена.

И последнее поле reservations служит для резервирования. Соответственно как видно указывается MAC и IP адреса.

Полный листинг доступен - вот тут

После этого можно проверить конфиг-файл командой, чтобы посмотреть что нет никаких ошибок:

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

Перезагружаем сервис и смотрим статус:

sudo systemctl restart kea-dhcp4-server.service && sudo systemctl status kea-dhcp4-server.service

Теперь арендованные адреса можно посмотреть в csv-файле по пути.

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

А как дальше работать с csv файлом это уже на что хватит вашей фантазии.

Подключаем PostgreSQL для хранения выданных адресов.

Оставим за кадром установку и настройку PostgreSQL. Скажу только что для примера была создана база данных dhcp.

Подготовим базу данных через команду kea-admin

sudo kea-admin db-init pgsql -u <пользователь> -p <пароль> -n <имя БД>

-8

В самом конфигурационном файле kea меняем поле, где указывали хранение в локальном файле - на хранение в базе.

-9

Как видно выше указывается тип БД, имя базы, хост, юзер и пароль. Все это в опции lease-database.

Перезагружаем сервис, и смотрим внутри базы в таблицу lease4.

-10

Как видите из нюансов - ip адрес указан в поле с форматом bigint, а мак адрес и клиент ид в bytea. Поэтому вам стоит либо колхозить расшифровку напрямую с запросом базы данных, как пример:

select '0.0.0.0'::inet + address as address, encode(hwaddr, 'hex') as hwaddr, *  from lease4;

И на выходе получить:

-11
-12

Либо использовать какие либо доп. средства. К примеру - kea-list-leases

Чтоб использовать этот пакет, скачиваем его. Затем доустанавливаем библиотеку для питона для соединения с PgSQL

sudo apt install python3-psycopg2

В конфиг файле рядом с питон скриптом kea-list-leases.conf так же указываем путь к базе, юзера и пароль. Затем запускаем скрипт.

python3 kea-list-leases.py
-13

Вот и все. Базовую первичную настройку Kea в этой статье мы выполнили.