Gefrickel mit von Hand eingetragenen statischen IPs? Gefrickel mit der hosts-Datei? Manche User sind netzwerktechnisch noch im letzten Jahrtausend. Verzeiht mir die Polemik, aber es gibt wunderbare Entwicklungen, die man auch nutzen sollte. Disclaimer: Natürlich gibt es für einen einen oder anderen User noch Gründe auch heute noch IPs von Hand zuzuweisen, die kenne und verstehe ich. Dieser Blog-Artikel soll einfach ein paar Infos zur „moderneren“ Netzwerkkonfiguration im Bereich SoHo liefern. Verzeiht die Schnippische Einleitung!
DHCP
Vorweg eine Werbung für DHCP. Ich gehe mal vom typischen Heimanwender aus: Der Internetzugang wird über einen DSL-Router mit eingebauten WLAN-Access Point realisiert. Diese Dinger haben so gut wie immer einen DHCP-Server eingebaut, er ist eigentlich auch immer von Haus aus aktiv. D.h. im Normalfall muss die Netzwerkkonfiguration angeschlossener Computer überhaupt nicht angepasst werden.
Statische IPs? Willkommen im 21 Jahrhundert…
OK, nun wollt ihr einen Serverdienst wie bspw. einen Webserver hinter dem Router betreiben. Dazu müssen Ports an diesen weitergeleitet werden. Da sich dafür die IP nicht ändern darf, muss man trotzdem wieder mit einer fest eingetragenen IP arbeiten. Nicht zwangsläufig! Jeder ordentliche Router bietet die Möglichkeit eine IP fest einem Rechner zuzuordnen. Dies geschieht über die MAC-Adresse der Netzwerkkarte. Man muss die Nummer einfach nur auslesen und im Router dann mit einer IP verknüpfen. Ab dann bekommt der Rechner immer die selbe IP.
Achtung. Nicht jeder Router kann das. Wenn ihr so einen habt, dann kompostiert ihn. Es gibt zig billige Alternativen, die das können. Ausserdem schafft man sich einen Singe Point of Failure. Fällt der Router aus, so bekomme die Rechner keine IPs mehr. Dennoch halte ich diese Problematik – gerade im SoHo-Bereich – für sehr irrelevant.
Lokale Namensauflösung mit Avahi
Nun zum Kern dieses Beitrages: moderne Techniken. Computer kommunizieren in Netzwerken über IPs und nicht über Rechnernamen. Ohne einen zentralen Nameserver (oder manuell angepassten host-Dateien) weiß ein Computer nicht unter welcher IP er einen anderen Rechner erreichen kann. Hat man beispielsweise einen Webserver mit dem Namen „rechenknecht“ im LAN und möchte diesen von einem anderen Rechner ansprechen, so kann man nicht einfach http:\\rechenknecht im Browser eingeben und so die Webseiten des Webservers aufrufen. Man müsste zuvor die Verknüpfung IP Rechnername erst in die hosts-Datei eintragen oder einen Nameserver einrichten, der dann den Namen auflösen könnte.
Beide „Lösungen“ sind nicht ideal. Befinden sich weitere Rechner im LAN, so müsste überall die hosts-Datei angepasst werden. Gibt es eine Änderung, so muss wieder an allen Rechner Hand angelegt werden. Bringt ein Bekannter einen Rechner mit, so müssten hier Konfigurationen vorgenommen werden, die man später wieder rückgängig machen muss. Und ein Nameserver ist auch nicht in wenigen Minuten eingerichtet und letztendlich für ein kleines LAN mit Kanonen auf Spatzen geschossen.
Die Lösung für dieses Problem nennt sich Avahi / Zeroconf. Zeroconf verspricht „Zero Configuration Networking“ und kommt dem auch sehr nahe… Avahi wird schon seit längerer Zeit bei vielen Linuxen vorinstalliert und ist voll kompatibel zu Bonjour von MacOS X, das es auch für Windows gibt. Was macht nun Avahi? Über Avahi gibt ein Rechner seine Präsenz und seine angebotenen Dienste im lokalen Netzwerk bekannt. Dazu muss Avahi nicht konfiguriert werden, es funktioniert „Out-of-the-box“. Auf einem Ubuntu System ist Avahi von Haus aus installiert, wie afaik auf bei OpenSuse und Fedora. Bei Debian muss die Namensauflösung über…
$ apt-get install libnss-mdns
nachinstallieren. Ist dies geschehen, kann man jeden Rechner über seinen Namen und ein angehängtes .local ansprechen. So kann man bspw. nun den Rechner rechenknecht über…
$ ping rechenknecht.local
…anpingen oder über…
$ ssh rechenknecht.local
…auf den SSH-Server des Rechners gehen oder über http:\\rechenknecht.local den Webserver des Rechners öffnen oder oder… Hat man auf dem Server Apache mit mod-dnssd laufen, dann gibt der Server seine Existenz über Avahi bekannt und Browser wie Epiphany zeigen ihn sofort an.
Dabei muss man sich auch keine Gedanken machen, dass die Information das eigene LAN verlässt. Avahi ignoriert sämtlichen Traffic, der nicht aus dem eigenen LAN kommt.
Serverlos im LAN chatten und Daten austauschen
Rechner über ihren Namen anzupingen ist jetzt nicht sonderlich aufregend, wo steckt nun der eigentlich größte nutzen? Über Avahi können Programme sich publik machen. So kann man bspw. dank Avahi/Zeroconf ohne einen zentralen Server im LAN chatten oder Daten austauschen, Medien streamen, Voip-Gespräche führen usw. ohne dass man auch nur einen Serverdienst einrichten müsste.
Chatten
Instant-Messaging Programmen laufen üblicherweise immer über einen zentralen Server im Internet ab, an dem man sich einloggen muss. Doch man kann auch ohne Internetzugang im lokalen Netzwerk chatten. Moderne IM Clients wie Gajim oder Pidgin können dank Avahi/Zeroconf/Bonjour im LAN kommunizieren ohne dass man einen Server braucht.
Exemplarisch gehe ich auf Gajim und Pidgin sowie Miranda für Windows ein. In Pidgin muss man ein neues Konto anlegen. Als Protokoll stellt man Bonjour ein. Bei Gajim ist das Konto von Haus aus vorhanden, jedoch nach der Installation des Programms noch nicht aktiv. Um also Avahi/Zeroconf mit Gajim zu nutzen, muss man in den Konteneinstellungen das Konto Local aktivieren. Sollte das nicht möglich sein, so muss man das Paket python-avahi nachinstallieren.
$ sudo apt-get install python-avahi
Letztendlich möchte ich die Fans von Windows nicht außen vor lassen. Für den wohl populärsten Multi-Messenger auf Windows-Plattformen Miranda gibt es mit iChat ein Plugin, das Miranda Avahi/Zeroconf fähig macht.
Daten austauschen
Ähnlich wie Gajim oder Pidgin arbeitet Giver. Auch hier sieht man eine Kontaktliste vergleichbar wie bei einem Instant-Messaging Programm. Allerdings kann man mit den im LAN aktiven Kontakten nicht chatten. Giver dient ausschließlich zum Austausch von Dateien oder Ordnern. Per Drag&Drop zieht man eine Datei/einen Ordner auf den Kontakt. Akzeptiert der Empfänger die Übertragung, so startet der Versand der Daten.
Ein wunderbares Anwendungsbeispiel ist der Austausch von Screenshots, wenn man etwas in einer virtuellen Maschine ausprobiert. Ich installiere mir öfters mal eine Entwicklungsversion von $DISTRIBUTION. Mit Giver bekommt man Screenshots oder Konfigurationsdateien in Nullkommanix aus der VM auf den realen Desktop, ohne dass man dafür mit Freigaben hantieren muss.
Medien streamen
Ein weiteres Beispiel ist das Streamen von Medien. Man kennt dies von iTunes. Dort kann man die Musik, die sich auf einem Rechner befindet via iTunes auch auf einem anderen Rechner mit iTunes verfügbar machen. Das ganze funktioniert plattformübergreifend mit vielen Programmen. Egal ob man nun iTunes, Rhythmbox, Banshee oder Amarok benutzt. Sobald ein Programm DAAP als Protokoll beherrscht, kann es die Freigaben im lokalen Netzwerk automatisch einbinden. Möchte die Verteilung der eigenen Musik in Rhythmbox aktivieren, so muss man dies Bearbeiten | Plugins | DAAP-Musikverteilung | Konfigurieren | Eigene Musik verteilen erst einstellen.
Danach taucht die eigene Musik automatisch in iTunes, Banshee und Co. der anderen Mitglieder des eigenen LANs auf.
Weiteres zu Avahi
In vielen anderen „Produkten“ steckt mittlerweile ebenfalls Avahi. Gibt man einen Drucker über CUPS im Netzwerk frei, so finden die weiteren Installation von CUPS im Netzwerk automatisch den freigegeben Drucker. Über Ekiga lassen sich im lokalen Netzwerk VoIP- oder Video-Gespräche serverlos führen. Gibt man seinen GNOME-Desktop über Vino frei, so findet bspw. Vinagre über Avahi diese Desktopfreigabe. Über Pulseaudio lässt sich der Sound einer Anwendung gezielt zu einem Rechner leiten, der bspw. an die Stereoanlage angeschlossen ist, dabei findet sich PulseAudio ebenfalls wieder über Avahi/Zeroconf und so weiter und so fort.
Toller Artikel! Hättest Du nicht Lust, den Wiki-Artikel von uu.de zum Thema Avahi mit deinem Wissen anzureichern? Denn genau die konkreten Anwendungsbeispiele fehlen dort noch…
Gute Arbeit. Habs schon mal im Avahi-Artikel verlinkt.
Hallo, ich finde den Artikel sehr interessant, habe aber noch eine kleine Anmerkung: Tomato, was du scheinbar nutzt, hat bereits einen Nameserver integriert. Du kannst direkt bspw.
ping nslu2
nutzen.
Gruß, scus
Wieder ein super Artikel, danke vielmals dafür!
So, ich habe das jetzt zum Laufen gebracht bei mir (Ubuntu 8.10) und meinem Bruder (WinXP mit irgendeiner Firewall), aber er kann mich weder sehen noch mir Dateien schicken, was ich einwandfrei kann. Wie kann ich das beheben?
@Maxe
Du redest von Giver? Hat dein Bruder Bonjour für Windows installiert? Siehe http://www.apple.com/downloads/macosx/apple/windows/bonjourforwindows.html Außerdem: Firewall abschalten ist immer ne gute Idee bei solchen Problemen…
Gibt es Giver auch für MacOSX?
@Flummie
Nein, für MacOSX gibt es afaik bislang noch keinen Port. Hier http://groups.google.com/group/giver-list/browse_thread/thread/9236b05c5974ef2e wird aktuell drüber diskutiert.
Hey Leutz,
Vielleicht kann mir ja bitte wer sagen welches System des auf Screenshot1 ist? Ist des Gnome? Und wenn ja weis ja vielleicht noch wer woher ich den Style bekomme?
LG Alex
@Alex
Das ist GNOME. Infos zum Theme findest du unter Mein GNOME Desktop… Shiki bites the Dust 🙂
Hey,
Dankeschön 😉
Hi Chrissss,
super Artikel. Hat mal wieder Sachen gezeigt die ich noch nicht kannte. Wer weiß was sich noch alles für tolle Sachen in Ubuntu verstecken von denen ich noch nichts weiß
Weiter so 🙂
Hallo Christoph!
Ich lese deinen Blog schon länger und hab jetzt auch mal die Gelegenheit dir zu sagen dass er echt klasse ist und ich dir dafür danke. So, nun was anderes: Ich habe diese Avahi-Sache auch mal ausprobiert, da ich hier auch so ein kleines Bastelnetz (1 PDC, 4 heterogene Clients) habe mit dem ich Filme und Musik streame und Daten anbiete. Meine Frage ist nun ob du mir sagen kannst warum ich, wenn ich einen der Rechner anpinge, eine Antwort von ‚localhost‘ bekomme. Hier mal ein Auszug aus dem Terminal:
Die IP ist dabei tatsächlich die, die in der Router-Config der MAC-Adresse zugewiesen wurde.
Grüße,
Sebastian / Terahnee
@Sebastian
Vielen Dank für die Blumen 🙂 Das Verhalten kann ich auch hier nachvollziehen, doch ein „Warum das so ist“ kann ich dir leider nicht liefern. Wenn es dich brennend interessiert und dein Englisch nicht zu schlecht ist können dir die Jungs von Avahi sicherlich weiter helfen. Siehe http://avahi.org/wiki/AvahiCommunity
Auf meinem taufrischen Ubuntu 12.4 habe ich im Dash ein Icon „Installation abwartend“, beim Anklicken kommt in der Box „Avahi Discovery“am unterten Rand der ausgelesenen Daten die Meldung „Momentan ist kein Dienst ausgewählt“. Allen im Artikel ausgesprochenen Empfehlungen bin ich bereits gefolgt.
Was tun sprach Zeus… besser: „oh Zeus, was tun?“
Hoffnungsvoll
Ernst
Hall Ernst, schmeiß mal ein Terminal an und schau dir an, was apt-get dir ausgibt.
So bekommst du deutlich mehr Informationen, was da schief geht.
Grüße
Christoph
Schön‘ Abend – leider reichen meine Kenntnisse nicht, um in den – geschätzt – mehr als 100 Zeilen auch nur ein ausfindig zu machen, die sich auf „Avahi“ im Terminal beziehen könnte.
In der Box „Avahi Discovery“ bekomme ich Meldungen zu
eth0 IPv4
local
Areitsplatzrechner
„meinen-Desktop [….]
eth0 IPv6
….etc
und darunter „Momentan kein Dienst ausgewählt“, aber diesen auszuwählen, gelingt mir nicht.
Vielleicht gibt’s doch noch Hoffnung?
Ernst
Hallo Ernst, worum gehts denn genau?
Grüße
Christoph
Schö’n Abend Christoph,
es geht leider darum, daß Avahi mit Unity (Ubuntu 12/4) -noch- nicht funktioniert, wie ich nach einigen Recherchen herausgefunden habe: wiki.ubuntuusers.de/Avahi.
Zitat:
Das Service-Discovery-Applet ist ein Applet für das GNOME Panel (nicht Unity!). Durch einen Klick auf das Applet sieht man, welche Dienste im Netzwerk zur Verfügung stehen. Erscheinen neue Dienste, so wird dies über den Benachrichtigungsdienst dem Benutzer mitgeteilt. Das Applet lässt sich über die Paketverwaltung mit dem Paket
„service-discovery-applet (universe) –
installieren.
(hab‘ ich aber – folgsam – nicht installiert)
Ein weiterer (älterer) ubuntu-desktop im Netzwerk scheint bei mir im Ubuntu 12.4 zwar im „Avahi-Discovery“ auf, läßt sich aber nicht ansprechen.
Vielen Dank für die Zuwendung,
Ernst