Netzwerk-Probleme beim Raspberry Pi lösen

Folgende Hinweise sollen bei einer Reihe typischer Netzwerk-Probleme mit dem Raspberry Pi helfen.

  • Netzwerk-Schnittstelle "eth0" fehlt
  • Netzwerk-Verbindung geht vorloren
  • Verzögerung beim Booten
  • Die Datei "/etc/resolv.conf" wird überschrieben
  • Doppelte IPv4-Adressen
  • Fehlende IPv4-Konfiguration
  • Fehlermeldungen auf der Kommandozeile wegen dem Hostnamen
  • Keine Internet-Verbindung mehr

 

Problem: Netzwerk-Schnittstelle "eth0" fehlt

Bei der Netzwerk-Konfiguration stellt man fest, dass die interne Netzwerk-Schnittstelle "eth0" fehlt. Statt dessen existiert eine Schnittstelle mit der Bezeichnung "enx...".

Seit Raspbian Jessie werden für USB-Adapter die Netzwerk-Schnittstellen "eth0" usw., sowie "wlan0" usw. durch "enx..." bzw. "wlx..." plus MAC-Adresse ersetzt. Dadurch wird die Schnittstellenbezeichnung an das Hardware-Interface gebunden und vermeidet Verwechslungen. Leider hat das den Nachteil, dass die gewohnten Kürzel nicht mehr funktionieren.

Eine Lösung wäre, zuerst die individuelle Bezeichnung zu ermitteln und die Netzwerk-Konfiguration anhand der individuellen Bezeichnung vorzunehmen. Eine andere Lösung wäre, die Namensgebung auf das alte Verfahren umzustellen.

 

Probleme: Netzwerk-Verbindung geht verloren

Die Problem-Beschreibungen lauten wie folgt:

  • Der Raspberry Pi verbindet sich nach dem Booten ohne Probleme mit dem Netzwerk. Allerdings reist die Verbindung nach einiger Zeit ab und wird auch nicht wieder hergestellt.
  • Nach einiger Zeit funktioniert der Zugriff aus der Ferne nicht mehr. Dann hilft nur Stecker ziehen.
  • ...

Analyse

90% aller Netzwerk-Probleme, die auf Verbindungsprobleme beruhen, haben mit der Stromversorgung zu tun.

  • Ein zu langes oder ungeeignete USB-Kabel zwischen Netzteil und Raspberry Pi.
  • Das Netzteil ist zu schwach oder für den Betrieb am Raspberry Pi mit stark schwankender Stromentnahme durch zusätzliche USB-Geräte ungeeignet.

Oft stehen Netzwerk-Probleme beim Raspberry Pi im Zusammenhang mit einer instabilen Stromversorgung. So kann es passieren, dass bei einer zu geringen Betriebsspannung, unter 5 Volt, der Raspberry Pi zur Stabilisierung, den Stromverbrauch reduziert, in dem er einzelne Komponenten abschaltet. Zum Beispiel den USB. Dort hängen nicht nur die üblichen Peripherie-Geräte dran, sondern intern auch noch der Ethernet-Port. Geht der interne USB außer Betrieb, dann betrifft das auch die Netzwerk-Verbindung. Die geht bei stabiler Betriebsspannung wieder in Betrieb. Doch das bedeutet nicht, dass danach alles wieder so funktioniert, wie gewünscht.

Lösung

Bei sporadischen Ausfällen und Netzwerk-Problemen sollte man zuerst das Netzteil tauschen. Vor allem dann, wenn die Netzwerk-Konfiguration schon mal funktioniert hat, und dann auf einmal nicht mehr. Oft ist dann das Netzteil Schuld.

 

Problem: Verzögerung beim Booten

Beim Booten bleibt der Boot-Prozess mit der Fehlermeldung "A start Job ist running for dhcpcd on all interfaces" stehen. Neben dieser Fehlermeldung erscheinen rot gefärbte Sternchen. Dahinter läuft ein Zähler, der ca. 1 Minuten und 30 Sekunden abwärts zählt. Bis dahin passiert nichts, was insgesamt die Boot-Dauer des Raspberry Pi um diese Zeit verlängert.

Analyse

Es geht um den Dienst "dhcpcd". Das ist der DHCP Client Daemon (DHCPCD), der dafür zuständig ist, dass alle Netzwerk-Schnittstellen eine IP-Konfiguration bekommen. Der Grund, warum der hier nicht weiterläuft ist, dass eine der Netzwerk-Schnittstellen noch keine Verbindung zum Netzwerk hat. Es kann sein, dass das Netzwerkkabel noch nicht gesteckt ist und/oder, dass ein WLAN-Adapter keine WLAN-Verbindung konfiguriert ist oder das eingerichtete WLAN-Netz nicht erreichbar ist.

Das Problem tritt auch dann auf, wenn eine Netzwerk-Konfiguration vorhanden ist, aber keine Netzwerk-Verbindung besteht.

Lösung 1: Boot-Verzögerung durch DHCPCD verkürzen

Dazu nimmt man eine Änderung in der folgenden Datei vor:

sudo nano /etc/dhcpcd.conf

Dort trägt man folgende Zeile ein (Angabe in Sekunden):

timeout 5

Lösung 2: Mit dem Netzwerk verbinden

Es gibt nur eine wirkliche Lösung. Man muss den Raspberry Pi mit dem Netzwerk verbinden. Entweder per Kabel oder WLAN. Am schnellsten geht es per Kabel, weil das Interface dann sofort beim Booten bereitsteht. Bei WLAN kann es länger dauern, weil sich das Interface zuerst gegen über dem WLAN-Access-Point authentifizieren muss.

 

Problem: Die Datei "/etc/resolv.conf" wird nach dem Reboot überschrieben

Nach einem Reboot des Systems steht in der Datei "/etc/resolv.conf" immer eine falsche IP-Adresse. Wenn dann der richtigen DNS-Server manuell eingetragen wird, wird die Datei nach einem Reboot wieder überschrieben.
Wie kann ich dafür sorgen, dass in der Datei "/etc/resolv.conf" automatisch der richtige DNS-Server eingetragen wird?

Analyse

Grundsätzlich wird die Datei "/etc/resolv.conf" wird automatisch erzeugt. Manuelle Änderungen vorzunehmen haben nur temporäre Auswirkungen. Meist sind die Änderungen nach einem Reboot wieder weg. Manchmal halten sie auch Stunden oder Tage. Was eher die Ausnahme ist.
Es gibt Dienste, die diese Datei konfigurieren. Und das ist im Prinzip auch gut so. Die Frage ist jetzt, was macht man, wenn man eine statische Konfiguration vornimmt? Dann sind solche Dienste kontraproduktiv.

Als erstes gilt es, herauszufinden, welcher Dienst einem da in die Suppe spuckt. Es gibt mehrere Möglichkeiten. Zur Auswahl stehen diverse DHCP-Clients und Netzwerk-Manager. Zum Beispiel "dhcpcd". Beide haben die Aufgabe, die Netzwerk-Schnittstellen mit einer IP-Konfiguration zu versehen. Bei IPv4 per DHCP und bei IPv6 per SLAAC oder DHCPv6.

Deshalb interessiert uns, welcher DHCP-Client läuft:

sudo ss -tulpen | grep -i dhc

Lösung 1: DHCP-Dienst ausschalten

Grundsätzlich löst man das Problem dadurch, dass man diese Dienste abschaltet oder ganz entfernt (bedingt empfohlen).

Ist der "dhcpcd" installiert? Wenn ja, dann deaktivieren. Danach empfiehlt sich ein Reboot.

sudo service dhcpcd status
sudo service dhcpcd stop
sudo systemctl disable dhcpcd

Lösung 2: Schreibschutz für "/etc/resolv.conf"

Eine Quick&Dirty-Lösung wäre, die Datei "/etc/resolv.conf" auf readonly zu setzen. Vorher muss man den DNS-Server noch manuell eintragen.
Das behebt aber nicht den grundsätzlichen Konfigurationsfehler. Diese Lösung sollte man nur in Ausnahmefällen wählen.

sudo chattr +i /etc/resolv.conf

Lösung 3: "resolvconf" ausschalten (nicht empfohlen)

Eine Alternative wäre noch "resolvconf" zu deinstallieren und die Datei "/etc/resolv.conf" danach händisch zu pflegen. Falls das System nicht mobil ist, wäre das kein großer Nachteil.

 

Problem: Doppelte IPv4-Adressen

Ein beliebter Fehler ist, dass der Raspberry Pi zwei IPv4-Adressen an einer Netzwerk-Schnittstelle hat. Eine Auswirkung kann sein, dass ein Interface zwei IP-Adressen hat oder eine IP-Konfiguration, die man nicht vorgesehen hat.
Manchmal bemerkt man davon nichts. Und es hat auch nicht zwangsläufig irgendwelche Auswirkungen. Trotzdem muss man mit Netzwerk-Problemen rechnen.

Analyse

Das liegt daran, weil man unwissentlich zwei unterschiedliche Arten der IPv4-Konfiguration parallel betreibt. Trotz oder gerade wegen einer statischen IP-Konfiguration hat der Raspberry Pi zwei IP-Adressen. Eine die man selbst vergeben hat und eine zweite, die irgendwie über DHCP vergeben wurde. Beide kann man anpingen und sich per SSH verbinden (manchmal auch nicht).

Dazu muss man wissen, dass seit Raspbian Wheezy vom 2015-05-05 und Raspbian Jessie die Netzwerk-Konfiguration über den DHCP Client Deamon (DHCPCD) erfolgt und nicht mehr in der Datei "/etc/network/interfaces". Wenn man es trotzdem tut, dann hat der DHCPCD die Angewohnheit, die Netzwerk-Konfiguration, die in der Datei "/etc/network/interfaces" eingetragen ist, mit seiner eigenen zu ersetzen oder hinzuzufügen (je nach Konstellation).

Um festzustellen, ob das Problem tatsächlich vorliegt, prüfen wir, ob ein DHCP-Client installiert und aktiv ist.

sudo service dhcpcd status

Lösung 1: DHCPCD deaktivieren (nicht empfohlen)

Wenn man weiterhin die Netzwerk-Konfiguration in der Datei "/etc/network/interfaces" vornehmen möchte oder muss, dann empfiehlt es sich, den DHCPCD zu deaktivieren.

Hinweis: Diese Lösung ist nicht zu empfehlen. Allerdings gibt es Netzwerk-Konfigurationen, die man nur in der Datei "/etc/network/interfaces" vornehmen kann. Man muss dann mit den Vor- und Nachteilen leben.

Lösung 2: Netzwerk-Konfiguration per DHCPCD

Die grundsätzliche Empfehlung ist, die Konfiguration in der Datei "/etc/network/interfaces" im Original zu belassen und zukünftig in der Datei "/etc/dhcpcd.conf" vorzunehmen. Wobei man berücksichtigen muss, dass sich die Syntax voneinander unterscheidet.

Lösung 3: Koexistenz von DHCPCD und der Datei "/etc/network/interfaces"

Eine Alternative zu den vorherigen Entweder-Oder-Lösungen wäre eine Sowohl-Als-Auch-Löesung. Bei der die Netzwerk-Konfiguration von DHCPCD und der Datei "/etc/network/interfaces" nebeneinander existieren können.
Wenn man den DHCPCD nicht deaktivieren will, weil man ihn für ein Interface braucht, dann kann auch die Konfiguration für ein Interface ausschließen oder explizit freigeben. Hinweis: Das wäre die beste aller Lösungen.

Lösung 4: Andere DHCP-Clients deinstallieren

Es kann vorkommen, dass der DHCPCD bereits deinstalliert ist. Und trotzdem bezieht der Raspberry Pi von irgendwo her eine IP-Adresse per DHCP. In dem Fall sollte man prophylaktisch alle möglichen DHCP-Clients deinstallieren.

sudo apt-get remove isc-dhcp-client
sudo apt-get remove udhcpd

Inhalt der Original-Datei "/etc/network/interfaces" (für Lösung 2)

Gelegentlich kommt es vor, dass man seine Netzwerk-Konfiguration völlig zerschossen hat und einfach die Original-Datei wieder herstellen will.

Der Inhalt der Datei "/etc/network/interfaces" sieht im Original-Zustand wie folgt aus (vor Raspbian Wheezy vom 2015-05-05):

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Der Inhalt der Datei "/etc/network/interfaces" sieht im Original-Zustand wie folgt aus (ab Raspbian Jessie):

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback iface eth0 inet manual allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

 

Problem: Fehlende IPv4-Konfiguration

Aus irgendwelchen Gründen scheint beim Booten kein DHCP-Request zu erfolgen. Die Kommandos "ip a" und "ifconfig" ergaben, dass keine IPv4-Konfiguration erfolgt ist.

Analyse: Formatierung prüfen

Eine fehlende IP-Konfiguration kann dadurch kommen, dass man einen Format-Fehler in einer der Konfigurationsdateien hat, so dass sie nicht korrekt verarbeitet werden konnten. So können unsichtbare Steuerzeichen durch die Bearbeitung mit einem unpassendem Editor eingefügt worden sein.

cat -A /etc/dhcpcd.conf
cat -A /etc/network/interfaces

Man sieht hier schön, ob irgendwo ein Zeichen drin ist, wo keines hingehört.

Analyse: DHCP-Client prüfen

Vorausgesetzt es besteht überhaupt eine Netzwerk-Verbindung, kann man prüfen, welcher DHCP-Client läuft.

sudo ss -tulpen | grep -i dhc

Wenn ja, dann kann man folgende Lösungen ausprobieren.

Lösung 1

Es fehlt "auto eth0" oder "allow-hotplug eth0" in der Datei "/etc/network/interfaces".

Lösung 2 (temporär)

Netzwerk-Schnittstelle in Betrieb nehmen:

sudo ifup eth0

oder

sudo dhclient -v eth0

Dann sollte sich das Interface die IP-Konfiguration per DHCP holen.

Lösung 3

Wenn man schnell eine IPv4-Konfiguration vornehmen will, ohne Dateien zu editieren, kann man das auch mit ein paar Kommandos auf der Kommandozeile machen. Die Einstellungen sind dann aber nach einem Neustart wieder weg.
Die IPv4-Adressen der folgenden Beispiel sind an die jeweiligen Erfordernisse anzupassen.

IP-Adresse und Subnetzmaske:

sudo ip addr add 192.168.1.5/24 dev eth0

Standard-Gateway:

sudo ip route add default via 192.168.1.1

Der DNS-Server muss fest in die Datei "/etc/resolv.conf" eingetragen werden:

sudo echo "nameserver 192.168.0.1" >> /etc/resolv.conf

Hinweis: Diese Konfiguration geht nach einem Neustart verloren.

 

Problem: Fehlermeldungen auf der Kommandozeile wegen dem Hostnamen

Laufend erscheinen folgende oder ähnliche Fehlermeldungen auf der Kommandozeile:

sudo: Hostname raspberrypi kann nicht aufgelöst werden
sudo: unable to resolve host raspberrypi

Woran liegt das und was ist zu tun?

Analyse

Die Ursache hat damit zu tun, dass der Hostname geändert wurde. Und die Fehlermeldung besagt, dass der Hostname nicht aufgelöst werden konnte. Das liegt daran, dass irgendwo noch ein falscher Hostname eingetragen ist.

Es gibt insgesamt drei Anhaltspunkte, wo der Fehler zu suchen ist.

cat /etc/hostname
cat /etc/hosts
cat /etc/resolv.conf

In einer dieser Dateien ist ein falscher Hostname eingetragen.

Lösung

Grundsätzlich empfiehlt es sich das Tool "raspi-config" zum Ändern des Hostnamens zu verwenden und danach einen Neustart vorzunehmen.

 

Problem: Keine Internet-Verbindung

Das Standard-Gateway ist in einem Netzwerk der Übergang in das Internet bzw. in den nächst höheren Teil des Netzwerks, der ins Internet führt. In der Regel ist das das Zugangsnetz des eigenen Internet-Providers. Die Verbindung ins Internet ist nur dann möglich, wenn ein Host die IP-Adresse des Standard-Gateways kennt. Ohne diese IP-Adresse sind nur Verbindungen im lokalen Netzwerk möglich.

Analyse: Standard-Gateway prüfen

ip r

Die Ausgabe sollte so oder so ähnlich sein:

default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50

Die erste Zeile ist wichtig. Sie beginnt mit "0.0.0.0" oder "default". Das ist die Standard- bzw. Default-Route, also das Ziel, dass immer dann gilt, wenn dem Host die Route zur Ziel-Adresse nicht bekannt ist. Für das Datenpaket ist dann das Standard-Gateway zuständig. Aber, dafür muss die IP-Adresse des Standard-Gateways dem Host bekannt sein. Das ist der Fall, wenn die IP-Adresse hier eingetragen ist. In dem Fall beispielhaft "192.168.1.1".

Wenn es keine Zeile mit "0.0.0.0" oder "default" gibt, oder hier eine falsche IP-Adresse eingetragen ist, dann wird in der Regel keine Verbindung ins Internet möglich sein.
Der Grund für das Fehlen des Standard-Gateways ist eine unvollständige manuelle IP-Konfiguration oder der DHCP-Server hat eine unvollständige IP-Konfiguration übermittelt. Oder es fand keine IP-Konfiguration statt.

Weist die Tabelle eine Standard-Route auf und die IP-Adresse entspricht der des Standard-Gateways, und es ist trotzdem keine Internet-Verbindung möglich, dann kann es sein, dass das Standard-Gateway keine Verbindung zum Internet hat oder ausgeschaltet ist. Das kann man mit einem Ping auf das Standard-Gateway klären.

ping -c 5 192.168.1.1

Ist das Standard-Gateway erreichbar, dann ist die Konfiguration bezüglich des Standard-Gateways korrekt.
Wenn trotzdem keine Internet-Verbindung möglich ist, dann liegt es eventuell an einer nicht funktionierenden Namensauflösung.

Analyse: Namensauflösung prüfen

Die Namensauflösung sorgt dafür, dass aus einem Domain-Namen, wie zum Beispiel https://www.elektronik-kompendium.de/ eine IP-Adresse wird. Denn Internet-Verbindungen sind nur auf Basis einer IP-Adresse möglich. Für die Namensauflösung ist ein DNS-Server zuständig, dessen IP-Adresse in der IP-Konfiguration angegeben sein muss.

Erst einmal prüfen wir die Namensauflösung:

host www.elektronik-kompendium.de

Die Ausgabe sollte eine IP-Adresse sein. Wenn das nicht funktioniert, dann funktioniert die lokale Namensauflösung nicht. Also prüfen wir, ob die Namensauflösung über einen externen Nameserver funktioniert.

host www.elektronik-kompendium.de 8.8.8.8

Wenn das nicht funktioniert, dann sollte man die Internet-Verbindung prüfen. Also in dem Fall den Internet-Zugangs-Router und den Internet-Anschluss.

Wenn die Namensauflösung nur über den externen Nameserver funktioniert, fehlt eventuell der Eintrag für den Nameserver in der IP-Konfiguration.

cat /etc/resolv.conf

In der Regel sollte die Ausgabe auch eine Zeile mit "nameserver" und einer IP-Adresse ergeben. Diese IP-Adresse stimmt in der Regel mit der IP-Adresse des Standard-Gateways übereinstimmt. In kleinen lokalen Netzwerken ist das Standard-Gateway auch der DNS-Server bzw. Nameserver.
Oft kommt es vor, dass aus früheren IP-Konfigurationen eine alte IP-Adresse oder auch keine eingetragen ist. In so einem Fall sollte man die IP-Konfiguration (manuell oder per DHCP) überprüfen.

Hinweis: Oft kommt es vor, dass der Raspberry Pi ganz plötzlich keine Internet-Verbindung mehr bekommt. Der Grund ist, bei der Erstinstallation zieht sich der Raspberry Pi per DHCP die IP-Konfiguration. Dabei wird der DNS-Server in die Datei "/etc/resolv.conf" geschrieben. Irgendwann später wird der DHCP-Client deaktiviert und die IP-Konfiguration manuell erstellt. Dabei wird die Angabe für den Nameserver vergessen. Der Eintrag in der Datei "/etc/resolv.conf" bleibt derweil erhalten. Irgendwann wird die Datei aus irgendeinem Grund überschrieben. Und plötzlich ist keine Internet-Verbindung mehr möglich, weil die Namensauflösung nicht mehr funktioniert.

Lösung: Korrekte Netzwerk-Konfiguration vornehmen

 

Was, wenn das alles nicht geholfen hat?

Es gibt manchmal ganz verzwickte Konstellationen, in deren Vorgänge man einfach nicht hineinblicken kann. Das heißt, dass man keinen Fehler findet, aber trotzdem ein Netzwerk-Problem vorliegt. Dann empfiehlt es sich, wirklich mal ein anderes Steckernetzteil zu verwenden. Wenn auch das nicht hilft, muss man zu ungewöhnlichen Mittel greifen.

Die folgenden Tipps zur Lösung von Netzwerk-Problemen mit dem Raspberry Pi sind nur als letzter Strohhalm zu betrachten. Es kann gut sein, dass es im einen oder anderen Fall hilft, muss es aber nicht. Es gibt also keine Erfolgsgarantie.

Manchmal hat es schon geholfen einfach mal eine Aktualisierung durchzuführen.

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Grundsätzlich sollte man nicht ausschließen, dass das Problem nicht am Raspberry Pi liegt, sondern vielleicht im lokalen Netzwerk zu suchen ist, auch wenn man dort mit anderen Geräten keine Probleme hat.
Man sollte als auch mal einen Blick auf den eigenen Internet-Router werfen. Vielleicht hilft hier ein Neustart oder es ist etwas falsch konfiguriert. So mancher Internet-Router hat schon verrückt gespielt.

Übersicht: Netzwerk-Konfiguration beim Raspberry Pi

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!