Kea-dhcp-server - это проект ребят из компании internet systems consortium, которые так же успешно пилят BIND, который мы будем настраивать в следующей части. Изначально их детище для выдачи IP-адресов имело название isc-dhcp-server, но парни посчитали, что код слишком сложен и внося какие-либо изменения в проект, можно что-то да наебнуть. В связи с чем, по состоянию на момент написания этой статьи, проект ещё много где используется, но уже в статусе EOL. Исходя из этого, было принято решение, положить болт на проект и замутить стартап, название которого красуется в заголовке этого поста.
Предлагаю закончить отступать лирически и приступить к практике.
Основные модули DHCP-сервера kea следующие:
kea-dhcp4 - раздача адресов ipv4
kea-dhcp6 - раздача адресов ipv6
kea-dhcp-ddns - динамическое обновление записей о выданных адресах на DNS-сервере
kea-admin - обслуживание БД сервера
kea-lfc - удаление избыточной информации из memfile БД
kea-ctrl-agent - api-интерфейс для управления сервером
perfdhcp - замер производительности сервера
Учитывая мою склонность к минимализму (к чему я Вас всех призываю), предлагаю не ставить всё до кучи. Нас, на данный момент, интересует пока что один модуль - kea-dhcp4. Установим его.
apt install kea-dhcp4-server
Вместе с установкой, по пути /etc/kea прилетает базовый конфиг kea-dhcp4.conf, сопровождающийся комментариями. Я обычно делаю его копию на всякий пожарный, а оригинал обнуляю.
cp /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.original > /etc/kea/kea-dhcp4.conf
Синтаксис конфига в формате JSON. Набросаем минимум
{
"Dhcp4":
{
"valid-lifetime": 600,
"renew-timer": 300,
"rebind-timer": 540,
"interfaces-config": {
"interfaces": [ "enp3s0" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"lfc-interval": 1800
},
"subnet4": [
{
"id": 1,
"subnet": "192.168.1.0/24",
"pools": [
{"pool": "192.168.1.2 - 192.168.1.254"}
],
"option-data": [
{
"name": "routers",
"data": "192.168.1.1"
},
{
"name": "domain-name-servers",
"data": "192.168.1.1"
},
{
"name": "domain-name",
"data": "example.com"
},
{
"name": "domain-search",
"data": "example.com"
}
],
"reservations": [
{
"hw-address": "3a:1b:7c:1d:9e:2f",
"ip-address": "192.168.1.15"
}
]
}
]
}
}
Разберём параметры
Первые три описывают время аренды адреса
valid-lifetime - время аренды (в секундах)
renew-timer - время, когда устройство начинает запрашивать продление аренды
rebind-timer - время, если по истечении которого, не удалось продлить аренду, устройство начинает запрашивать новый IP-адрес.
Рассчитывается по формуле
valid-lifetime = 100%
renew-timer = половина от 100%. То есть 50%
rebind-timer = 7/8 от 100%. Примерно 87% - 88%
В параметре interfaces-config указывается интерфейс, который будет принимать запросы от устройств. Если интерфейсов больше, то перечисление осуществляется через запятую
control-socket указывает тип и расположение сокета
lease-database оперделяет тип хранения БД выданных IP-адресов. В нашем случае это файл, который будет расположен по пути /var/lib/kea/dhcp4.leases, но можно использовать СУБД.
Затем определяем подсеть с её id. Если не указать идентификатор, то он будет присвоен автоматически.
Пул выдаваемых адресов
Далее определим опции - адрес шлюза, DNS-сервера, имя и поисковый домен
Ну и зарезервируем устройство
Проверим на валидность наш конфиг
kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
Если всё заебись, то рестартуем сервис и радуемся выдаче IP-адресов
systemctl restart kea-dhcp4-server