Назад | Перейти на главную страницу

Назначение блоков DHCP на лету

У нас есть большое количество клиентов, которые подключаются к нашей машине DHCP. Мы хотим назначить некоторые из них другому блоку IP, который маршрутизируется с более низким приоритетом. При каждом продлении аренды DHCP мы хотели бы проверять базу данных и решать, какой блок IP-адресов мы хотели бы назначить клиенту.

Есть ли способ заставить DHCP-сервер выполнять сценарий, просматривать базу данных или выполнять некоторый динамический код при принятии решения, какой адрес назначить в каком пуле? Каждый клиент однозначно идентифицируется с помощью опции 82, также известной как «Опция информации агента ретрансляции DHCP».

Так что я не делал этого с опцией 82, но лучше всего использовать классификацию в isc dhcpd.

Что бы вы сделали, так это настроить такой класс, как:

class "userclass1" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id1>";
}
class "userclass2" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id2>";
}

Затем в вашем заявлении о пуле:

pool {
  allow members of "userclass1";
  range 10.0.0.11 10.0.0.50;
}
pool {
   allow members of "userclass2";
   range 10.0.0.51 10.0.0.100;
}

Ссылка: dhcpd.conf

Это должно, по крайней мере, направить вас на правильный путь, у меня нет своего игрового сервера, чтобы протестировать его, но я сделал нечто подобное с другими опциями.

В идеале вы должны модифицировать dhcpd для поддержки назначения адресов на основе Option82, что эквивалентно строкам «оборудования» в объектах хоста. Я сделал это с помощью OpenBSD dhcpd, когда работал у интернет-провайдера, который имеет более простую внутреннюю структуру, чем isc-dhcpd.

Если вы не в состоянии сделать это, посмотрите на omapi (3) и omshell (1); вы должны использовать OMAPI для динамического создания объектов «класса» и «пула», чтобы реализовать предложение Zypher. Я только что проверил dhcpd.h и class структура имеет OMAPI_OBJECT_PREAMBLE, так что это должно быть возможно. Помните, что документация по OMAPI может быть немного ... скудной.

Может быть, вы можете начать отсюда:

http://blog.nominet.org.uk/tech/2005/12/21/using-omapi-object-management-application-programming-interface/

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

РЕДАКТИРОВАТЬ

man omshell (1) может привести еще несколько примеров

Один из способов сделать это - назначить этих клиентов отдельной VLAN, тогда DHCP-адрес, который получают эти клиенты, автоматически будет в другом пуле.