Bonjour, auch als Zero Configuration Networking oder einfach Zeroconf bekannt, ermöglicht das automatische Erkennen von Computern, Geräten und Diensten über IP-Netzwerke. Bonjour nutzt das normale IP-Protokoll, mit dem sich Geräte gegenseitig automatisch entdecken, ohne dass IP-Adressen eingegeben oder DNS-Server konfiguriert werden müssen. Der HELIOS mDNS-Server (multicast DNS) basiert auf Apples Bonjour-Server. Für echtes Zeroconf setzt Bonjour voraus, dass die Geräte drei essentielle Dinge können:
IP-Adressen ohne DHCP-Server zuweisen
Namen und Adressen ohne DNS-Server zuweisen
Dienste ohne Directory-Server orten und melden
HELIOS mDNS erfüllt die Bedingungen 2 und 3. Die automatische Konfiguration von IP-Adressen des HELIOS Servers sind Sache des Betriebssystems und der Netzwerkumgebung. HELIOS mDNS verwendet die vorhandene IP-Konfiguration.
mDNS verwendet IP-UDP-Netzwerkpakete zum Informationsaustausch. mDNS ist aus einem gemeinsamen Projekt der Arbeitsgruppen „IETF Zero Configuration Networking“ (www.zeroconf.org) und „DNS Extensions“ (datatracker.ietf.org/wg/dnsext/charter/) entstanden.
Ziel von mDNS ist es, Zero Configuration in IP-Netzwerken zur Verfügung zu stellen. Eine Standardregistrierung für mDNS kann dann beispielsweise so aussehen:
lw8500_printer._tcp. local. 515 pdl=application/postscript
mDNS |
---|
Dienstname (lw8500 ) |
Diensttyp (_printer._tcp ) |
Domain (local. ) |
IP-Port (515 ) |
TXT-Info (pdl=application/postscript ) |
Funktionen | mDNS |
---|---|
Zeroconf | |
Mehrere NICs | |
Routing | – (nur lokale DNS-Multicasts) |
Zusatzinfo | (TXT-Info) |
Unicode | (UTF-8-Namen) |
Nachschlage-Tool | HELIOS „mdnstool“ |
Der mDNS-Dienstname für einen bestimmten Typ repräsentiert diesen Dienst auf dem Host. Per Nachschlagen kann der Hostname nach einem bestimmten Dienst durchsucht werden.
Hostnamen von Computern werden normalerweise mit Hilfe einer Tabelle in der lokalen „hosts“-Datei nachgeschlagen oder, falls konfiguriert, von einem DNS-Server. Einige DHCP-Server, wie z. B. der HELIOS DHCP-Server, können einen DNS-Server automatisch mit dem gewünschten Computernamen aktualisieren. Anwendungen und Systemprogramme lösen Hostnamen zu einer IP-Adresse auf.
Anwendungen müssen die APIs des mDNS-Clients zum Auflösen von über
mDNS registrierten Hostnamen, z. B. „macbook.local.“ auf die zugehörige
IP-Adresse, nutzen. Mit dem HELIOS Programm „mdnstool“ lässt sich der Name
mit einer IP-Adresse verknüpfen, z. B. mdnstool -Q "macbook.local."
Die von Apple verwendete Namensauflösung für Hosts löst Hostnamen automatisch, sowohl über DNS als auch mDNS, auf.
Wenn das Bonjour-Paket von Apple (nicht die HELIOS mDNS-Installation!) auf Windows installiert ist, löst ein integrierter „Bonjour NameSpace Provider“ (mdnsNSP) von Apple Hostnamen, sowohl über DNS als auch mDNS, auf.
Der Einsatz von mDNS in einem lokalen Netzwerk benötigt Zeroconf zum Auffinden seiner Dienste. In diesem Fall befinden sich sämtliche über mDNS registrierten Namen in der „lokalen“ mDNS-Domain. Für Namen im WAN (Wide Area Network) müssen vorhandene DNS-Server von Hand aktualisiert werden, um Namensauflösungen durchführen zu können.
Apple Bonjour bringt einige Funktionen mit („Wide Area Bonjour“) um seine Namen bei einem vorhandenen DNS-Server zu registrieren. Das bedarf einer weiteren Konfiguration sowie einem vertrauenswürdigen DNS-Server. Der HELIOS mDNS-Server unterstützt kein „Wide Area Bonjour“.
Unter OS X zählt der HELIOS mDNS-Server nicht zu den HELIOS Diensten. Stattdessen wird Apples mDNS-Server „mDNSResponder“ genutzt. Sämtliche HELIOS Dienste und Programme sind mit Apples Bonjour-Server kompatibel.
Unter Windows prüft der HELIOS mDNS-Server, ob Apples Bonjour-Server für Windows läuft und – falls ja – benutzt diesen. Läuft der Bonjour-Server nicht, wird stattdessen der HELIOS mDNS-Server verwendet. Sind auf Windows HELIOS Dienste installiert, empfehlen wir Ihnen, den HELIOS mDNS-Server zu benutzen, da für diesen von HELIOS und seinen Partnern Support angeboten wird.
Der HELIOS mDNS-Server, Bestandteil des Produkts HELIOS Base, setzt das Multicast-DNS-Protokoll ein, von Apple „Bonjour“ genannt. Der HELIOS mDNS-Server unterstützt alle gültigen IPv4-Netzwerkkarten. Sämtliche IPv4-Netzwerkkarten werden vom HELIOS mDNS-Server standardmäßig gefunden und verwendet. Eine Konfiguration ist hier in aller Regel nicht erforderlich.
Der HELIOS mDNS-Server („mdnssrv“) wird vom HELIOS Service Controller (siehe Kapitel 14 „HELIOS Service Controller“) gestartet.
Standardmäßig wird der mDNS-Servername vom Hostnamen des Servers übernommen. Soll ein anderer Name verwendet werden, kann mit der „mdnssrv“-Serverpräferenz hostname ein eigener Hostname für mDNS definiert werden (siehe Abschnitt 19.10 „mDNS-Server-Präferenzen“).
Das HELIOS Tool „ifstat“ (siehe Abschnitt 8.7 „ifstat“) listet alle verfügbaren Netzwerkkarten mit ihren Namen auf, z. B:
Netzwerkkarte | Adresse |
---|---|
lo0 | 127.0.0.1 |
en0 | 192.168.1.1 |
en1 | 172.16.0.1 |
Das Tool „ifstat“ ist unter Windows nicht verfügbar.
Wenn der HELIOS mDNS-Server nur bestimmte Netzwerkkarten verwenden soll, können Sie mit der Präferenz interfaces (siehe Abschnitt 19.10 „mDNS-Server-Präferenzen“) die Karten definieren, die Sie tatsächlich nutzen möchten. Wird die Konfiguration des HELIOS mDNS-Servers geändert, werden die Änderungen erst nach einem Neustart des Dienstes wirksam:
# srvutil stop -f mdnssrv # srvutil start mdnssrv
Eine automatische Rekonfiguration des HELIOS mDNS-Servers ist nicht vorgesehen, da Serverumgebungen als statisch begriffen werden und im Gegensatz zu mobilen Computern, wo eine automatische Konfiguration sinnvoll ist, nicht automatisch konfiguriert werden sollten.
Der HELIOS mDNS-Server verwendet den IP-Port 5353 (UDP), der IP-Port für mDNS unter Windows ist 5354 (TCP). Dieser funktioniert nur über Loopback!
Für die mDNS-Kommunikation mit der lokalen Library werden folgende Ressourcen benötigt:
OS | Ressource |
---|---|
UNIX | HELIOSDIR/var/run/mdnssrv |
OS X | /var/run/mDNSResponder |
Windows | TCP-Port 5354 (nur Loopback!) |
Von HELIOS verwendete Registrierungstypen:
Dienst | RegType |
---|---|
afpsrv | _afpovertcp._tcp and _adisk._tcp |
authsrv | _telnet._tcp |
createpdf | _helcreatepdf._tcp |
dhcpsrv | _bootps._udp and _telnet._tcp |
heladmsrv | _heladmsrv._tcp |
lpd | _printer._tcp |
mdnsproxysrv | _telnet._tcp |
notifysrv | _telnet._tcp |
opisrv | _telnet._tcp |
papsrv | _helprinter._tcp |
pcshare | _telnet._tcp |
scriptsrv | _telnet._tcp |
toolsrv | _heltoolsrv._tcp |
websharesrv | _telnet._tcp |
„mdnsproxysrv“ leitet Anfragen zwischen Netzwerken weiter und ermöglicht auf diese Weise die Verbindung von Geräten auf verschiedenen Subnetzen, die sich andernfalls nicht „sehen“ würden. Der HELIOS mDNS-Proxyserver erlaubt auch …
… mDNS-Hostnamen mit IP-Adressen anderer Netzwerke zu verknüpfen
… nicht-Bonjour-Geräte (Drucker, Websites usw.) zu registrieren
… einfache mDNS-Registrierungen für Anwendungen von Drittanbietern über den mDNS-Serviceport (telnet)
… Statische Registrierungen vom Hauptserver über den mDNS-Serverport zu synchronisieren
Sollte ein mDNS-Server ausfallen, verbinden sich alle HELIOS Programme automatisch erneut mit ihren mDNS-Diensten und registrieren sich auch wieder. Der Versuch einer Wiederverbindung wird innerhalb der ersten Minute alle 10 Sekunden unternommen, danach jede Minute bis der mDNS-Server wieder verfügbar ist. Bei Verwendung des Apple Bonjour-Server verhält es sich genau so.
Network-Tracer wie „Wireshark“ sind in der Lage, das mDNS-Protokoll zu dekodieren.
HELIOS „mdnstool“ ist ein Dienstprogramm zur Netzwerkdiagnose, welches dazu dient, nach Registrierungen und registrierten Namen zu suchen. Es gleicht dem OS-X-Testprogramm „dns-sd“ (DNS Service Discovery) von Apple und lässt sich auf allen von HELIOS unterstützten Plattformen einsetzen. Die meisten Programmfunktionen sind nicht im Programm selbst integriert, sondern in dessen Library.
mdnstool [-E] [-F] [-B <Type> <Domain>] [-L <Name> <Type> <Domain>] [-C <Type> <Domain>] [-R <Name> <Type> <Domain> <Port> [<TXT>...]] [-P <Name> <Type> <Domain> <Port> <Host> <IP> [<TXT>...]] [-Q <FQDN> <rrtype> <rrclass>] [-I] [-H <Host> <IP>]
Wenn Sie „mdnstool“ ohne Option(en) aufrufen, sehen Sie eine Übersicht zur Verwendung (siehe oben).
Empfohlene Registrierungsdomains auflisten.
Empfohlene Browsingsdomains auflisten.
Nach Diensten suchen. Für eine Liste aller Dienste geben
Sie folgenden Befehl ein:
_services._dns-sd._udp
.
Einen Dienst nachschlagen.
Über Port und IP-Adresse suchen.
Einen Dienst registrieren.
Proxy
IP-Adresse eines mDNS-Hostnamens finden.
Registrierung testen und den TXT-Eintrag sofort aktualisieren.
Hosteintrag für unbekannten Host registrieren.
Hilfedatei anzeigen.
Beliebiger Unicode-Text (UTF-8) mit zulässigen Unicode-Zeichen (auch Punkte, Leerzeichen, Querstriche, Doppelpunkte usw. ohne Einschränkung), bis 63 Bytes lang.
_app-proto._tcp
oder _app-proto._udp
, wobei
„app-proto“ der registrierte Protokollname einer Anwendung ist.
Domain, in der ein Dienst registriert werden soll. In aktuellen Anwendungen wird lediglich die lokale Multicast-Domain „local“ unterstützt.
Zahl zwischen 0 und 65535. Die TCP- oder UDP-Portnummer, auf welcher der Dienst „lauscht“.
Hostname des mDNS-Clients, z. B. „macbook.local.“.
IP-Adresse, die der HELIOS mDNS-Server bei einer Anfrage liefert.
Diese Zusatzparameter müssen – werden sie gesetzt – als erstes Argument angegeben werden:
(Keine automatische Umbenennung doppelter Registrierungen)
In Verbindung mit der Registrierung von Diensten werden doppelte Namen nicht
mit einer Zahl als Suffix versehen. Stattdessen wird ein Fehler ausgegeben.
(Nur Loopback)
Standardmäßig werden beim Registrieren und Nachschlagen sämtliche
konfigurierten Netzwerkkarten berücksichtigt. Mit der Option -lo
lässt sich dies auf die Loopback-Verbindung begrenzen.
(Nur nummerierte Netzwerkkarte)
Mit der Option -p
lässt sich die Aktion auf eine bestimmte
Netzwerkkarte, z. B. -p4
begrenzen. Die Nummer der Netzwerkkarte
finden Sie über die Browsing-Option -B
(siehe Abschnitt
16.9.3 „Beispiele“).
Uhrzeit, zu der der Dienst zuletzt aktualisiert wurde.
Dienste hinzufügen oder entfernen. Während einer kurzen Anfrage gibt es wahrscheinlich nur „Add“-Meldungen. Wenn das Tool jedoch einen längeren Zeitraum läuft, in dem Dienste entfernt werden, werden auch „Rmv“-Meldungen (removed) angezeigt.
Intern verwendetes Flag-Feld:
1 |
Weitere Meldungen im selben Paket. |
2 |
Dienst hinzugefügt. |
3 |
Eine Kombination beider Flags. |
Intern verwendete ID der Netzwerkkarte, über die eine Meldung hereinkam.
Für mDNS-Meldungen immer local.
; bei DNS-Anfragen kann dies
auch jede andere Domain sein, z. B. helios.de
.
Typ des gemeldeten Dienstes.
Name
)Name des Dienstes.
Typ und Klasse. Eine Anfrage fordert nicht nur Meldungen über Dienste, sondern auch interne Serverdaten an. Typen sowie Klassen sind in der Library-Datei „libmdns.h“ aufgeführt.
Der Typ ist erforderlich: kDNSServiceType_A = 1
und die Klasse: kDNSServiceClass_IN = 1
Nach einer Anfrage empfangene Daten, z. B. die IP-Adresse des angefragten Servernamens.
Den Drucker „testreg“ am „lpd“-Standardport (515) für die lokale Bonjour/mDNS-Domain registrieren. Diese Registrierung ist solange gültig bis die Verbindung zum Server beendet wird:
# mdnstool -R testreg _printer._tcp local. 515
Den Hostnamen „myhost.local“ mit der IP-Adresse 192.168.1.1. registrieren.
Hosts können mit Hilfe der Optionen -R
oder -H
registriert werden. Diese Registrierung ist gültig bis die Verbindung zum
Server beendet wird. Die IP-Adresse des Hostnamens
lässt sich über die Anfrage mdnstool -Q myhost.local.
finden.
# mdnstool -H myhost.local. 192.168.1.1
Die Registrierung eines Hostnamens wird auf HELIOS Servern, die auf OS X ab 10.9 laufen, nicht unterstützt.
Sämtliche Dienste auflisten:
# mdnstool -B _services._dns-sd._udp
Sämtliche Drucker mit ihren IP-Adressen auflisten:
# mdnstool -C _printer._tcp
Sämtliche gefundenen Drucker auflisten, während das Browsing für 2 Sekunden gestoppt wird:
# mdnstool -t2 -B _printer._tcp
Wenn Ihr Server mehr als eine Netzwerkkarte hat, werden Sie feststellen, dass die Dienste nach Netzwerkkarten gruppiert aufgelistet werden. In der Spalte „if“ finden Sie die Nummer der Karte:
# mdnstool -t2 -B _printer._tcp Browsing for _printer._tcp Timestamp A/R Flags if Domain Service Type Instance Name 16:48:21.410 Add 3 2 local. _printer._tcp. cpdf-suse113 16:48:21.410 Add 3 2 local. _printer._tcp. ppv-suse113 16:48:21.410 Add 3 2 local. _printer._tcp. p2d-suse113 16:48:21.411 Add 3 3 local. _printer._tcp. cpdf-suse113 16:48:21.411 Add 3 3 local. _printer._tcp. ppv-suse113 16:48:21.411 Add 2 3 local. _printer._tcp. p2d-suse113
Wenn Sie die Ausgabe auf eine bestimmte Netzwerkkarte begrenzen möchten,
können Sie dazu die Option -p
verwenden. Im folgenden Beispiel
wird der Parameter p3
angegeben, um die Ausgabe auf die Karte
Nummer 3 zu begrenzen:
# mdnstool -p3 -t2 -B _printer._tcp Set interface to 3 Browsing for _printer._tcp Timestamp A/R Flags if Domain Service Type Instance Name 16:48:21.411 Add 3 3 local. _printer._tcp. cpdf-suse113 16:48:21.411 Add 3 3 local. _printer._tcp. ppv-suse113 16:48:21.411 Add 2 3 local. _printer._tcp. p2d-suse113
Weitere Informationen, wie z. B. den vollständigen Namen des Dienstes, seinen Host und die TXT-Ressourcen, zum Drucker „testreg“ erhalten:
# mdnstool -L testreg _printer._tcp
IP-Adresse des lokalen Hosts erhalten:
# mdnstool -Q macbook.local.