|
Печальная история началась с того, что мой коллега решил запробовать RIS (нечто,
что должно облегчить жизнь страдающим) — Remote Installation Service
— которая является вариантом использования PXE
(ссылка взята с этой
странички).
Конфигурация сети была почти очень простой.
[ dhcp/ris server network ]
|
de1
openbsd router
de2
|
[ network of interest ]
Здесь нужно сказать, что ничего принципиального в использовании OpenBSD в качестве операционной системы на
рутере не было: просто один знакомый дьявол (здесь его страничка) нашептывал,
что есть еще вот такая операционная система, а незадолго перед этим (разве
полгода это долго?) он каким-то образом сумел донести до меня дистрибутив этой
операционной системы.
Поставив пакет dhcp (кажется, он так назывался) и запустив его должным образом, мы увидели,
что ничего не работает (мы максималисты, поэтому работспособность собственно релея нас не очень
интересовала, ибо RIS как-то не работал).
Посмотрев на версию софта в пакете, а затем заглянув на сайт
создателей софта, я увидел, что у меня есть шанс решить проблемы путём скачивания
последней версии, компиляции и установки. Что я с радостью и проделал. Ситуация не изменилась:
dhcp-клиенты получали свои адреса, RIS не работает.
Предположив, что все плохо (свежее предположение), мы проверили, что RIS
таки работает для клиентов, находящихся в той же подсетке.
Впихнув на место рутера компутер с Windows 2000, на котором были настроены
соответствующие сервисы, мы с удивлением увидели, что RIS стал работать и для
клиентов, находящихся в другой подсетке.
С этого момента, остался только я.
Вооружившись анализатором траффика, я
обнаружил, что dhcp-relay, который идет в составе Windows 2000 сервера,
переправляет запрос, указывая в поле адреса релея, адрес интерфейса, на котором
был получен запрос, тогда как программа dhcrelay указывала адрес
интерфейса, куда переправлялся запрос. Значения других полей были одинаковы.
Единственное разумное предположение (которое как-то поддерживалось статьями в MSDN)
состояло в том, что если DHCP-сервер и RIS-сервер запущены на одном компутере,
они не могут правильно разобраться, кто и как должен обрабатывать запросы.
В силу того, что меня интересовал весьма конкретный результат, я покорпел
над исходниками программы dhcrelay и создал "заплатку", которая заставляет запросы уходить с
адресом источника, который не смущал бы тандем DHCP-RIS на одном сервере.
"Заплата" была сделана для программы DHCP версии 3.0rc10. Я не уверен,
что он приложится без проблем для более новых версий.
Внимание: указанная заплатка работает у меня™ (как следует из
сообщения, которое находит гугл, работает с
августа 2001 года). Я не могу гарантировать, что у вас все заработает после
использования этого подхода. Однако, где-то с год назад человек, которому я
отправил по почте эту "заплатку", порадовал меня известием, что у него RIS
также заработал после ее использования.
|