Netzwerk ohne Konfiguration
Artikel erschienen in Swiss IT Magazine 2007/06
In Netzwerken müssen nicht nur die Services selber für die Anwender eingerichtet werden, sondern man muss auch dafür sorgen, dass die Clients entsprechend konfiguriert werden, damit sie die Services nutzen können. Dies kann man entweder selber machen oder es die Anwender erledigen lassen, was aber entweder Aufwand oder Probleme bedeutet. Praktischer wäre es dagegen, wenn sich die Clients gleich selber konfigurieren würden. Dies geht beispielsweise mit Zeroconf.
Die Idee der selbstständigen Konfiguration in lokalen Rechnernetzen ist keineswegs neu. Bereits in den 80er Jahren haben Apple mit AppleTalk und IBM mit NetBIOS entsprechende Mechanismen entwickelt. Zeroconf ist insofern auch eher eine Neuauflage der Ideen, die AppleTalk und NetBIOS zugrundeliegen, die allerdings auf offenen und ausführlich dokumentierten Standards aufsetzt und dadurch einfach zu implementieren sein soll.
Zeroconf bietet im Moment drei Funktionen:
- Automatische IP-Allokation ohne zentralen Server (wie DHCP)
Damit das Netzwerk nicht unter dem Broadcast verursachten Traffic zusammenbricht, müssen immer längere zufällige Pausen zwischen den Versuchen zur Besetzung einer IP-Adresse eingelegt werden. Zudem dürfen die Rechner nur beim Einhängen ins Netzwerk testen, ob sie ihre (letzte) IP-Adresse weiterverwenden dürfen oder ob in der Zwischenzeit ein anderer Rechner bereits die IP-Adresse besetzt hat.
Die Namensauflösung sowie die Service Discovery erfolgt über die DNS-Variationen Multicast DNS (MDNS) und DNS Service Discovery (DNS-SD). Multicast DNS sorgt im Prinzip dafür, dass Anfragen zur Auflösung von Namen auf IP-Adressen an alle Rechner im LAN geschickt werden und diese antworten, sofern sie denn die Antwort kennen. DNS Service Discovery arbeitet mit Hilfe eines neuen Typs von DNS-Records, mit denen die auf einem Rechner vorhandenen Services publiziert werden können. Wie bei der automatischen IP-Allokation werden verschiedene Verfahren verwendet, um den dabei entstehenden Netzwerkverkehr tief zu halten. So wird beispielsweise durch Caching oder die «Mitnutzung» von Informationen, die eigentlich an andere Clients gesendet wurden, das Absetzen unnötiger Anfragen verhindert.
Zeroconf ist darauf ausgelegt, mit herkömmlichen Services wie DHCP oder DNS zusammenzuarbeiten. So können manuell gesetzte oder DHCP-vergebene IP-Adressen auch mit Zeroconf verwendet werden. Multicast-DNS läuft auf anderen Ports als das herkömmliche DNS und kann darum parallel verwendet werden. Da sich Multicast-DNS zudem kaum vom herkömmlichen DNS unterscheidet, können auch bekannte Kommandozeilen-Werkzeuge wie dig damit umgehen.
Auch wenn der Name Zeroconf den meisten Anwendern kaum etwas sagen dürfte, sind sie der Technologie wohl schon öfters begegnet. Die wohl bekannteste Zeroconf-Implementierung ist Apples Bonjour, das in seiner aktuellen Form erstmals in MacOS X 10.2 dabei war und damals noch Rendezvous hiess. Bonjour ist in etliche Apple-Applikationen integriert. Prominentester Vertreter ist wohl der Multimedia-Player iTunes, dessen Funktion zum Musik-Sharing auf Bonjour aufsetzt.
Im Rahmen von iTunes können die gesamte Bibliothek oder spezielle Playlisten zur Nutzung im lokalen Netz freigegeben werden. Diese werden dann von anderen iTunes-Installationen erkannt und automatisch in die Auswahl an Wiedergabelisten integriert. Von dort kann dann Musik wiederum so einfach abgespielt werden, als würde sie auf der lokalen Festplatte liegen. Wenn der Rechner, der die freigegebenen Playlisten bereitstellt, heruntergefahren, iTunes abgestellt oder das Sharing deaktiviert werden, merken die anderen iTunes-Installationen dies und entfernen die Playlists automatisch.
Neben iTunes unterstützten noch zahlreiche andere Applikationen von Apple respektive für MacOS X Bonjour, darunter beispielsweise der Webbrowser Safari, die Photoverwaltungssoftware iPhoto oder der Editor SubEthaEdit, der gleichzeitiges gemeinsames Arbeiten an einem Dokument ermöglicht.
Apples Zeroconf-Implementierung ist als Open Source neben MacOS X unter anderem für Linux, BSD und Windows erhältlich. Allerdings wird Bonjour ausserhalb von MacOS X kaum verwendet. Auf Linux kommt vor allem Avahi zum Einsatz, was einerseits an Vorbehalten gegenüber der bei Bonjour zum Einsatz kommenden Apple Public Source License liegt und andererseits daran, dass Avahi speziell auf Linux zugeschnitten ist. So bietet es Schnittstellen für GNOME, KDE und Mono, die sowohl von GNOME als von KDE eifrig benutzt werden.
Wer sehen will, welche Services in seinem Netzwerk verfügbar sind, erhält mit Zeroconf-Browsern einen guten Überblick. Für MacOS X bietet sich beispielsweise Observation Post an, Avahi bringt sein Service-Discovery-Werkzeug gleich selber mit.
Die Anwendung von Zeroconf ist selbstverständlich nicht auf Multimedia-Applikationen wie iTunes, iPhoto und Co. beschränkt, sondern es kann auch für «ernsthaftere» Aufgaben zum Einsatz kommen. So unterstützen bereits viele Druckerhersteller bei aktuellen Geräten mit Netzwerkanschluss Zeroconf. Ältere Drucker lassen sich mit Hilfe der Proxy-Funktionalität von Zeroconf bekannt machen, indem auf irgendeinem Rechner im Zeroconf-Netzwerk die Informationen für den Netzwerkdrucker hinterlegt und von diesem publiziert werden. Auch lassen sich Serverprogramme, die keinen Zeroconf-Support mitbringen, auf diese Weise publizieren. Dies kann von Hand (im Falle von Apple Bonjour) mit dem Werkzeug dns-sd erledigt werden.
# dns-sd -R DjangoServer _http._tcp. local. 8000 «»
Dieser Befehl propagiert beispielsweise den HTTP-Service «DjangoServer», der auf dem lokalen Rechner auf Port 8000 läuft. Fast sofort erscheint er beispielsweise in der Favoriten-Liste von Safari und lässt sich von dort aus aufrufen. Die Anwender brauchen so weder zu wissen, auf welchem Server, welcher IP noch welchem Port der Service läuft, um ihm zu benutzen. Dies bietet sich insbesondere für die Gestaltung von Intranets an, wobei der Apache Server dank passenden Modulen die Propagierung der Services, die er zur Verfügung stellt, gleich selber übernimmt.
Auf MacOS X bringt der vorinstallierte Apache das (leider kaum dokumentierte) mod_bonjour mit. Dieses ist in der Lage, beliebige Verzeichnisse oder Aliase über Zeroconf zu publizieren. Viel mehr bietet mod_dnssd zusammen mit Avahi, das automatisch Virtual Hosts annonciert oder die Propagierung alternativer Services wie WebDAV oder XML-Anwendungen wie RSS erlaubt. So lassen sich Adressen für unzählige Shares und Intranetanwendungen wie Kalender, Blogs oder Wikis automatisch verteilen.