Raspberry Pi: Statische/feste IPv4-Adresse für Raspbian Wheezy

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, sofern man ihn mit Tastatur und Bildschirm in Betrieb nimmt. Leider ändert sich die IPv4-Adresse immer mal wieder, weil bei der IPv4-Adressvergabe durch den DHCP-Server im lokalen Netzerk nicht immer die gleiche Adresse zugeteilt wird, sondern dynamisch irgendeine aus seinem Adress-Pool.

Sofern man den Raspberry Pi als Client benutzt, ist das kein Problem. Doch wenn man den Raspberry Pi als Server innerhalb des lokalen Netzwerk betreiben möchte oder öfter mal per SSH darauf zugreifen will, dann ist eine feste IPv4-Adresse von Vorteil.

Hinweis: In der Fachsprache spricht man nicht von einer "festen IP-Adresse", sondern von einer "statischen IP-Adresse", weil es im Gegensatz dazu dynamische IP-Adressen gibt, die von einem DHCP-Server zugewiesen werden. Im Falle einer "statischen IP-Adresse" spricht man von einer manuellen IP-Konfiguration.

Mehr zum Thema IPv4-Adressen und DHCP:

Hinweis: Wenn man statische IP-Adressen konfiguriert, dann sollten diese nicht aus dem DHCP-Pool eines DHCP-Servers kommen.

Aufgabe

  1. Ermitteln Sie eine freie IPv4-Adresse und die weitere IP-Konfiguration.
  2. Stellen Sie die IPv4-Konfiguration auf statisch um.
  3. Prüfen Sie die IPv4-Konfiguration.
  4. Prüfen Sie die Netzwerk-Verbindung auf Funktion.

Hinweis zur statischen IPv4-Konfiguration unter Raspbian Wheezy vom 2015-05-05

Die Vorgehensweise bei der manuellen (statischen) IPv4-Konfiguration eines Raspberry Pi ist von der Distribution und deren Versionsstand abhängig. Ab Raspbian Wheezy vom 2015-05-05 hat sich etwas entscheidendes geändert, weshalb alte Beschreibungen, Tutorials und Anleitungen zu fehlerhaften Netzwerk-Konfigurationen führen können. Ein beliebter Fehler ist, dass ein Raspberry Pi plötzlich zwei IPv4-Adressen hat. Einmal per DHCP zugewiesen und die zweite durch eine manuelle Konfiguration in der Datei "/etc/network/interfaces".

Ab Raspbian Wheezy vom 2015-05-05 ist standardmäßig ein DHCP Client Daemon (DHCPCD) aktiv, der dann zum Problem wird, wenn man die IPv4-Konfiguration manuell vornehmen will.
Um sich Probleme zu ersparen, sollte man ermitteln, ob der "dhcpcd" aktiv ist und Einfluss auf die Netzwerk-Konfiguration nehmen kann.

Den Status von "dhcpcd" kann man wie folgt ermitteln.

sudo service dhcpcd status

Ist die Ausgabe "dhcpcd: unrecognized service", dann ist der Daemon nicht installiert. Dann kann man die manuelle IPv4-Konfiguration ganz regulär vornehmen.

Wenn "dhcpcd" aktiv ist, dann muss er zuerst ausgeschaltet werden. Anschließend muss man noch dafür sorgen, dass er beim Booten nicht wieder gestartet wird.

sudo service dhcpcd stop
sudo update-rc.d -f dhcpcd remove

Letzteres Kommando sorgt dafür, dass der "dhcpcd" beim Booten nicht mehr gestartet wird und bei der Netzwerk-Konfiguration nur der Inhalt der Datei "/etc/network/interfaces" berücksichtigt wird.

Wenn man radikal sein will, dann kann man den "dhcpcd" auch ganz entfernen (nicht empfohlen).

sudo apt-get remove dhcpcd5

Um den Vorgang rückgängig zu machen:

sudo apt-get install dhcpcd5 raspberrypi-net-mods
sudo reboot

Lösung: Statische/manuelle IPv4-Konfiguration bei Raspbian Wheezy bis 2015-05-05 (alte Methode)

Um die IPv4-Konfiguration statisch bzw. manuell vorzunehmen, öffnet man die Datei mit den Netzwerk-Einstellungen.

sudo nano /etc/network/interfaces

Wenn diese Datei leer ist, dann mit "Strg + X" schließen und die folgende Datei verwenden.

sudo nano /etc/systemd/network

Bei einem frischen System befinden sich dort unter anderem folgende Zeilen:

auto eth0
iface eth0 inet dhcp

oder

auto eth0
allow-hotplug eth0
iface eth0 inet manual

Diese Zeilen sagen, dass sich die Schnittstelle "eth0" die IPv4-Konfiguration per DHCP besorgen soll. Das heißt, der Raspberry Pi befragt im lokalen Netzwerk einen DHCP-Server nach der IPv4-Konfiguration.
Sind die Schnittstellen "eth0", "wlan0" oder ähnlich auf "manual" gesetzt, dann heißt das, dass die Steuerung und Konfiguration der Interfaces an einen Netzwerk-Manager delegiert wird.

Der DHCP-Server liefert dann unter anderem die IPv4-Adresse, die Subnetzmaske, das Standard-Gateway und den DNS-Server. Die selben Angaben benötigt man bei der statischen IP-Konfiguration.

Die Zeilen oben ersetzt man wie folgt:

# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
dns-domain raspberrypi.local # optional

Es handelt sich hierbei um eine Beispiel-Konfiguration. Diese kann funktionieren, muss aber nicht. Sie einfach auszuprobieren ist nicht sinnvoll. Man sollte vorher klären, was man hier eintragen muss und nicht irgendwie herumprobieren. Hilfreich ist es, wenn man nachschaut, was andere Clients im eigenen Netzwerk haben. Bei der Vergabe der IP-Adresse muss man jedoch darauf achten, dass man eine IPv4-Adresse wählt, die NICHT verwendet wird und sich auch nicht im Adress-Pool eines DHCP-Servers befindet. Ansonsten wird es zu Verbindungsproblemen im Netzwerk kommen.

Manche Beispiel-Konfigurationen verzichten auf die Angabe eines Nameservers (dns-nameservers). Das führt dann aber unter Umständen zu Problemen bei der Namensauflösung. In der Regel wird es Probleme bei Verbindungen ins Internet geben.
Die Optionen "broadcast" und "network" kann man sich sparen, weil sich das aus der IPv4-Adresse und der Subnetzmaske ergibt.

Hinweis: Die Angabe "allow-hotplug eth0" ist wichtig. Wenn dieser Eintrag fehlt, dann muss man die Schnittstelle mit dem Kommando "sudo ifup eth0" manuell starten. Mit der Option "allow-hotplug" wird die Schnittstelle bei einem Kernel-Event automatisch aktiviert und konfiguriert.

Nachdem man die Änderungen vorgenommen hat kann man die Datei speichern und schließen: Strg + O, Return, Strg + X.

Standardmäßig ist "resolvconf" installiert. Wenn nicht, dann muss die Konfiguration für die Namensauflösung manuell durchgeführt werden, indem folgende Einträge in der Datei "/etc/resolv.conf" vorgenommen werden.

nameserver 192.168.1.1
domain localhost raspberrypi.local

Man hat jetzt nur die Dateien geändert. Damit werden die Änderungen aber noch nicht in die aktuelle Konfiguration übernommen. Grundsätzlich empfiehlt sich hier ein Reboot, wenn man per SSH die Konfiguration vorgenommen hat.

sudo reboot

Alternativ kann man das Interface "eth0" aus- und wieder einschalten. Das ist aber nur dann sinnvoll, wenn man NICHT per SSH verbunden ist, sondern lokal mit Bildschirm und Tastatur am Raspberry Pi sitzt.

sudo service networking restart

oder

sudo ifdown eth0
sudo ifup eth0

Dadurch wird das Interface "eth0" beendet und neu gestartet. Beim Start werden die Einstellungen übernommen. Danach müsste der Raspberry Pi mit seiner statischen IPv4-Adresse erreichbar sein.

Hinweis: Man sollte sich nicht angewöhnen mit "ifdown" und "ifup" zu arbeiten. Wenn man lokal am Raspberry Pi arbeitet, dann ist das sicherlich in Ordnung. Nur wenn man das Remote per SSH macht, dann schießt man sich mit "ifdown" die Schnittstelle ab und hat danach keinen Zugriff mehr für "ifup". Dann muss man den Raspberry Pi vom Strom nehmen und wieder in Betrieb nehmen. Ungünstig, wenn man keinen räumlichen Zugriff auf den Raspberry Pi hat. Also lieber einen Reboot vornehmen. Wenn man keine Fehlkonfiguration gemacht hat, dann kann man sich auch wieder verbinden.

Lösung: IPv4-Einstellungen prüfen

Ob die IPv4-Einstellungen korrekt übernommen wurden, sollte man prüfen.

ip a

Das Interface "eth0" muss dann in der Zeile mit "inet-Adresse" die statische konfigurierte IPv4-Adresse bekommen haben.

Dann prüft man, ob das Standard-Gatway eingetragen ist.

ip r

Wenn "default" auf die richtige IPv4-Adresse des Standard-Gateways zeigt, dann ist alles in Ordnung.

Jetzt fehlt noch der DNS-Server.

cat /etc/resolv.conf

Steht hinter "nameserver" die IPv4-Adresse des DNS-Servers, dann ist auch hier alles in Ordnung.

Erläuterungen zur Datei /etc/network/interfaces

Wie die Datei "/etc/network/interfaces" aussieht hängt von der Distribution, von deren Version und eventuell eigenen Änderungen ab. Die Erläuterungen besprechen wir anhand der Original-Datei ab Raspbian Jessie.
Die Datei sieht wie folgt aus:

# Please note that this file is written to be used with dhcpcd.
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'.

auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet manual auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf auto wlan1 allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

In dieser Datei wird die Netzwerk-Konfiguration für die Netzwerk-Schnittstellen vorgenommen. In dieser Datei sind die Schnittstellen "lo", "eth0", "wlan0" und "wlan1" aufgeführt.
Die Schnittstelle "lo" ist der so genannte Localhost. Das ist ein virtuelles Interface für das Gerät. Es muss immer vorhanden sein. Wenn nicht führt das zu vielfältigen Fehlern.
Die Schnittstelle "eth0" ist die Ethernet-Schnittstelle, die als RJ45-Port den Raspberry Pi über ein Kabel mit dem LAN verbindet. Eine weitere Schnittstelle, über einen Ethernet-USB-Adapter würde die Bezeichnung "eth1" usw. haben.
Die Schnittstellen "wlan0" und "wlan1" sind Funk-Schnittstellen für WLAN bzw. Wifi. Diese Schnittstellen sind aber nur dann verfügbar, wenn der Kernel einen WLAN-Adapter erkannt hat und den Treiber dafür installieren und initialisieren konnte. Die Konfiguration der WLAN-Authentifizierung kann wahlweise über die Datei "/etc/network/interfaces" oder "/etc/wpa_supplicant/wpa_supplicant.conf" erfolgen.

Die Initialisierung einer bestimmten Schnittstelle erfolgt über die Optionen "auto" und/oder "allow-hotplug".
"auto <INTERFACE>" sorgt dafür, dass die Schnittstelle während des Systemstarts aktivieren und entsprechend dem iface-Eintrag konfiguriert wird, wenn der Kernel die physikalische Schnittstelle erkennt. "allow-hotplug <INTERFACE>" sorgt dafür, dass die Schnittstelle aktiviert und entsprechend dem iface-Eintrag konfiguriert wird, sobald der Kernel ein Hotplug-Ereignis von der Schnittstelle empfängt. Beispielsweise stecken des Netzwerkkabels an einem aktiven Port oder das Erkennen eines konfigurierten WLANs. Die Option "allow-hotplug“ schließt "auto" also mit ein.

In der Original-Datei ist die IPv4-Konfiguration der Schnittstellen "eth0", "wlan0" und "wlan1" auf "manual" gesetzt. Das heißt, die Steuerung und Konfiguration der Schnittstellen wird an einen Netzwerk-Manager delegiert. "manual" bedeutet, dass diese Datei für die IP-Konfiguration nicht zuständig ist.
Weitere Parameter für die Option "iface" sind "static" für die statische IP-Konfiguration, was weitere Angaben erfordert, und "dhcp" für den Bezug der IP-Konfiguration von einem DHCP-Server.

Wird ein Interface mit "auto <INTERFACE>" bedeutet das, dass das Interface beim Systemstart hochgefahren wird. Im Fall von "wlan0" oder "wlan1" würde dann nach einem Access-Point gesucht werden und dann je nach Konfiguration nach dem DHCP-Server.
Wenn der DHCP-Server nicht erreichbar ist, weil bei "eth0" das Netzwerk-Kabel nicht gesteckt ist oder weil bei "wlan0" keine Funkverbindung hergestellt werden kann, dann verzögert sich der Bootvorgang des ganzen Systems.
Wenn möglich sollte man "auto <INTERFACE>" weglassen. Dann wird das Interface unter Umständen später gestartet, verzögert aber den Bootvorgang nicht.

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!

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!

Collection: IPv6

Alles was Sie über IPv6 wissen müssen.

Eine PDF-Datei mit allen Artikeln über das Internet Protocol Version 6 von dieser Webseite. Die Zusammenstellung berücksichtigt die Einführung in die Grundlagen von IPv6 mit detailreichen Beschreibungen und zahlreichen Tabellen und Abbildungen. Erfahren Sie mehr über die Möglichkeiten und Zusammenhänge im IPv6-Netzwerk.

Mehr Informationen und zum Download