Воспроизводимые адреса DHCP

Воспроизводимые адреса DHCP

У меня есть устройство на базе микроконтроллера с загрузчиком и приложением. Устройство имеет один адаптер Ethernet. Загрузчик использует IP/UDP для прошивки образа приложения. Приложение имеет полнофункциональный стек TCP/IP.

Оба компонента используют DHCP для получения IP-адреса. Странно, что оба получают разные результаты в процессе DHCP. Оба DHCP-клиента настроены на использование сообщения DHCPDISCOVER с одним и тем же MAC-адресом.

Что должен отправлять DHCP-сервер в DHCPOFFER? Должен ли он предлагать тот же IP-адрес для того же MAC-адреса, когда IP-адрес не назначен в другом месте?Редактировать: Последнее назначение адреса было 10 секунд назад.

DHCP-сервер работает на хосте Linux. Как мне настроить такой автомобиль, чтобы я мог отслеживать и понимать это поведение?

Редактировать: У меня нет контроля над конфигурацией DHCP-сервера. Администратор хочет сохранить полный контроль.

Существуют ли другие настройки DHCP в загрузчике или приложении, которые могут повлиять на результат DHCP?

решение1

Это зависит от настройки времени аренды. Если оно достаточно долгое, то ваше приложение получит тот же адрес.

Но если вам нужна уверенность, то укажите фиксированный адрес для вашего Mac на сервере.

Если вы используете dhcpd, то что-то вроде этого:

host foo {
  hardware ethernet 00:11:22:33:44:55;
  fixed-address 1.2.3.4;
}

На самом деле да, есть способ предложить IP в DHCPDISCOVERY, установив опцию (50) requested IP address. Но я не знаю, принимают ли это серверы.

Также есть опция (51) IP address lease time, которую можно использовать в загрузчике, чтобы указать более длительный период, но я также не уверен в ответе сервера.

Больше информацииrfc2131

решение2

Когда клиент DHCP отправляет DHCPDISCOVER, сервер должен отменить регистрацию DHCP. Есть серверы, которые получат тот же IP-адрес. Это не неправильно, но даже не обязательно.

Чтобы сохранить адрес DHCP, клиент должен отправить DHCPACQUIRE с кэшированной конфигурацией IP. DHCP-сервер подтвердит или отклонит. Отправка DHCPDISCOVER в этой ситуации просто плохая идея.

Связанный контент