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.
Als Ersatz aktivieren Sie die neuen, Systemd-eigenen Services für die Netzwerkkonfiguration – das erledigen die Zeilen 4 und 5. Die letzten beiden Befehle sorgen abschließend dafür, dass die Konfiguration der Namensauflösung (Resolver) auf die dynamisch zur Laufzeit erstellte Konfiguration verweist.
Listing 4
$ sudo apt-get -y remove dhcpcd5 openresolv $ sudo systemctl disable networking.service $ sudo systemctl enable systemd-networking.service $ sudo systemctl enable systemd-resolved.service $ sudo rm -f /etc/resolv.conf $ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Netzwerke
Die neuen Konfigurationsdateien für die Schnittstellen liegen im Verzeichnis /etc/systemd/network und enden alle auf .network. Beim Start arbeitet der Dienst alle Dateien in lexikografischer Reihenfolge ab und nutzt die erste passende Konfiguration. Dazu gibt es in jeder Datei den Abschnitt [Match] (siehe Listing 5 und Listing 6). Neben dem Namen existieren weitere Attribute für den Match, wobei Systemd auch generische Ausdrücke mit Wildcards (etwa eth*) gestattet.
Die eigentliche Konfiguration der Schnittstelle steht in Listing 5 unter [Network]. Informationen über die einzelnen Konfigurationsparameter zeigt der Aufruf man systemd.network. Die Variante in Listing 6 zeigt eine alternative Konfiguration für wlan0. Hier erhält das Netzwerk seine IP-Adresse per DHCP.
Listing 5
[Match] Name=eth0 [Network] Description=pi3 eth0 static Address=10.173.112.195/25 Gateway=10.173.112.250 DNS=10.173.112.236
Listing 6
[Match] Name=wlan0 [Network] Description=pi3 wlan0 DHCP DHCP=yes
WLAN-Konfiguration
Den Zugang zum WLAN regelt nach wie vor das Programm wpa_supplicant (“supplicant” bedeutet im Englischen Bittsteller). Damit das Programm schon läuft, wenn das Netzwerk startet, erstellen Sie zuerst die Konfigurationsdatei /etc/wpa_supplicant/wpa_supplicant-wlan0.conf (Listing 7).
Listing 7
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="mein-wlan"
psk="MeinGeheimesPasswort"
priority=1
}
network={
ssid="dein-wlan"
psk="DeinGeheimesPasswort"
priority=2
}
Darin hinterlegen Sie beliebig viele Netzwerke; das Programm wählt automatisch aus den verfügbaren das Netz mit der höchsten Priorität aus. Als Nächstes brauchen Sie einen Dienst, der wpa_supplicant für die Schnittstelle wlan0 startet. Dazu erstellen Sie die Service-Definition in /etc/systemd/system/[email protected] (Listing 8). Dabei handelt es sich um einen generischen Dienst, dessen Enable- und Startkommando Listing 9 zeigt.
Nach diesen Vorarbeiten sollte auch die WLAN-Schnittstelle nach dem Booten bereitstehen. Im Gegensatz zum alten, skriptbasierten Service kommt es dabei nicht zu Wartezeiten während des Bootens.
Listing 8
[Unit] Description=WPA supplicant daemon (interface-specific version) Before=network.target Wants=network.target [Service] Type=simple ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I [Install] Alias=multi-user.target.wants/wpa_supplicant@%i.service





