Развлечение с RIS

 Заплатка
 o загрузить

 навигация
 o обратно
 o в корень

Печальная история началась с того, что мой коллега решил запробовать 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 также заработал после ее использования.