Über den Hostnamen auf den Raspberry Pi zugreifen (Zeroconf/Bonjour/Avahi)

Wer den Raspberry Pi zum ersten Mal in Betrieb nimmt und darauf per SSH zugreifen möchte, der muss zuerst einmal die IPv4-Adresse herausfinden. Geschickterweise zeigt der Raspberry Pi nach dem Boot-Vorgang seine IPv4-Adresse auf dem Bildschirm an. Leider ändert sich die IPv4-Adresse immer mal wieder, 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.

Wer nicht mit IP-Adressen und deren Konfiguration hantieren möchte, kann das Problem auch mit Zeroconf lösen. Mit Zeroconf, auch Bonjour oder Avahi genannt, kann man innerhalb des lokalen Netzwerks eine Verbindung zum Raspberry Pi mit seinem Hostnamen aufbauen. Das heißt, statt der IP-Adresse, die man vielleicht gar nicht weiß, nimmt man einfach den Hostnamen, den man sich viel einfacher merken kann. Das funktioniert sowohl im Browser als auch per SSH.

Aufgabe

  1. Bonjour/Zeroconf/Avahi auf dem Raspberry Pi installieren.

Lösung

Zuerst installieren wir den Avahi-Daemon. Nicht wundern, der bringt so allerhand zusätzliche Pakete mit.

sudo apt-get install avahi-daemon

Wichtig ist, dass man nach der Installation dafür sorgen muss, dass der Daemon automatisch beim Booten gestartet wird.

sudo update-rc.d avahi-daemon defaults

Die Ausgabe sollte folgende sein:

update-rc.d: using dependency based boot sequencing

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.

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.