Статическая маршрутизация посредством dhcp

Администраторы большинства локальных сетей, в которых интернет раздается по протоколу pptp или знакомы с проблемой маршрутов на локальные ресурсы. В большинстве случаев это решается прописыванием маршрутов на каждой рабочей станции вручную или с помощью специального скрипта. Но я хотел большей автоматизации, т.к. обучить пользователей выполнять этот скрипт только один раз, обнулять таблицу статических маршрутов и пр. представлялось задачей невыполнимой.

Я начал читать информацию о протоколе dhcp, совместно с документацией по isc-dhcpd и мои труды вскоре были вознаграждены.

Протокол dhcp позволяет размещать в сообщениях довольно много различной информации. Каждый такой кусочек имеет свой идентификационный номер — code. Согласно RFC3442 значение code для раздачи статических маршрутов должно быть равно 121. Однако и тут было не все так просто. Несмотря на то, что стандарт существует, маршруты нормально раздавались только машинам на *nix операционных системах, а также мобильным устройствам. Машины с windows упорно продолжали игнорировать отсылаемые им данные. Как оказалось корпорация Microsoft пошла своим путем и статическая маршрутизация отмечается у них кодом 249.

Теперь о dhcp-сервере. Тут все довольно просто. В начале конфигурационного файла нужно добавить нужное число конструкций вот такого вида:

option <псевдоним, который будет использоваться в конфиге> code <соответствующий номер> = <тип данных>;

В моем случае были объявлены следующие записи:

option ms-classless-static-routes code 249 = array of unsigned integer 8;
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

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

option ms-classless-static-routes 24, 192,168,14, 192,168,11,2, 24, 192,168,21, 192,168,11,2, 24, 192,168,22, 192,168,11,2, 24, 192,168,23, 192,168,11,2;

Рассмотрим как же происходит формирование этой строки:

option <псевдоним для описанной выше структуры данных> <маска подсети>, <имя подсети (без нолика на конце)>, <адрес шлюза>, <маска подсети>, <имя следующей подсети>, и т.д.    ;

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

Запись опубликована в рубрике Программное обеспечение, Работа с метками , , , , , , , . Добавьте в закладки постоянную ссылку.

Комментарии запрещены.