1

У меня есть два типа устройств, которые я хочу подключить через Ethernet к хосту. Я хочу знать, какой из этих двух типов устройств подключен.

Оба устройства используют Avahi/Bonjour и имеют то, что они называют "Bonjour Service Name", которое содержит полезную информацию, которую я могу использовать, чтобы различать два типа устройств, но сетевые требования означают, что я не могу использовать общий mDNS Browse, потому что он будет работать на вторичный сетевой порт хоста (что не разрешено). Это "Имя службы Bonjour" последовательно используется устройствами как первая часть всех служб, которые они передают (например, UsefulDeviceName._http._tcp.local , UsefulDeviceName._ftp._tcp.local , UsefulDeviceName._telnet._tcp.local и т.д.).

Каждое устройство двух типов также имеет свое уникальное DNS-имя, но это просто [GenericPrefix][MacAddress].local , которого недостаточно для их дифференциации (они от одного производителя, поэтому оба типа устройств используют такие же блоки MAC).

Каждый инструмент, который я пробовал до сих пор, осуществляет mDNS-трансляцию через сеть и показывает имя Bonjour Service, но не соответствует требованию сети "не использовать все порты". Выполнение запроса DNS, подобного этому, возвращает нормальное имя DNS, а не имя службы Bonjour.

Мы будем знать IP устройства. Существует ли простая команда Linux, которая спросит устройство: «Каково ваше имя службы Bonjour?"/" Какие имена Bonjour Service у вас есть?«на что можно положиться, чтобы отправлять пакеты только через интерфейс, к которому будут подключены устройства, а не по более широкой сети?

2 ответа2

1

Ответ, кажется, "нет надежного способа сделать это". Не все устройства прослушивают / отвечают на команды dig, перечисленные в другом ответе, а все остальное для поиска имен mDNS в сети (например, avahi-browse и mdns-scan с плохим поведением) требует многоадресной передачи / широковещания и не может использоваться для зондировать отдельную машину.

0

dig должен работать, если вы отправляете тот же запрос, что и различные инструменты "mDNS browser":

dig _services._dns-sd._udp.local ptr @ip-address -p 5353

(При желании добавьте +short .)

Обратите внимание, что здесь нет « имени службы Bonjour» - каждое устройство может зарегистрировать несколько служб под разными именами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .