Jump to content
    

Автоматическое переключение в режим DHCP сервера? (LWIP)

Доброго времени!

Каким образом устройства пром. автоматики при прямом подключении патчкордом к ПК определяют, что нужно перейти в режим DHCP сервера?

Обычно так сделано для удобной первоначальной конфигурации устройств.

Share this post


Link to post
Share on other sites

Чтобы не копировать много букв ибо правильного ответа в двух словах на этот вопрос нет - вот тут можно получить достаточно развернутый ответ https://lmarena.ai

Share this post


Link to post
Share on other sites

1 hour ago, groundbreakingfox said:

для удобной первоначальной конфигурации устройств.

может потому что они в таком режиме (или при сбросе в default) отгружаются от производителя?

Share this post


Link to post
Share on other sites

(изменено)

LwIP по умолчанию реализован механизм автоопределения линка (link-local autoconfiguration) через протокол APIPA (Automatic Private IP Addressing). Вот как это работает:

  1. При старте интерфейса LwIP пытается получить адрес по DHCP
  2. Если DHCP-сервер не отвечает (что происходит при прямом подключении патч-кордом к ПК), включается режим AUTOIP
  3. В этом режиме устройство случайным образом выбирает адрес из диапазона 169.254.1.0/16
  4. Одновременно с этим запускается протокол ARP-зондирования, чтобы убедиться в уникальности выбранного адреса
  5. После успешного назначения адреса устройство может быть доступно по этому адресу

Этот механизм реализован в файле autoip.c стека LwIP и включается при определении макроса LWIP_AUTOIP (обычно по умолчанию включен).

Share this post


Link to post
Share on other sites

2 minutes ago, Stepanov said:

ибо правильного ответа в двух словах на этот вопрос нет

да почему же нет?

там простой и понятный алгоритм, а не в стиле чатгпт "ой, извините, вы действительно правы, что операцию на аппендицит надо делать с правой стороны, а не с левой. Я сейчас всё переделаю".

Не получили dhcp ответ - берём фиксированный ip, описанный в документации. Или два ip из двух разных сетей.

ещё один вариант - multihoming когда на интерфейсе несколько ip адресов и один из них получаем по dhpc

Если устройство уже было настроено, но штатно не работает, то по истечении таймаута обмена также может быть иницирован протокол входа в инициализацию (dhcp или автоконфигурирование).

p.s. надо только иметь в виду, что если это не промышленный интернет, а общедоступная сеть (какой-нибудь конвертор для проброса протокола через IP) - такое поведение чревато. Обязательно найдётся ленивый инженер, который не прочитав документацию воткнёт голой жопой такой контроллер, а там пароль admin/admin или уже настроенный контроллер штатно известной последовательностью можно переконфигурировать на новые настройки и получить полный доступ.

Share this post


Link to post
Share on other sites

22 minutes ago, kpv said:

там простой и понятный алгоритм,

 

Вы описываете устройство как DHCP‑клиента, а на самом деле устройство действует как DHCP‑сервер при первоначальной конфигурации.

Share this post


Link to post
Share on other sites

а, ну если патчкордом, то да, надо ещё компу адрес выдать, чтобы можно было обмен сразу начать, но дальше алгоритмы точно такие же.

DHCP - это обычная служба, её можно выключать и включать. Но включать надо ОЧЕНЬ аккауратно. если два DHCP сервера окажутся в одной сети - искать "глючащее" устройство сложновато будет.

после поднятия линка надо сразу ловить dhcp discover запрос на адрес. если dhcp discover запрос не пришёл -  dhcp сервер выключать.

если же запрос пришёл, но на него никто не ответил, то ответить самим спустя самый длительный интервал, который возможен.

Потом желательно проверить широковещательным ARP запросом нет ли в сети ещё кого, а также  мониторить чужие dhcpoffer и сразу же выключать свой dhcp server в таких случаях

 

 

 

Share this post


Link to post
Share on other sites

1 hour ago, Stepanov said:
  • При старте интерфейса LwIP пытается получить адрес по DHCP
  • Если DHCP-сервер не отвечает (что происходит при прямом подключении патч-кордом к ПК), включается режим AUTOIP

комп будет ждать, пока ему ответит устройство, а устройство будет ждать, пока ему комп выдаст адрес. оба отвалятся по таймауту.

 

Share this post


Link to post
Share on other sites

7 hours ago, Stepanov said:

Верно. Вот наверное о таких моментах ТС и интересуется.

 

8 hours ago, kpv said:

комп будет ждать, пока ему ответит устройство, а устройство будет ждать, пока ему комп выдаст адрес. оба отвалятся по таймауту.

 

Спасибо!

Я думал, что есть способ без таймаутов, т.к. самый очевидный.

Пока сделал переключение на DHCP сервер по удержанию кнопки непродолжительное время. Если клиента нет - переход на текущие сетевые настройки.

По таймауту - есть риск что два DHCP в одной сети окажутся.

Edited by groundbreakingfox
Дополнил

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...