HELIOS Base UB64 Benutzerhandbuch (Version 4.0.0)  
 

16 mDNS (Bonjour)

16.1 Einleitung

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:

  1. IP-Adressen ohne DHCP-Server zuweisen

  2. Namen und Adressen ohne DNS-Server zuweisen

  3. 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.

16.2 mDNS und AppleTalk

Einen guter Anfang bildet der einfache Vergleich zwischen mDNS und AppleTalk. Historisch gesehen handhabt AppleTalk Zeroconf sehr gut. Das Ziel von mDNS ist es, ähnliche Dienste, die auf normalen IP-Netzwerken laufen, anzubieten. Die Standardregistrierung eines AppleTalk-Gerätes sieht in etwa so aus:

lw8500:LaserWriter@HELIOS Support

„lw8500“ ist dabei der Gerätename, „LaserWriter“ der Typ und „HELIOS Support“ die AppleTalk-Zone. Die Standardregistrierung für mDNS sieht in etwa so aus:

lw8500_printer._tcp. local. 515 pdl=application/postscript
AppleTalk mDNS
Gerätename (lw8500) Dienstname (lw8500)
Typ (LaserWriter) Diensttyp (_printer._tcp)
Zone (HELIOS Support) Domain (local.)
IP-Port (515)
TXT-Info (pdl=application/postscript)


Funktionen AppleTalk mDNS
Zeroconf hsymCheckMark hsymCheckMark
Mehrere NICs hsymCheckMark hsymCheckMark
Routing hsymCheckMark – (nur lokale DNS-Multicasts)
Zusatzinfo hsymCheckMark (TXT-Info)
Unicode hsymCheckMark (UTF-8-Namen)
Nachschlage-Tool HELIOS „poll“ HELIOS „mdnstool“
Hinweis:

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.

16.3 Hostnamen mit DNS und mDNS

DNS

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.

mDNS

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."

OS X

Die von Apple verwendete Namensauflösung für Hosts löst Hostnamen automatisch, sowohl über DNS als auch mDNS, auf.

Windows Bonjour

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.

Wide Area Bonjour

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“.

16.4 Koexistenz von Apple Bonjour und HELIOS mDNS-Server

OS X

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.

Windows

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.

16.5 HELIOS mDNS-Server

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 preference keys“).

Das HELIOS Tool „ifstat“ (siehe Abschnitt 8.8 „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
Hinweis:

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 preference keys“) 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
createpdf _helcreatepdf._tcp
notifysrv _telnet._tcp
authsrv _telnet._tcp
scriptsrv _telnet._tcp
afpsrv _afpovertcp._tcp und _adisk._tcp
heladmsrv _heladmsrv._tcp
pcshare _telnet._tcp
opisrv _telnet._tcp
websharesrv _telnet._tcp
dhcpsrv _bootps._udp und _telnet._tcp
toolsrv _heltoolsrv._tcp
papsrv _helprinter._tcp
lpd _printer._tcp
mdnsproxysrv _telnet._tcp

16.6 Netzwerke: Beispielkonfigurationen

Einserver-Netzwerk mit Clients
Einserver-Netzwerk mit zwei IP-Netzwerkkarten
Router-Netzwerk

16.7 mDNS-Proxyserver

„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 …

16.8 Weitere Informationen

16.8.1 Automatische Wiederverbindung des mDNS-Dienstes

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.

16.8.2 Kommunikation mit dem mDNS-Server verfolgen

Network-Tracer wie „Wireshark“ sind in der Lage, das mDNS-Protokoll zu dekodieren.

16.9 mdnstool

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.

Verwendung:

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>]

16.9.1 Optionen

Wenn Sie „mdnstool“ ohne Option(en) aufrufen, sehen Sie eine Übersicht zur Verwendung (siehe oben).

-E

Empfohlene Registrierungsdomains auflisten.

-F

Empfohlene Browsingsdomains auflisten.

-B

Nach Diensten suchen. Für eine Liste aller Dienste geben Sie folgenden Befehl ein:
_services._dns-sd._udp.

-L

Einen Dienst nachschlagen.

-C

Über Port und IP-Adresse suchen.

-R

Einen Dienst registrieren.

-P

Proxy

-Q

IP-Adresse eines mDNS-Hostnamens finden.

-I

Registrierung testen und den TXT-Eintrag sofort aktualisieren.

-H

Hosteintrag für unbekannten Host registrieren.

-h

Hilfedatei anzeigen.

<Name>

Beliebiger Unicode-Text (UTF-8) mit zulässigen Unicode-Zeichen (auch Punkte, Leerzeichen, Querstriche, Doppelpunkte usw. ohne Einschränkung), bis 63 Bytes lang.

<Type>

_app-proto._tcp oder _app-proto._udp, wobei „app-proto“ der registrierte Protokollname einer Anwendung ist.

<Domain>

Domain, in der ein Dienst registriert werden soll. In aktuellen Anwendungen wird lediglich die lokale Multicast-Domain „local“ unterstützt.

<Port>

Zahl zwischen 0 und 65535. Die TCP- oder UDP-Portnummer, auf welcher der Dienst „lauscht“.

<Host>

Hostname des mDNS-Clients, z. B. „macbook.local.“.

<IP>

IP-Adresse, die der HELIOS mDNS-Server bei einer Anfrage liefert.

Diese Zusatzparameter müssen – werden sie gesetzt – als erstes Argument angegeben werden:

-no

(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.

-lo

(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.

-p

(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“).

16.9.2 Ausgabe-Flags

Timestamp

Uhrzeit, zu der der Dienst zuletzt aktualisiert wurde.

A/R

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.

Flags

Intern verwendetes Flag-Feld:

1 Weitere Meldungen im selben Paket.
2 Dienst hinzugefügt.
3 Eine Kombination beider Flags.
if

Intern verwendete ID der Netzwerkkarte, über die eine Meldung hereinkam.

Domain (Nur „Browsing“!)

Für mDNS-Meldungen immer local.; bei DNS-Anfragen kann dies auch jede andere Domain sein, z. B. helios.de.

Typ (Nur „Browsing“!)

Typ des gemeldeten Dienstes.

Name der Instanz (Nur „Browsing“! Bei „Anfragen“ heißt dieses Flag Name)

Name des Dienstes.

T/​C (Nur „Anfragen“!)

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

Rdata (Nur „Anfragen“!)

Nach einer Anfrage empfangene Daten, z. B. die IP-Adresse des angefragten Servernamens.

16.9.3 Beispiele

Registrierung

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
Hinweis:

Die Registrierung eines Hostnamens wird auf HELIOS Servern, die auf OS X ab 10.9 laufen, nicht unterstützt.

Browsing

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
Nachschlagen

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
Anfragen

IP-Adresse des lokalen Hosts erhalten:

# mdnstool -Q macbook.local.

HELIOS Website © 2015 HELIOS Software GmbH  
HELIOS Handbücher 6. Februar 2019