Raspberry Pi: Zeroconf / Bonjour / Avahi einrichten

Wer den Raspberry Pi unter Raspbian zum ersten Mal in Betrieb nimmt und darauf per SSH zugreifen möchte, der braucht dafür nicht zwangsläufig die IP-Adresse. Beim Boot-Vorgang wird die IP-Adresse auf dem Bildschirm angezeigt. Leider kann sich die IP-Adresse ändern, weil bei der IPv4-Adressvergabe durch den DHCP-Server immer mal wieder eine andere Adresse zugeteilt wird.

Wenn man einen Raspberry Pi "headless" also ohne Monitor und Tastatur betreibt, dann kann die Verbindungsaufnahme ziemlich nervig sein, weil der Raspberry Pi bei fast jedem Neustart eine andere IP-Adresse hat. In der Regel wird dann empfohlen eine feste IPv4-Adresse zu konfigurieren. Aber eigentlich ist das eine umständliche Lösung. Vor allem dann, wenn für die Anwendung eine feste IP-Adresse gar nicht notwendig ist.

Der Avahi-Daemon sorgt dafür, dass der Hostname eines Rechners im lokalen Netzewrk bekannt gemacht wird. Das funktioniert natürlich nur dann sicher, wenn alle Computer im Netzwerk Avahi bzw. Zeroconf oder Bonjour unterstützen.
Dann kann man Verbindungen einfach mit dem Hostnamen in Form von "hostname.local" aufbauen. Das funktioniert sowohl im Browser als auch per SSH.

Aufgabe

  1. Bonjour/Zeroconf/Avahi auf dem Raspberry Pi (Raspbian Jessie) installieren.
  2. Funktion von Bonjour/Zeroconf/Avahi im Netzwerk prüfen.

Lösung: Avahi in Raspbian Jessie installieren

Unter Raspbian Jessie ist Avahi bereits installiert. Wenn nicht, dann geht man wie folgt vor.

sudo apt-get update
sudo apt-get install avahi-daemon

Ab sofort ist ein Raspberry Pi standardmäßig unter dem Hostnamen "raspberrypi.local" zu erreichen. Wenn man den Hostnamen ändern will, dann kann man das mit "raspi-config" tun. Dabei bleibt aber das ".local" immer erhalten. Diese Top-Level-Domain (TLD) kennzeichnet einen Hostnamen im lokalen Netzwerk und muss in der Regel bei der Adressierung immer angegeben werden.

sudo raspi-config

In den "Advanced Options" von raspi-config gibt es den Menüpunkt "Hostname", mit dem man den Hostnamen des Raspberry Pi ändern kann.

Lösung: Avahi prüfen

Zum Prüfen, ob Avahi funktioniert, kann man die Avahi-Tools installieren und sich die announcierten Dienste anderer Host im Netzwerk anzeigen lassen.

sudo apt-get install avahi-utils
avahi-browse -a

Dieses Kommando beendet sich nicht von alleine. Beenden Sie es mit "Strg + C".

Troubleshooting: Keine Namensauflösung mehr

Wenn der Host nicht mehr per Computernamen erreichbar ist, dann empfiehlt es sich, den Avahi-Daemon zu deinstallieren und anschließend wieder zu installieren. Mehr kann man nicht machen.

sudo apt-get remove avahi-daemon
sudo apt-get install avahi-daemon

Hinweise

Damit der Raspberry Pi unter seinem Hostnamen erreichbar ist muss das jeweilige Betriebssystem den Bonjour-Dienst von Apple unterstützen. Bei Mac OS und den üblichen Linux-Distributionen ist das kein Problem. Das gehört dort praktisch zum Standard. Anders sieht es bei Windows aus. Hier muss man sich die Bonjour-Treiber von Apple herunterladen. Für Android gibt es leider keine praktikable Lösung.

Zeroconf/Bonjour/Avahi ist ein Announcierungsservice. Das bedeutet, der Service macht die Dienste, die ein Computer anbietet im lokalen Netzwerk bekannt. Typischerweise macht ein Drucker auf diese Weise in einem lokalen Netzwerk auf sich aufmerksam. Genauso kann jeder Computer in einem Netzwerk seinen Hostnamen bekannt machen. Auf diese Weise erfährt ein Client von einem Server dessen Hostnamen und es ist dann möglich, sich über den Hostnamen mit dem Server zu verbinden.
Konkret bedeutet dass, die Announcierung umfasst den Dienst, den Hostnamen und die dazugehörige IPv4- und IPv6-Adresse.

Zeroconf arbeitet auf Basis von Multicast-Nachrichten. Das heißt, die ausgehenden Datenpakete haben keinen bestimmten Empfänger, sondern gehen an alle Stationen im Netzwerk. Das hat zur Folge, dass diese Nachrichten über das ganze Netzwerk verteilt werden und einen Teil der Bandbreite belegen. Bei kleinen lokalen Netzwerken mit wenigen Teilnehmern ist das kein Problem. Bei großen Netzwerken können die Zeroconf-Nachrichten zum Problem werden.

Zeroconf ist ein Service, der auf der Anwendungsschicht arbeitet. Das bedeutet, dass Zeroconf erst dann funktioniert, wenn die Konfiguration auf den unteren Schichten abgeschlossen ist. Gemeint ist die IP-Konfiguration. So muss für IPv4 die Konfiguration per DHCP abgeschlossen sein und für IPv6 die automatische Adresskonfiguration. Alternativ können die IP-Adressen auch fest vergeben werden, aber genau das will man mit Zeroconf eigentlich vermeiden.
Die Announcierung von Diensten und Hostnamen kann erst erfolgen, wenn die IP-Konfiguration abgeschlossen ist. Das bedeutet, wenn ein Computer neu gestartet ist, dann dauert es eine Weile, bis Hostname und Dienste im lokalen Netzwerk bekannt sind. Wenn man also einen Raspberry Pi mit aktiviertem Zeroconf/Bonjour/Avahi in Betrieb nimmt, dann dauert es einige Sekunden, bis ein Verbindungsaufbau über den Hostnamen möglich ist.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!