реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Динамический IP на устройстве, Как найти свою железку?
-= Александр =-
сообщение Apr 12 2017, 12:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



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

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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Apr 12 2017, 12:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 -= Александр =-
просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client. Или вам надо выдавать как то специфически IP для ваших железяк ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2017, 12:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(-= Александр =- @ Apr 12 2017, 15:00) *
Там явно не перебор адресов...

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


Цитата(Kuzmi4 @ Apr 12 2017, 15:19) *
просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_3m
сообщение Apr 12 2017, 12:26
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(Kuzmi4 @ Apr 12 2017, 15:19) *
2 -= Александр =-
просто запускаете стандартный isc-dhcp-server на машине, который раздаёт IP -> на железяке обычный DHCP client. Или

Видимо ситуация такая: в сети имеется dhcp сервер к которому нет доступа. Сервер выдает какой то ip железке, на железке индикатора чтобы посмотреть выданный ip нету. Задача: на писюке обнаружить железку. Предполагаем что ip ей выдан и пакеты проходят.
Усложнение: железка в другом сегменте, доступ проброшен через роутер.
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 12 2017, 12:29
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Да, действительно, я и забыл что так можно)
Broadcast делается на уровне IP или где-то глубже?

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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2017, 12:31
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(-= Александр =- @ Apr 12 2017, 15:29) *
Broadcast делается на уровне IP или где-то глубже?

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
krux
сообщение Apr 12 2017, 12:55
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



гуглите в направлении "групповой 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-домене, т.е. понятное дело через маршрутизаторы это всё не пролезет.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 12 2017, 12:57
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
Lagman
сообщение Apr 12 2017, 13:06
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Можно попробовать сделать так, пропинговать диапазон адресов, а потом командой "arp -a" посмотреть и найти нужный mac адрес устройства и привязанный к нему ip адрес.
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 12 2017, 13:17
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Цитата(Lagman @ Apr 12 2017, 16:06) *
пропинговать диапазон адресов


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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
Lagman
сообщение Apr 12 2017, 13:53
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



У вас сеть выше класса 1С?
Go to the top of the page
 
+Quote Post
-= Александр =-
сообщение Apr 12 2017, 14:06
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 123
Регистрация: 15-10-07
Из: Санкт-Петербург
Пользователь №: 31 370



Цитата(Lagman @ Apr 12 2017, 16:53) *
У вас сеть выше класса 1С?


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


--------------------
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 12 2017, 14:42
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(-= Александр =- @ Apr 12 2017, 14:57) *
Пасибо за ответы, пойду учить матчасть. Пока-что считается что DHCP есть и все в одном сегменте. Остальное может будет, но позже.

Почему-то никто не вспомнил про DynDNS - поможет в случае разных подсетей, да и вообще совсем разных сетей.
А если Вам нужно узнать IP-адрес, а MAC известен, то поможет RARP (это протокол обратный ARP).
А если известно NETBIOS-имя устройства/компа, то поможет преобразовать его в IP протокол WINS.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 12 2017, 15:50
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(jcxz @ Apr 12 2017, 17:42) *
Почему-то никто не вспомнил про DynDNS - поможет в случае разных подсетей, да и вообще совсем разных сетей.

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

Ага, и заставить пользователя вбивать и запоминать еще больше цифр. Плюс надо поднять этот протокол.
Цитата
А если известно NETBIOS-имя устройства/компа, то поможет преобразовать его в IP протокол WINS.

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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 12 2017, 21:47
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(zltigo @ Apr 12 2017, 17:50) *
Никакого отношения к собственно задаче найти свою железку не имеет.

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

Цитата(zltigo @ Apr 12 2017, 17:50) *
Ага, и заставить пользователя вбивать и запоминать еще больше цифр. Плюс надо поднять этот протокол

Вы о чём?? Что вбивать и что запоминать?
У железки однозначно есть какой-то MAC. И естественно пользователь на компе должен его знать. Но в этом же нет проблем?
Он же не меняется. А меняется IP, который и нужно узнать.
Вот RARP - он как раз для этого.
А поднимать всё равно что-то придётся. Но лучше поднимать стандартный протокол, а не самопал, чтобы не получить потом люлей от админа. rolleyes.gif

Цитата(zltigo @ Apr 12 2017, 17:50) *
Осталось его поднять на железке, да и на компьютере тоже разрешить, ибо уже в 90x netbios вышел из употребения де факто.

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

Цитата(zltigo @ Apr 12 2017, 17:50) *
Все ведь просто - посылается broadcast UDP запрос на порт предназначенный для целей идентификации у железки. Железка видит, что запрос именно ее, а не вообще что-то чужое и радостно узнает из него IP адрес компьютера и сообщает на него о своем существовании.

Это "просто" до первого конфликта по портам с другой такой-же железкой, сляпанной таким же умельцем biggrin.gif
А чтобы этого избежать, надо будет дать возможность пользователю изменить этот порт - и опять же придётся ему "вбивать и запоминать еще больше цифр" laughing.gif
Да и как быть за пределами подсети?

Имхо - следует максимально возможно использовать стандартные протоколы, а не лепить самопал.
И даже в этом случае - прежде чем его лепить, нужно изучить все возможности стандартных протоколов и если их почему-то не хватает - только в этом случае ваять своё.
Лепить свой велосипед в обход всех стандартов и не зная их - это пионэрский подход, странно слышать от Вас призывы к этому.
Ну если конечно эта железка делается только для себя и не пойдёт ни к кому. Но тогда не проблема и просто в своём роутере прописать фиксированную аренду постоянного IP для этой железки и не маяться. Может ТСу так и сделать? Он в курсе такой возможности? rolleyes.gif
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 06:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01532 секунд с 7
ELECTRONIX ©2004-2016