У нас есть учебные комнаты, где обычно установлена 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-ответ для клиента. Новый вопрос:
Как клиент выбирает «лучший» ответ?
источник
Ответы:
Это зависит от производителя, даже от прошивки, как клиент реагирует на несколько ответов DHCP.
Варианты, которые я видел за эти годы:
1) Примите первый независимо от того, ACK или NACK.
2) Возьмите первый ACK, полностью игнорируйте NACK.
3) Возьмите последний ACK, полученный в течение установленного интервала времени (обычно 5-10 секунд).
Пример: несколько лет назад у нас были проблемы с МФУ Ricoh.
У нас было 2 DHCP-сервера. Один предоставил адреса, другой только дополнительные параметры DHCP. 2-й сервер всегда отвечал первым.
Используемый Ricoh вариант 1), даже если 1-е предложение содержало только параметры DHCP. Ricoh изменил его на вариант 2) с обновлением прошивки после того, как мы объяснили им проблему.
источник
OFFER
пакеты , что система клиента необходимости решить между ними.ACK
иNACK
пакеты отправляются только в ответ на aREQUEST
, что происходит только после того, как клиент «решил», какое предложение продолжить. Это довольно крутая ошибка с принтерами!Предполагая, что маршрутизатор все еще действует как ретранслятор DHCP и пересылает запрос на ваш исходный сервер, тогда причина, по которой он это сделал, заключается просто в том, что DHCP-сервер Windows велел ему продолжать и использовать IP-адрес. В этом случае DHCPNACK с нового сервера не имеет значения, так как клиент DHCP будет учитывать все ответы, и, поскольку он получил предложение от Windows DHCP box, он совершенно счастлив использовать его.
источник
Если больше ничего не помогает - RTFM (прочитайте прекрасное руководство). В этом случае первым был хит.
RFC 2131 описывает DHCP-операции.
Раздел 1.6 гласит, что DHCP должен :
Теперь интересный вопрос заключается в том, как эта цель дизайна достигается на клиенте, который не знает своего прошлого. Раздел 3.2 описывает:
Таким образом, DHCP-сервер с активной арендой получает приоритет с помощью ярлыка в протоколе.
С этого момента ноутбук-DHCP-сервер игнорируется клиентом.
Таким образом, решение в нашем случае, вероятно, будет (я обновлю это, когда мы действительно протестируем это):
источник
Новый вопрос, вероятно, должен быть в другом вопросе - название вопроса совсем не соответствует большей части вопроса.
В любом случае, в отношении того, как клиент выбирает, какое предложение использовать, в случае, когда у него нет текущей аренды: это зависит от клиента, но в каждой реализации DHCP-клиента, о которой я знаю, это простая гонка. ,
RFC 2131 охватывает это:
Есть черновик IETF , который кажется мертвым, который бы добавил настраиваемость в процесс выбора, а также упоминает слабые реализации клиента (более десяти лет назад, но мало что изменилось):
Наличие двух серверов DHCP, предоставляющих услуги одной и той же сети с разной конфигурацией, приводит к гонкам, что нежелательно с точки зрения надежности или предсказуемости. На самом деле нет причин, по которым вы не можете заставить свой единственный DHCP-сервер предоставлять то, что вам нужно.
источник