LINUX.ORG.RU

dhcp: API для управления конфигурацией сервера

 ,


0

1

Имеется dhcp сервер со следующей конфигурацией (передает данные клиенту в option-43):

option space my-space;
option my-space.node-ip code 1 = ip-address;
option my-space.node-name code 2 = text;

class "vendor-classes" {
        match option vendor-class-identifier;
}

subclass "vendor-classes" "my-class" {
        vendor-option-space my-space;
        option my-space.node-ip 10.5.6.7;
        option my-space.node-name "NodeName123";
}

Адрес указанный в option my-space.node-ip может назначаться динамически, то есть нужен механизм позволяющий менять конфигурацию сервера на лету.

На ум приходит два варианта:

1. Скрипт на dhcp-сервере - получающий новый IP адрес, меняющий конфиг и рестартующий демон. Но IMHO решение не элегантное, не атомарное.

2. Мне известно о OMAPI (http://www.ipamworldwide.com/ipam/isc-dhcp-api.html). Пробежался по документации, но как я понял поддерживаются только lease objects (release and renew), host objects, group и failover-state, и также graceful shutdown of the server. Но не похоже что OMAPI дает доступ к option space?

Если кто сталкивался с подобным, был бы рад услышать!

★★

isc не умеет в управление конфигурацией без перезапуска.

смотри на его потомков. как их уж… kea

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

нет.

omapi - редкий ублюдок, но есть и после патчей можно пользоваться.

Но kea в этом отношении - большой шаг вперед. Там можно менять на ходу огромные куски конфига. И все через rest-api!

Но вот мелкие изменения оно делать не умеет.

vel ★★★★★
()
Ответ на: комментарий от vel

Но kea в этом отношении - большой шаг вперед. Там можно менять на ходу огромные куски конфига. И все через rest-api!

может ли KEA помочь в моем случае? (редактирование опций)

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Посмотри на kea.

Он точно умеет на ходу релоадить весь конфиг.

Он точно умеет обновлять части конфига.

Все через rest-api.

https://kea.readthedocs.io/en/latest/arm/ctrl-channel.html

Возможно есть другой вариант: https://kea.readthedocs.io/en/latest/arm/classify.html

Теоретически можно сделать набор опции с разными IP и выбирать их по классам, а классы назначать внешними средствами (например из отдельного файла). Я для своих нужд сделал плагин который умеет добавлять классы на основании параметров запроса и файловой системы (https://github.com/vel21ripn/flex-id).

Сейчас не готов привести готовый рецепт, т.к. я пока не понял как проверять членство в классах которые не описаны в конфиге.

vel ★★★★★
()
Ответ на: комментарий от cruz7

Нет, через классификацию нельзя.

vel ★★★★★
()
Ответ на: комментарий от cobold

А может всё-таки что-то типа etcd?

А как это может помочь? Можно пример?

cruz7 ★★
() автор топика
Ответ на: комментарий от stels

может freeradius, а нужные опции держать в мускуле

Поддерживаю. freeradius это умеет. Еще внутри фрирадиуса можно запустить скрипт и им генерировать нужные данные на лету, лет 12 назад я так делал это с со скриптом на Perl.

dvetutnev
()
Ответ на: комментарий от vel

Посмотри на kea. Он точно умеет на ходу релоадить весь конфиг. Он точно умеет обновлять части конфига.

Установил kea и перенес на него свой конфиг из isc-dhcp, вроде все завелось и заработало. Теперь бьюсь с изменением части конфига на лету. В документации предлагают либо kea-shell либо например curl.

В kea есть только config-set для замены всей текущей конфигурации, а не только фрагмента. Или я что-то упустил?

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

Нет, не упустил. Я не обратил внимание, что это платный плагин host_cmds. И то, он только с подсетями и резервированием работает :(

Замены опций я вообще нигде не видел.

т.к. kea не поддерживает include в конфиге, то единственный путь - это генерация такого конфига. Кстати это очень просто. Перегрузка такого конфига значительно быстрее, чем рестарт isc dhcp.

Есть еще 3 пути:

kea умеет брать конфигурацию из базы данных типа mysql/postgres. БД нужна только на момент загрузки конфигурации. lease хранить в memfile.

Посмотреть на плагин https://github.com/davejohncole/kea_python (если знаешь питон)

Написать простенький плагин самому.

vel ★★★★★
()
Ответ на: комментарий от vel

единственный путь - это генерация такого конфига. Кстати это очень просто.

Вы имеете в видучто-то вроде json-schema и на его основе генерировать конфиг. Питоном владею, не так чтобы свободно, но разобраться в принципе могу.

Перегрузка такого конфига значительно быстрее, чем рестарт isc dhcp.

А какие еще плюсы у релоада конфига вместо рестарта всего демона? Атомарность операции или еще что-то?

cruz7 ★★
() автор топика
Ответ на: комментарий от cruz7

А какие еще плюсы у релоада конфига вместо рестарта всего демона? Атомарность операции или еще что-то?

imho только время.

У меня от питона рвотный рефлекс, т.ч. я обычно обхожу его стороной, если нет других решений.

Если знаешь питон и хочется красивого решения, то смотри плагин питона и сделай команды замены значений в опциях. Там в качестве примера есть реализация host_cmds, который isc за деньги продает. У kea есть вся документация необходимая для разработки. Плюс к этому несколько готовых плагинов, в которых можно подсмотреть код.

vel ★★★★★
()
Ответ на: комментарий от vel

Если знаешь питон и хочется красивого решения, то смотри плагин питона и сделай команды замены значений в опциях.

Там в качестве примера есть реализация host_cmds

Почитал про хуки в KEA, посмотрел немного в код. Как я понял механизм хуков позволяет расширять команды KEA, либо запускаться в определенных hook points (например. run_script) ?

cruz7 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.