Wie erhalten Sie den "Bonjour-Dienstnamen" von einem einzigen Gerät?

6348
IBBoard

Ich habe zwei Gerätetypen, die ich über Ethernet mit einem Host bearbeiten möchte. Ich möchte wissen, welcher dieser beiden Gerätetypen angeschlossen ist.

Beide Geräte verwenden Avahi / Bonjour und haben einen sogenannten "Bonjour-Dienstnamen", der nützliche Informationen enthält, die ich zur Unterscheidung der beiden Gerätetypen verwenden kann. Aufgrund der Netzwerkanforderungen kann ich jedoch kein mDNS-Durchsuchen verwenden, da dies der Fall ist am sekundären Netzwerkport des Hosts (der nicht zulässig ist). Dieses „Bonjour Service Name“ wird von den Geräten als erster Teil aller Dienste, die sie übertragen (zB konsequent genutzt UsefulDeviceName._http._tcp.local, UsefulDeviceName._ftp._tcp.local, UsefulDeviceName._telnet._tcp.localusw.).

Jedes Gerät der beiden Typen hat auch einen eigenen eindeutigen DNS-Namen, der jedoch [GenericPrefix][MacAddress].localnicht ausreicht, um sie zu unterscheiden (sie stammen vom selben Hersteller, weshalb beide Gerätetypen die gleichen MAC-Blöcke verwenden).

Jedes Tool, das ich bisher ausprobiert habe, sendet eine mDNS-Übertragung über das Netzwerk und zeigt den Bonjour-Dienstnamen an, erfüllt jedoch nicht die Netzwerkanforderungen "nicht alle Ports verwenden". Ausführen einer DNS - Abfrage wie diese den normalen DNS - Namen zurückgibt, nicht den Bonjour - Service - Name.

Wir werden die IP des Geräts kennen. Gibt es einen einfachen Linux-Befehl, der das Gerät fragt "Wie lautet Ihr Bonjour-Dienstname?" / "Welche Bonjour-Dienstnamen haben Sie?" kann man sich darauf verlassen, dass die Pakete nur über die Schnittstelle gesendet werden, mit der die Geräte verbunden werden, und nicht das weitere Netzwerk?

1
Es gibt keinen direkten Weg, um einen Bonjour-Namen von der IP-Adresse zu erhalten. Bonjour Browser ordnet die IP-Adressen jedoch Bonjour-Namen zu. Es gibt eine Möglichkeit, dasselbe zu tun wie Bonjour Browser auch über das Terminal. seine `dns-sd -B`. aliasgar vor 11 Jahren 0
Ein Computer weiß also, dass er mit dem vollständigen "Bonjour-Dienstnamen" reagiert, wenn er das mDNS-Multicast-Paket empfängt. Er kann jedoch nicht direkt angefordert werden, um die gleichen Informationen zu finden. Ich habe mir avahi-browser angesehen (was sich anhört, als sollte es dasselbe tun), aber ich verstehe, dass es Multicast über alle NICs gibt. IBBoard vor 11 Jahren 0
Ja, scheint so! aliasgar vor 11 Jahren 0

2 Antworten auf die Frage

1
IBBoard

The answer appears to be "there is no reliable way to do it". Not all devices listen/respond to the dig commands listed in the other answer, and everything else to find mDNS names on the network (like avahi-browse and the badly behaved mdns-scan) requires multicasting/broadcasting and can't be used to probe an individual machine.

0
grawity

dig sollte funktionieren, wenn Sie dieselbe Abfrage senden wie verschiedene "mDNS-Browser" -Tools:

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

(Optional hinzufügen +short.)

Beachten Sie, dass es keinen „ist der Bonjour Service - Name“ - jedes Gerät ist frei mehrere Dienste unter verschiedenen Namen zu registrieren.

Okay, im Allgemeinen gibt es keinen "Bonjour-Dienstnamen", aber in diesem Fall verfügen die Geräte über ein Konfigurationsfeld, in dem ein Fenster angezeigt wird. Ich möchte es abrufen (und es ist der erste Teil jeder Domäne, der von mdns-scan zurückgegeben wird.) aber ich kann das nicht verwenden, wie früher erklärt wurde. Welche IP sollte ich für @ IP-Adresse verwenden ? Ich habe gerade die IP des Geräts ausprobiert, aber eine Verbindungszeitüberschreitung erhalten - eine kurze nmap zeigt, dass der Port nicht geöffnet ist. IBBoard vor 11 Jahren 0
@IBBoard: IP-Adresse wäre die Adresse des Geräts ... mDNS verwendet nur UDP, und nmap prüft dies standardmäßig nicht. Es besteht jedoch die Möglichkeit, dass der mDNS-Stack des Geräts Unicast-Abfragen einfach ignoriert. grawity vor 11 Jahren 0
Ich habe gemerkt, dass nmap erst eine Weile nach meinem Posting TCP hat. Es scheint jedoch definitiv nicht auf Unicast zu reagieren (Wireshark zeigt, dass das Paket ausgeht, aber nichts zurückkommt). IBBoard vor 11 Jahren 0