Поиск устройства в локальной сети по mac адресу или имени клиента
- Войдите на сайт для отправки комментариев
Вс, 01/12/2019 - 14:52
Добрый день, помогите реализовать поиск устройства в локальной сети по mac адресу или имени клиента.
Ситуация следующая, есть локальная сеть, ардуино и w5500, а так же некоторое устройсто доступ к которому необходимо получить удалённо. Необходимо узнать IP адрес этого устройства по средством самой ардуины. Адреса выдаёт DHCP.
У w5500 есть доступ к MAC RAW (raw socket), используйте его и вручную отправьте запрос reverse arp.
Вот тут кой-какая помощь есть, хотя бы структуры уже описаны: https://sourceforge.net/p/minitcpstack/code/ci/master/tree/SRC/ARP.C
Добрый день, помогите реализовать поиск устройства в локальной сети по mac адресу или имени клиента.
Ситуация следующая, есть локальная сеть, ардуино и w5500, а так же некоторое устройсто доступ к которому необходимо получить удалённо. Необходимо узнать IP адрес этого устройства по средством самой ардуины. Адреса выдаёт DHCP.
Но не всегда на первый запрос получается получить ответ от устройства, например в локальной сети установлена ip-камера, мак-адрес мне известен, для поиска ip-адреса, отправляю arp запросы для поиска всех "живых" ip адресов подсети, не всегда на первый запрос от камеры получаю ответ.
А не проще сделать резервирование IP-адреса за данным клиентом в настройках роутера? Тогда DHCP будет выдавать клиенту всегда один и тот же адрес.
Ethernet client умеет делать ресолв по dns, например.
А не проще сделать резервирование IP-адреса за данным клиентом в настройках роутера? Тогда DHCP будет выдавать клиенту всегда один и тот же адрес.
Любое устройство в локальной сети должно отвечать на arp запросы, иначе обмениваться данными используя ip протокол не получится.
Но не всегда на первый запрос получается получить ответ от устройства, например в локальной сети установлена ip-камера, мак-адрес мне известен, для поиска ip-адреса, отправляю arp запросы для поиска всех "живых" ip адресов подсети, не всегда на первый запрос от камеры получаю ответ.
Можно подробнее о том как ты делаешь запрос. Облазила уже все форумы, не могу найти живых примеров.
Для решения таких задач разработан mdns.
Засыпать сеть arp-запросами - блажь, и не гарантирует результата, ибо существуют транслирующие мосты. Если уж сканировать, то просто udp-пакетами.
пинг на широковещательный, затем arp -a и парсить, может сработать, но не обязательно, в винде это отлючено
Ошибкой было бы думать, что W5500+"ардуина" может справится со сколько-нибудь серьёзным потоком одновременно входящих icmp reply. Хотя, если открыть сразу восемь сокетов и ушами не хлопать... Но не факт, всё же.
Не меньшим заблуждением (а даже и большим) является уверенность в том, что, в задаче поиска хоста в сети, mDNS лучше какой-нибудь иной технологии и что-то кому-то гарантирует.
Пока "некое устройство в локальной сети" (и не факт, что в локальной, кстати) имеет форму сферического коня в вакууме, рецепты по его поиску равновероятно осмысленны либо бессмысленны.
Картинку смотреть можно через облако или в веб-морде камеры. Использует только 80-й порт для веб-морды и более никаких сервисов не предусмотрено, а на arp не отвечать не может по определению. С известным мак адресом на обычном ПК поиск адреса камеры занимает не более 3-х секунд на подсети из 255 адресов.
Использовал бы mdns для этой фигни, так нет его там.
Вы код готовый ждете для вашего чипа?
ip raw и mac raw на уровне чипа не обрабатываются, этим должен заниматься МК. Между ним и сетевым модулем скорость на порядки меньше той, с которой потенциально прилетят ответы на мультикаст, если ориентироваться на такой способ. Так что однозначного ответа на вопрос "А сможем ли мы успеть выловить нужный" лично у меня нет.
В общем случае стоит заставить DHCP зарегистрировать арендовавший адрес хост в какой-либо зоне DNS, а дальше все разрулится стоковой библиотечной функцией.
Представим лабораторную сеть, десятки, а то и сотни хостов. Из cетевой карты постоянно что-то сыпется.
Учитывая не самую высокую производительность ардуино, перебор адресов для подсети может оказаться вечностью (далеко не с первого раза устройство может ответить на arp запрос и этот ответ мы можем проспать).
В этом случае имеет смысл на устройствах, для которых выполняется поиск, реализовать минимальную обработку мультикастов получаемых из локальной сети.
Если же есть возможность на устройствах использовать mdns или какие либо другие аналоги, то поиск устройств значительно упрощается.
Пример использования:
В домофонной системе есть множество вызывных панелей, это панель на входной уличной двери и квартирные панели, все находятся в одной сети, каждая панель это sip звонилка сама и клиент и сервер, никаких посредников в минимальной конфигурации на требуется.
Из всех настроек - это номер квартиры, для уличной панели - номер подъезда/парадного.
Для выполнения вызова (вызывающий пока не знает ip адреса вызываемого), вызывающий отправляет мультикаст на группу указывая в запросе номер квартиры которую он ищет, если панель с настроенным номером этой квартиры включена, она откликается (отвечает на этот мультикаст юникастом) и вызывающий уже пытается совершить вызов на определенный ip адрес.
В отличии от arp, ответы на мультикасты почти всегда приходят с первого раза.