[[Vorlage(Ausbaufähig, "Die Hinweise zu den [#Anwendungen Anwendungen] könnten aktualisiert werden. Siehe auch die [post:2950622:Diskussion] zum Thema.")]] [[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Dienste: Dienste (neu) starten] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./avahi_logo.png, 48, align=left)]] [https://avahi.org/ Avahi] {en} ist eine freie Implementation von [wikipedia:Zeroconf:], einer Technik zur Vernetzung von Geräten im selben Ethernet-Link, ohne dass diese konfiguriert werden müssen. So ist es möglich, zwei Rechner über ein Netzwerkkabel zu verbinden und sofort Daten austauschen zu können. Dazu brauchen keine festen IP-Adressen eingestellt zu werden. Avahi funktioniert prinzipbedingt nicht über Routergrenzen hinweg, sodass es nicht für größere Unternehmensnetze oder das Internet geeignet ist. Ziel ist es, lokale Netzwerke aufzubauen, die "einfach" funktionieren, d.h. ohne den Einsatz von Diensten wie DHCP oder DNS oder gar einer manuellen Konfiguration von IP-Adressen sollen sich Rechner im Netzwerk untereinander ansprechen und ihre Dienste nutzen können. So können einige [:Instant_Messenger:Instant Messaging]-Programme in einem LAN miteinander kommunizieren, ohne dass sie dazu einen Server brauchen, über den die Kommunikation läuft. Dasselbe gilt für [wikipedia:IP-Telefonie:VoIP], also Telefonieren (Audio- oder Videogespräche) im Netzwerk bzw. Internet. Ein anderes beliebtes Beispiel ist die Freigabe von Musikbibliotheken im lokalen Netzwerk. So kann man die Musiksammlung eines Rechners auf einem anderen nutzen, ohne dass man sich mit Dateifreigaben beschäftigen muss. Letztendlich soll es auch möglich sein, Dateien und Verzeichnisse freizugeben. = Installation = Avahi ist unter Ubuntu von Haus aus installiert. Sollte dies nicht der Fall sein, kann man den Dienst über das folgende Paket installieren [1] werden: {{{#!vorlage Paketinstallation avahi-daemon, universe }}} = Dienst steuern = Der Dienst kann ganz normal über systemd gesteuert werden: {{{#!vorlage Befehl sudo service avahi-daemon [status|start|stop|restart|force-reload|reload] }}} = Konfiguration = Avahi wird über die Datei '''/etc/avahi/avahi-daemon.conf''' konfiguriert [3]. Diese Datei ist noch sehr wenig kommentiert. Daher findet man wenig Details zu den einzelnen Optionen. Zahlreiche Informationen finden sich jedoch in der [:man:ManPage] zu `avahi-daemon.conf`. == Publishing == Avahi kann Netzwerkdienste im lokalen Netz ankündigen, wie es Windowsrechner und Samba Server tun: Im den Dateimanagern erscheinen dann die Zugriffsmöglichkeiten - z.B. über sftp. Will man anderen Nutzern ermöglichen, einen sftp Dienst im Netz zu finden so muss die Konfigurationsdatei für sftp-ssh in '''/etc/avahi/services''' angelegt werden: {{{#!vorlage Befehl sudo cp /usr/share/doc/avahi-daemon/examples/sftp-ssh.service /etc/avahi/services }}} Zusätzliche Konfigurationsmöglichkeiten sind Standard-Kennung und Verzeichnis: {{{#!code xml %h _sftp-ssh._tcp 22 path=/home/benutzer/ u=benutzer }}} Wer nicht möchte, dass Avahi Dienste in das lokale Netzwerk publiziert, kann diese Funktion deaktivieren. Dadurch ist es weiterhin möglich, die per Avahi annoncierten Dienste anderer Rechner zu benutzen, ohne selbst als Dienst zu erscheinen. Über die Option: {{{ disable-publishing=yes }}} wird Avahi fast ganz deaktiviert, selbst die lokale Namensauflösung funktioniert dadurch nicht mehr. Das Durchstöbern des Netzwerks nach Avahi-Diensten ist jedoch weiterhin möglich. Wer weiterhin die Namensauflösung über ''.local'' nutzen möchte, kann alternativ über {{{ disable-user-service-publishing=yes }}} das Veröffentlichen weiterer Dienste unterbinden. = Avahi im Netzwerk = == Lokale Namensauflösung == Avahi dient unter anderem der Namensauflösung im lokalen Netzwerk. Ohne dass ein DNS-Server im Netzwerk existiert oder IP-Adressen über DHCP oder manuell zugewiesen wurden, können Rechner über ihren Rechnernamen angesprochen werden. Dazu wird ein ''.local'' an den Rechnernamen gehängt, also beispielsweise ''rechnername.local''. Jeder Dienst des Rechners kann dann über diesen Namen angesprochen werden. Die Namensauflösung über Avahi wird nur bei den Desktop-Installationen von Ubuntu installiert. Bei einem Ubuntu-Server lässt sich die Funktionalität über das Paket {{{#!vorlage Paketinstallation libnss-mdns }}} nachinstallieren. Danach kann man über {{{#!vorlage Befehl ping rechnername.local }}} einen Rechner [:ping:anpingen] oder andere Netzwerkdienste benutzen: {{{PING rechnername.local (192.168.0.1) 56(84) bytes of data. 64 bytes from rechnername (192.168.0.1): icmp_seq=1 ttl=64 time=0.229 ms 64 bytes from rechnername (192.168.0.1): icmp_seq=2 ttl=64 time=0.259 ms ... }}} Auf beiden Geräte muss ein mDNS-Client laufen, sonst funktioniert die Namensauflösung über .local nicht. === Multicast-Probleme === Manche sehr alten Netzwerkkarten lassen so genannte [wikipedia:Multicast:]-Pakete fallen anstatt sie weiterzuleiten. Dies hat zur Folge, dass Avahi nicht funktioniert. Sollte Avahi - z.B. die Namensauflösung per "rechnername.local" - nicht funktionieren, so kann ein {{{#!vorlage Befehl # Allgemein sudo ifconfig allmulti # Beispiel sudo ifconfig eth0 allmulti }}} helfen. == Avahi und Netzwerkports == Damit Avahi andere Rechner findet und der eigene Rechner gefunden werden kann, öffnet Avahi den Netzwerk-Port `5353` sowie einen weiteren Port im Bereich `32768` bis `61000`. Dieses kann man mittels des Befehls [2] {{{#!vorlage Befehl sudo netstat -tulpen | grep avahi }}} am eigenen Rechner feststellen: {{{ udp 0 0 0.0.0.0:5353 0.0.0.0:* 104 4279 758/avahi-daemon: r udp 0 0 0.0.0.0:41339 0.0.0.0:* 104 4280 758/avahi-daemon: r }}} Hat man keine Verwendung für Avahi, so kann man den Dienst deaktivieren. Dazu erstellt man eine Sicherungskopie der Datei '''/etc/init/avahi-daemon.conf''' und entfernt sie dann mit Root-Rechten. {{{#!vorlage Experten Avahi beachtet grundsätzlich nur Verbindungen aus dem gleichen Ethernet-Link. Hängt der Rechner beispielsweise über ein DSL-Modem direkt im Internet, so braucht man keine Angst zu haben, dass Avahi Dienste des Rechners im Internet publiziert. }}} = Anwendungen = == Avahi-Dienste entdecken == Man kann das Netzwerk nach Diensten durchsuchen, die über Avahi ihre Dienste im Netzwerk veröffentlichen. So erfährt man, welche Dienste im Netzwerk verfügbar sind und wenn Dienste neu gefunden wurden. === Avahi Zeroconf Browser === [[Bild(./avahi_discovery.png, align=right)]] Avahi-Discover ist eine kleine Anwendung, die das Netzwerk durchsucht. Die Ergebnisse werden in einer Baumansicht dargestellt. Klick man auf einen Dienst, so erhält man weitere Informationen zu diesem. Avahi-Discover kann über die offiziellen Paketquellen installiert werden: {{{#!vorlage Paketinstallation avahi-discover, universe }}} Nach der Installation kann man das Programm bei Ubuntu-Varianten mit einem Anwendungsmenü über ''"System -> Avahi Zeroconf Browser"'' starten. == Avahi per Kommandozeile == Nützliche Anwendungen enthält das Paket {{{#!vorlage Paketinstallation avahi-utils }}} Es enthält zum Beispiel die Kommandos "`avahi-browse`", "`avahi-publish`" und "`avahi-resolve`". Näheres dazu findet man in den betreffenden [:man:Manpages]. == Anwendungen == Es gibt eine Reihe von Anwendungen, die bereits Funktionen von Avahi nutzen können. Die Tabelle soll diese Programme aufführen und grob die Funktionsweise im Zusammenhang mit Avahi erklären. || '''Anwendung''' || '''Wie die Avahi Funktion aktivieren''' || '''getestet mit''' || ##|| [:Apache:] || Ist Apache mit Unterstützung für Avahi/Zeroconf installiert, so publiziert Apache seine Dienste im lokalen Netzwerk. Manche Webbrowser zeigen im LAN entdeckte Webserver in einem gesonderten Bereich der Bookmarks an. || Ubuntu 6.06 || || [:Banshee:] || Banshee kann DAAP-Musikfreigaben von Rhythmbox oder iTunes einbinden und die eigene Musik freigeben, wenn das PlugIn "Musik Freigabe" aktiviert ist || Ubuntu 8.04 || || [:Epiphany:] || Befindet sich im Netzwerk ein Webserver, der für Avahi konfiguriert ist, so erscheint dieser automatisch unter ''"Lesezeichen -> Lokale Seiten"''. || Ubuntu 6.06 || || [:Gajim:] || Über Gajim und Avahi ist es möglich zu chatten, ohne einen Jabber-Server im LAN zu haben. Wichtig für Gajim ist, dass Avahi so konfiguriert ist, den D-Bus zu benutzen (Siehe Konfiguration). Unter Gajim selber muss unter ''"Ändern -> Konten"'' die Option ''"Kontakte im LAN anzeigen"'' aktiviert werden. Es muss das Paket '''python-avahi''' (''universe'') installiert werden. || Ubuntu 7.04 || || [:Gobby:] || Gobby ist ein kollaborativer Texteditor. D.h. dass mehrere Leute gleichzeitig an einem Text arbeiten können. In Gobby ist Avahi schon weitestgehend implementiert. Im LAN aktive Sitzungen werden im ''"Sitzung beitreten"'' Dialog unter ''"Lokales Netzwerk"'' angezeigt. || Ubuntu 6.06 || || [:Rhythmbox:] || Rhythmbox kann die freigegeben Musiksammlungen anderer AudioPlayer wie iTunes oder Banshee über das Netzwerk einbinden. Dazu muss man jedoch das Plugin ''"DAAP-Musikverteilung"'' [:Rhythmbox:aktivieren]. Dies ist von Haus aus noch nicht aktiviert. || Ubuntu 7.04 || || [:Pidgin:] || Bei Pidgin nennt sich die Funktionalität, direkt im LAN mit anderen Instant-Messaging Client-Programmen zu "chatten", "Bonjour". Man kann sich dazu unter ''"Konten -> Hinzufügen -> Bonjour"'' ein "Konto" hinzufügen. Die Daten sind dabei frei wählbar. || Ubuntu 16.04 || || Krfb/Krdc || Die Desktopfreigabe unter KDE wird über Avahi im Netzwerk bekannt gemacht. || ? || || [:Amarok:] || Amarok lässt sich als Client der DAAP-Musikverteilung einrichten. Dazu unter Media-Player ein Gerät einrichten, bei dem als Typ "Musikverteilung" ausgewählt wird. Als Server kann Amarok aber nicht fungieren, hier ist mt-daap in den Gutsy-Quellen. Nach der Installation von mt-daap ist der Server über avahi im gesamten Netzwerk veröffentlicht. Das Konfigurationspanel öffnet über den Browser beim Anklicken des Dienstes, Benutzername ist dann "admin" und das voreingestellte Passwort ist "mt-daapd" || ? || [[Anker(Windows)]] == Avahi und Microsoft Windows == Apple hat für Avahi/Zeroconf (bei Apple Bonjour genannt) einen [https://support.apple.com/downloads/Bonjour_for_Windows Client] {en} für Microsoft Windows geschrieben. Nach Installation des Clients funktioniert beispielsweise die Auflösung lokaler Rechnernamen über ''rechnername.local''. Zusätzlich wird in die Werkzeugleiste des Internet Explorers eine Schaltfläche eingeblendet, über die sich die im lokalen Netzwerk vorhandenen Webserver anzeigen lassen. = Beispiel = Innerhalb eines Netzwerkes kann man dank Avahi plattformunabhängig chatten und (teilweise auch) Dateien versenden. [:Instant_Messenger:] wie [:Pidgin#Zeroconf-Avahi:] und [:Empathy:] oder auch iChat sowie Adium (beide Mac OS X) unterstützen diese Funktion. Einfach auf dem Rechner z.B. Pidgin öffnen und unter ''"Account -> Hinzufügen -> Protocol:Bonjour"'' auswählen. Den bevorzugten Benutzernamen wählen und fertig. Jetzt kann man von allen anderen Computern innerhalb des selben Netzwerks (LAN) gesehen und angeschrieben werden. {{{#!vorlage Hinweis Avahi zusammen mit mDNS löst im lokalen Netzwerk auch Rechnernamen zu IP-Adressen und umgekehrt auf. Daraus können sich auch Probleme ergeben. Es ist darauf zu achten, daß die Namen aller Rechner im lokalen Netzwerk eindeutig sind, d.h. nicht zwei Rechner den gleichen "hostname" besitzen (s. ''/etc/hostname''). Ebenso ist es problematisch, wenn zwei Rechner (mit unterschiedlichem Namen) im lokalen Netzwerk die gleiche IP-Adresse haben. Das ist zwar unter normalen Umständen nicht der Fall, außer man hat die wesentlichen Grundregeln bei der Konfiguration des Netzwerks missachtet. Es gibt aber hier speziell im Zusammenhang mit Avahi eine nicht gleich offensichtliche Falle. Diese äußert sich dann darin, daß die Log-Dateien (''syslog'' und ''daemon.log'') aller (Linux)-Rechner im Netzwerk zahlreiche Einträge dieser Art enthalten: {{{ pp avahi-daemon[1963]: Invalid legacy unicast query packet. ... pp avahi-daemon[1963]: Received response from host 192.168.xxx.yyy with invalid source port 39506 on interface 'eth0.0' ... \}}} Dies passiert, wenn man ein Linux-System in einer VM (z.B. [:VirtualBox:]) betreibt und das Netzwerkinterface für die VM auf "NAT-networking" konfiguriert hat. Dann erscheint nämlich das Gastsystem in der VM nach außen im Netzwerk mit der IP-Adresse des Hosts! Für alle Rechner im Netzwerk gibt es nun 2 Avahi-Daemonen mit dergleichen IP. Dies führt - auch in den Logs des Hosts auf dem die VM läuft - zu den genannten Fehlermeldungen. Da dies auch NAS-Systeme (die meist unter Linux laufen) betrifft, wird deren Festplatte beim Starten einer so konfigurierten VM auf einem Rechner deren Festplatte hochfahren, um die Log-Einträge zu schreiben. Die Lösung ist hier ganz einfach: das Netzwerk-Interface der VM (statt auf NAT) auf "bridged networking" zu konfigurieren. Wer das aus bestimmten Gründen nicht will, muss Avahi in den Gastsystemen deaktivieren. }}} = Links = * [https://avahi.org/ Projektseite] {en} * [wikipedia:Avahi_(Software):Avahi in der Wikipedia] * [https://linuxundich.de/gnu-linux/netzwerken-im-21-jahrhundert/ Verwendung von Avahi im Heimnetzwerk] {de} - Blogbeitrag, 02/2009 * [https://www.linux-magazin.de/heft_abo/ausgaben/2006/03/walk_of_fame Walk of Fame] {de} - Artikel im Linux Magazin zu Avahi/Zeroconf, 03/2006 # tag: Netzwerk, System, Server, DLNA