Start GNU/Linux Netzwerken im 21. Jahrhundert

Netzwerken im 21. Jahrhundert

7540
20

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.

Viele Router können über die MAC Adresse einem Rechner immer die selbe IP zuweisen.
Viele Router können über die MAC Adresse einem Rechner immer die selbe IP zuweisen.

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.

Epiphany bindet automatisch Webserver in die Lesezeichen ein, die sich über Avahi/Zeroconf im Netzwerk bekannt machen.
Epiphany bindet automatisch Webserver in die Lesezeichen ein, die sich über Avahi/Zeroconf im Netzwerk bekannt machen.

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.

Verschiedene IM-Clients unterhalten sich ohne zentrale Server via Avahi/Zeroconf
Verschiedene IM-Clients unterhalten sich ohne zentrale Server via Avahi/Zeroconf

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.

Mit Giver Daten zwischen zwei Rechner austauschen.
Mit Giver Daten zwischen zwei Rechner austauschen.

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.

Musik mittels Rhythmbox und DAAP streamen.
Musik mittels Rhythmbox und DAAP streamen.

Danach taucht die eigene Musik automatisch in iTunes, Banshee und Co. der anderen Mitglieder des eigenen LANs auf.

Mittels DAAP freigegebene Musik in iTunes bzw. Banshee.
Mittels DAAP freigegebene Musik in iTunes bzw. Banshee.

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.

20 Kommentare

  1. 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…

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

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

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

  5. 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 🙂

  6. 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:

    sebastian@sonne:~$ ping mars.local -c4
    PING mars.local (192.168.0.6) 56(84) bytes of data.
    64 bytes from localhost (192.168.0.6): icmp_seq=1 ttl=128 time=7.30 ms
    64 bytes from localhost (192.168.0.6): icmp_seq=2 ttl=128 time=0.159 ms
    64 bytes from localhost (192.168.0.6): icmp_seq=3 ttl=128 time=0.157 ms
    64 bytes from localhost (192.168.0.6): icmp_seq=4 ttl=128 time=0.160 ms
    --- mars.local ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3011ms
    rtt min/avg/max/mdev = 0.157/1.944/7.301/3.092 ms
    

    Die IP ist dabei tatsächlich die, die in der Router-Config der MAC-Adresse zugewiesen wurde.

    Grüße,
    Sebastian / Terahnee

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

      $ sudo apt-get update
      $ sudo apt-get dist-upgrade
      

      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

        • 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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein