У нас есть учебные комнаты, где обычно установлена Windows XP (через PXE). «Нормальной» инфраструктурой DNS / DHCP являются Windows-серверы. Учебная комната имеет собственную VLAN (отличную от серверов Windows), поэтому наиболее вероятно, что IP-помощник для запросов DHCP активен на маршрутизаторе Cisco, к которому подключены все ПК из этой комнаты.
Теперь мы хотели конвертировать некоторые ПК в Linux. Идея заключалась в следующем: поместите наш собственный ноутбук с сервером DHCP в VLAN комнаты и переопределите «нормальный» ответ DHCP. Идея заключалась в том, что это должно работать, поскольку непосредственно подключенный DHCP-сервер в этой VLAN должен иметь более быстрое время отклика, чем «обычный» DHCP-сервер, расположенный в нескольких шагах от этой VLAN.
Оказалось, что это не сработало. Нам пришлось вручную снять аренду на исходном DHCP-сервере, чтобы он заработал.
На ноутбуке мы увидели, что клиент запрашивает IP, и «наш» dhcp отправлял NACK на запрос Windows IP, прежде чем мы предложили наш собственный ответ.
Старый вопрос: почему это не сработало, как ожидалось? Что заставляет ПК вернуть себе старую аренду?
Обновление 2012-08-08:
Проблема восстановления была объяснена в DHCP-RFC. Теперь это объясняет, почему ПК восстанавливает свою старую аренду.
Теперь мы освобождаем IP-адрес от Windows-DHCP-сервера, прежде чем дать ему еще одну попытку.
Опять же - Windows-DHCP-сервер побеждает.
Я подозреваю, что существует некоторый алгоритм для dhcp-клиента, который определяет «лучший» dhcp-ответ для клиента. Новый вопрос:
Как клиент выбирает «лучший» ответ?