Как вы получаете "Имя службы 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" отсутствует - каждое устройство может зарегистрировать несколько служб под разными именами.