Как вы получаете "Имя службы Bonjour" с одного устройства?

У меня есть два типа устройств, которые я хочу подключить через 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?" на что можно положиться, чтобы отправлять пакеты только через интерфейс, к которому будут подключены устройства, а не по более широкой сети?

2 ответа

Решение

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

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

dig _services._dns-sd._udp.local ptr @ ip-адрес -p 5353

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

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

Другие вопросы по тегам