Перейти к содержанию
    

Динамический IP на устройстве

Добрый день!

В общем делаю я некое устройство с управлением через Ethernet. Подумалось мне, что будет гораздо удобнее сделать ему присвоение адреса по DHCP, чем зашивать его в явном виде и где-то на наклейке писать. Юзеры глупые, бумажку потеряют, программное с другой машины с другими настройками перетащут и будет мне головная боль. Другое дело когда все автоматическое :rolleyes:

 

Так вот вопрос: как машине найти железку, не зная под каким адресом она запустилась? Машина тоже получает адрес от сервера и железка аналогично его не знает.

Есть всякие роутеры, так-же получающие адрес, но есть к ним фирменные программки, которые их каким-то волшебным образом находят. Как же это работает? Там явно не перебор адресов, все гораздо быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 -= Александр =-

просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client. Или вам надо выдавать как то специфически IP для ваших железяк ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там явно не перебор адресов...

Broadcast запросы в локальной сети еще никто не отменял. Вот так все просто.

 

 

просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client.

Але гараж! Кто из них скажет любой другой машине на неведомом адресе какой адрес был выдан конкретной железке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 -= Александр =-

просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client. Или

Видимо ситуация такая: в сети имеется dhcp сервер к которому нет доступа. Сервер выдает какой то ip железке, на железке индикатора чтобы посмотреть выданный ip нету. Задача: на писюке обнаружить железку. Предполагаем что ip ей выдан и пакеты проходят.

Усложнение: железка в другом сегменте, доступ проброшен через роутер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно, я и забыл что так можно)

Broadcast делается на уровне IP или где-то глубже?

 

Про роутеры пока не думаем, все в одном сегменте работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Broadcast делается на уровне IP или где-то глубже?

По желанию - есть и IP и MAC broadcast. Судя по этому Вашему вопросу, Вам надо с UDP/IP работать, поскольку явно взяли какой то готовый IP стек и испытываете уверенность что всегда будет существовать DHCP сервер.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

гуглите в направлении "групповой MAC-адрес".

 

представьте себе 10 ваших устройств, воткнутых в один коммутатор, и комп.

у каждого вашего устройства два MAC-адреса: есть свой уникальный MAC-адрес и общий для всех ваших устройств одного типа групповой MAC-адрес.

на уникальный MAC устройство реагирует нормальным образом, реализуя всю обычную логику протокола ARP.

при получении пакета на групповой MAC-адрес, ваше устройство формирует специальный UDP пакет вашего формата, протокол вашей разработки.

 

на компе запускаете UDP-сокет на прием и RAW-сокет на передачу.

при помощи RAW-сокета формируете специальный ARP-запрос с групповым MAC-адресом.

все 10 ваших устройств его получают, но ответ на него формируют с использованием своих индивидуальных MAC-адресов (и полученных по DHCP IP-адресов) и в адрес IP-адреса компа, с которого вы посылали групповой ARP-запрос.

т.е. на ваш комп на открытый UDP-сокет должны прилететь 10 пакетов с их MAC и их IP.

 

данное решение работает в одном broadcast-домене, т.е. понятное дело через маршрутизаторы это всё не пролезет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пасибо за ответы, пойду учить матчасть. Пока-что считается что DHCP есть и все в одном сегменте. Остальное может будет, но позже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно попробовать сделать так, пропинговать диапазон адресов, а потом командой "arp -a" посмотреть и найти нужный mac адрес устройства и привязанный к нему ip адрес.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пропинговать диапазон адресов

 

Некрасиво. Да и фиг знает на какой диапазон DHCP настроено, может там вся подсеть вообще и сканировать долго будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас сеть выше класса 1С?

 

Даже если ниже - всяко секунд 10 пинговать придется, а то и больше. И так при каждом запуске.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пасибо за ответы, пойду учить матчасть. Пока-что считается что DHCP есть и все в одном сегменте. Остальное может будет, но позже.

Почему-то никто не вспомнил про DynDNS - поможет в случае разных подсетей, да и вообще совсем разных сетей.

А если Вам нужно узнать IP-адрес, а MAC известен, то поможет RARP (это протокол обратный ARP).

А если известно NETBIOS-имя устройства/компа, то поможет преобразовать его в IP протокол WINS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему-то никто не вспомнил про DynDNS - поможет в случае разных подсетей, да и вообще совсем разных сетей.

Никакого отношения к собственно задаче найти свою железку не имеет.

А если Вам нужно узнать IP-адрес, а MAC известен, то поможет RARP (это протокол обратный ARP).

Ага, и заставить пользователя вбивать и запоминать еще больше цифр. Плюс надо поднять этот протокол.

А если известно NETBIOS-имя устройства/компа, то поможет преобразовать его в IP протокол WINS.

Осталось его поднять на железке, да и на компьютере тоже разрешить, ибо уже в 90x netbios вышел из употребения де факто.

 

Все ведь просто - посылается broadcast UDP запрос на порт предназначенный для целей идентификации у железки. Железка видит, что запрос именно ее, а не вообще что-то чужое и радостно узнает из него IP адрес компьютера и сообщает на него о своем существовании.

Всего делов на полчаса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никакого отношения к собственно задаче найти свою железку не имеет.

Железке присваиваем уникальное символьное имя. При включении железка по DHCP получает IP и регистрирует его на DynDNS для вышеозначенного символьного имени. Далее - любой клиент может разресольвить это символьное имя в её IP.

Что не так?

 

Ага, и заставить пользователя вбивать и запоминать еще больше цифр. Плюс надо поднять этот протокол

Вы о чём?? Что вбивать и что запоминать?

У железки однозначно есть какой-то MAC. И естественно пользователь на компе должен его знать. Но в этом же нет проблем?

Он же не меняется. А меняется IP, который и нужно узнать.

Вот RARP - он как раз для этого.

А поднимать всё равно что-то придётся. Но лучше поднимать стандартный протокол, а не самопал, чтобы не получить потом люлей от админа. :rolleyes:

 

Осталось его поднять на железке, да и на компьютере тоже разрешить, ибо уже в 90x netbios вышел из употребения де факто.

Да ладно! И сетевыми папками Вы с 90-х не пользовались и сетевым принтером тоже и т.п.? Я Вам сочувствую :biggrin:

 

Все ведь просто - посылается broadcast UDP запрос на порт предназначенный для целей идентификации у железки. Железка видит, что запрос именно ее, а не вообще что-то чужое и радостно узнает из него IP адрес компьютера и сообщает на него о своем существовании.

Это "просто" до первого конфликта по портам с другой такой-же железкой, сляпанной таким же умельцем :biggrin:

А чтобы этого избежать, надо будет дать возможность пользователю изменить этот порт - и опять же придётся ему "вбивать и запоминать еще больше цифр" :laughing:

Да и как быть за пределами подсети?

 

Имхо - следует максимально возможно использовать стандартные протоколы, а не лепить самопал.

И даже в этом случае - прежде чем его лепить, нужно изучить все возможности стандартных протоколов и если их почему-то не хватает - только в этом случае ваять своё.

Лепить свой велосипед в обход всех стандартов и не зная их - это пионэрский подход, странно слышать от Вас призывы к этому.

Ну если конечно эта железка делается только для себя и не пойдёт ни к кому. Но тогда не проблема и просто в своём роутере прописать фиксированную аренду постоянного IP для этой железки и не маяться. Может ТСу так и сделать? Он в курсе такой возможности? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...