Startseite>Netzwerkkonfiguration unter Raspbian “Jessie”
Aus Raspberry Pi Geek 05/2016

Netzwerkkonfiguration unter Raspbian “Jessie”

© Lightwise, 123RF

Aus alt mach neu

Bernhard Bablok

Nach Debians Umstieg auf Systemd läuft unter Raspbian “Jessie” mit der alten Netzwerkkonfiguration nichts mehr so, wie es soll. Mit den richtigen Tricks lösen Sie die Probleme aber schnell.

Eigentlich wollte der Autor dieses Artikels nur einen neuen RasPi aufsetzen und dafür die alten Konfigurationsdateien des Vorgängersystems verwenden – unter anderem die beiden in Listing 1 und Listing 2 gezeigten Exemplare. Doch dieses Vorhaben ging gründlich schief: Nichts funktionierte, wie es sollte. Auch eine Suche im Internet brachte keine schnelle Erkenntnis. Als “Übeltäter” entpuppte sich letztendlich das moderne Init-System Systemd, das in Debian 8.0 alias “Jessie” den Vorgänger SysVinit ablöst.

Hinzu kommt noch eine Raspbian-Besonderheit: Die Macher implementierten die Netzwerkkonfiguration auf eine Weise, die an den normalen Methoden von Debian “Jessie” völlig vorbeiläuft. Das Aufsetzen eines Raspberry-Pi-Servers mit fester IP-Adresse gerät dadurch zu einer unnötig schwierigen Herausforderung.

Listing 1

 

auto lo
iface lo inet loopback
iface eth0 inet static
address 10.173.112.196
netmask 255.255.255.128
gateway 10.173.112.250
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Listing 2

 

auto lo
iface lo inet loopback
manual eth0
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet static
address 10.173.112.196
netmask 255.255.255.128
gateway 10.173.112.250
wpa-ssid "mein-wlan"
wpa-psk "MeinGeheimesPasswort"

TIPP

Die Listings zu diesem Artikel finden Sie auch als Textdateien im Verzeichnis RPG/systemd/ auf der Heft-DVD. Dort liegt auch ein PDF mit einem Grundlagenartikel zu Systemd aus unserer Schwesterzeitschrift LinuxUser.

Wie es Raspbian macht

Ein Hinweis bei der Suche im Web führte dann doch auf die richtige Spur. Zuallererst fehlt in Listing 1 die Zeile auto eth0: Mit dieser Ergänzung vergibt Raspbian eine feste IP-Adresse an die Ethernet-Schnittstelle. Allerdings zeigt das Kommando ifconfig diese nicht unbedingt an, da die Schnittstelle zusätzlich noch eine dynamische Adresse erhält und Ifconfig nur die erste vergebene IP aufführt. Erst der Befehl ip addr show brachte das Gesuchte zum Vorschein (Abbildung 1).

Abbildung 1: Während das Kommando »ifconfig« nur die jeweils erste IP-Adresse einer Schnittstelle anzeigt, listet »ip adr show« alle auf.

Abbildung 1: Während das Kommando »ifconfig« nur die jeweils erste IP-Adresse einer Schnittstelle anzeigt, listet »ip adr show« alle auf.

Aus unerfindlichen Gründen verwendet Raspbian für die Netzwerkkonfiguration auch bei der Vergabe statischer Adressen den DHCP-Client-Dienst Dhcpcd5. Für die Ethernet-Schnittstelle erzwingen Sie mit den Zeilen aus Listing 3 eine feste IP-Adresse. Dazu hängen Sie die Angaben an die vorhandene /etc/dhcpcd.conf an. Die Konfiguration in der /etc/network/interfaces belassen Sie im Ursprungszustand.

Listing 3

 

interface eth0
inform 10.173.112.196
static routers=10.173.112.250
static domain_name_servers=10.173.112.236

Stört es Sie nicht, dass auf einem Server ein Client-Dienst läuft, und stellen Sie auch sonst keine weitergehenden Anforderungen an die Netzwerkkonfiguration, etwa weil Sie einen Hotspot einrichten wollen, dann können Sie es bei den beschriebenen Änderungen belassen. Eine saubere Konfiguration, die auch auf weiteren Linux-Systemen funktioniert, erlaubt aber erst ein konsequenter Umstieg auf die Gegebenheiten von Systemd.

Systemd

Systemd zeichnet auf modernen Linux-Systemen für den Bootvorgang und die damit einhergehende Initialisierung aller Dienste verantwortlich. Das alte SysVinit krankte vor allem daran, dass es alle Aufgaben eine nach der anderen abarbeitete. Systemd dagegen setzt auf maximale Parallelisierung und erreicht damit sehr schnelle Boot-Zeiten.

Über Systemd gibt es viele Infos und Tutorials im Netz; unter anderem berichtete unsere Schwesterzeitschrift LinuxUser in der Ausgabe 10/2015 ausgiebig darüber [1]. Der Kasten “Systemd und das Journal” beschreibt die wichtigsten Konzepte.

Systemd und das Journal

SysVinit initialisiert das System beim Booten über Skripte, die in /etc/init.d liegen und von dort auf /etc/rc.? verlinken. Das Fragezeichen steht stellvertretend für eine Ziffer zwischen 0 und 6, die das sogenannte Runlevel repräsentiert. Beim alten Debian entsprach das Runlevel 2 dem normalen Multiuser-Betrieb. Startskripte und Dienste schrieben ihre Meldungen unter anderem nach /var/log/messages oder nach /var/log/daemon.log.

Systemd verfolgt dagegen einen deklarativen Ansatz: Nicht mehr Skripte definieren die Services und ihre Abhängigkeiten, sondern Service-Dateien beschreiben deren Eigenschaften. Diese Files liegen in verschiedenen Verzeichnissen, so etwa unterhalb von /etc/systemd/, /usr/lib/systemd/ und /lib/systemd/. Das Kommando systemctl mit seinen Unterbefehlen wie list, status, enable, start oder stop verwaltet die Services.

Neu ist auch das System-Log, das jetzt Journal heißt. Das Verwaltungskommando dazu lautet journalctl. Im Gegensatz zum alten Journal lässt sich dieses Format gezielt per Parameter filtern, was die Ausgabe wesentlich übersichtlicher gestaltet:

$ journalctl _SYSTEM_UNIT=systemd-networkd.service

Ein Tipp für den Umgang mit Systemctl und Journalctl: Falls Sie als administrativer Benutzer root arbeiten, funktioniert unter Raspbian auf der Kommandozeile die Autovervollständigung der Kommandos und Parameter per [Tab]. Die Taste liefert im Zweifelsfall auch eine Liste mit verfügbaren Möglichkeiten. Wissen Sie also nicht mehr genau, wie der Service heißt, wird Ihnen dadurch eine Auswahl angeboten.

Aufräumarbeiten

Der erste Schritt zu einer einfachen und sauberen Netzwerkkonfiguration besteht darin, alle Dienste zu entfernen, die hier Probleme bereiten. Ein Beispiel dazu zeigt Listing 4: Das erste Kommando deinstalliert die Pakete dhcpcd5 und openresolv – Letzteres empfiehlt Debian nur für komplexe Setups, auf einfachen Raspbian-Systemen sorgt es nur für unnötige Komplexität.

Der Aufruf in Zeile 3 deaktiviert als Nächstes den alten Kompatibilitätsdienst networking.service, der nichts anderes macht, als das von “Wheezy” bekannte Skript /etc/init.d/networking zu starten. Danach funktionieren alte Netzwerkkonfigurationen in /etc/network/interfaces definitiv nicht mehr.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland