Umstellung auf systemd-networkd (Debian jessie)
Systemd basierte Netzwerkeinrichtung für Debian Edu jessie Arbeitsplatzrechner
Dieser Artikel beschreibt die Anwendung von systemd-networkd auf Debian Edu 8.x (aka jessie) Notebooks.
Womit haben wir es zu tun?
An den von uns unterstützten Schulen sind mehrere mit Debian Edu 8.x (aka jessie) betriebene Notebooks in Betrieb. Auf Notebooks für den Schulbetrien (für den Betrieb im Klassenraum) installieren wir das Debian Edu „Arbeitsplatzrechner“-Profil. Es gibt zwar bei der Installation von Debian Edu auch eine Möglichkeit, ein „Mobiler Arbeitsplatzrechner“-Profil zu installieren, bei welchem allerdings jede Benutzeranmeldung ein lokales Benutzerprofil sowie einen lokalen Persöhnlichen Ordner für den angemeldeten Benutzer (Paket: libpam-mklocaluser). Dies ist nicht etwas, was wir für unsere Kunden wollen. Anwender, welche die Schulnotebooks benutzen sollen immer in ihren persönlichen NFS-Verzeichnissen arbeiten. Schulnotebooks sollen nicht außerhalb des Schulnetzwerkes benutzbar sein.
Unsere Probleme
Die Standardeinrichtung für Debian Edu Arbeitsplatzrechner in Bezug auf Netzwerkverwaltung ist wie folgt:
- systemd läuft als PID 1
- ifupdown verwaltet kabellose Netzwerk-Anbindungen
für unsere Kunden haben wir den Networkmanager mit einem systemweiten WiFi-Profil (WPA2-PSK)
Uns sind mit dieser Konfiguration diverese Probleme aufgefallen:
- standardmäßig wird Netzwerkanbindung eth0 durch ifupdown verwaltet (über /etc/network/interfaces)
auto eth0 iface eth0 inet dhcp
Problem Nummer 1: In Kombination mit systemd führt dies zu einer Verzögerung von bis zu 120 Sekunden bei Systemstart.
Problem Nummer 2: Der WLAN-Adapter, verwaltet durch den NetworkManager, läuft an, „wann er will“.
Dies wird auf jeden Fall problematisch, wenn man sich auf autofs-ldap verlässt zur Zeit der Benutzeranmeldung. Oft ist die Situation aufgetreten, in denen der autofs Dienst schon gestartet war, aber die Verbindung mit dem WLAN-Netzwerk noch nicht mal begonnen hatte. Daraus risultiert, dass die Notebook Systeme Debian Edu's LDAP-Server nicht finden und so den autofs Dienst nicht konfigurieren, welcher dann nicht auf NFS-Netzwerk-Verzeichnisse zugreifen kann, welche über LDAP zur Verfügung gestellt werden.
- Teilweise konnten sich Benutzer anmelden (mit korrekter Einbindung der Persönlichen Verzeichnisse über NFS, LDAP/Kerberos Anmeldung usw), wenn wir Glück hatten und die benötigte DHCP-Antwort über das Netzwerk schnell genug kam, sodass die Netzwerk- Prozesse des Notebooks korrekt konfiguriert werden konnten.
Problem Nummer 3: Beim Herunterfahren des Systems kam es wieder zu Verzögerungen von 120 Sekunden, da die eingebundenen NFS-Verzeichnisse (Persönliche Ordner) nicht richtig ausgebunden werden konnten.
Die gesamte Problematik war recht schmerzhaft sowohl für uns, als auch für die Kunden. Heute saß ich mit einem unserer Kunden zusammen und kam auf eine Einrichtung (siehe unten), die völlig problemlos funktioniert...
Warum der Wechsel zu systemd-networkd?
Nach dem Wechsel zu systemd-networkd (aus systemd 215, zu finden in Debian jessie) haben sämtliche Probleme sofort gestoppt.
- Notebooks fahren ohne Verzögerung hoch (ob über LAN oder WLAN verbunden macht keinen Unterschied mehr)
- Benutzer können sich immer korrekt und ohne Probleme im System anmelden (LDAP steht zur Verfügung, Kerberos ist zugriffsbereit, der autofs-ldap Dienst hat seinen LDAP-Server gefunden)
- Notebooks fahren ohne jegliche Verzögerung herunter
\o/ Und somit sind alle Probleme gelöst! \o/
Wie wechselt man zu systemd-networkd?
Nach gründlichem Lesen und Verstehen führt man das unten aufgeführte Skript als root auf Debian Edu jessie Notebooks aus, welche über das Debian Edu Arbeitsplatzrechner Profil installiert sind.
Veraussetzungen:
- Die LAN-Verbindungen der Netzwerkkarten heißten eth0, eth1 usw
- Der WLAN-Netzwerkadapter heißt wlan0
- Diese Dateien, welche normalerweise nicht vorhanden sind, werden überschrieben soweit vorhanden:
/etc/systemd/network/20-dhcp.network /etc/systemd/network/21-dhcp-wireless.network /etc/systemd/system/wpa_supplicant@.service /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
Das Skript:
WIFIDEV=wlan0 export DEBIAN_FRONTEND=noninteractive apt-get remove -q -y --purge resolvconf systemctl disable NetworkManager systemctl enable systemd-networkd.service systemctl enable systemd-resolved.service systemctl start systemd-resolved.service rm /etc/resolv.conf ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf cat > /etc/systemd/network/20-dhcp.network << EOF [Match] Name=eth* [Network] DHCP=yes EOF cat > /etc/systemd/network/21-dhcp-wireless.network << EOF [Match] Name=$WIFIDEV [Network] DHCP=yes EOF cat > /etc/systemd/system/wpa_supplicant@.service << EOF [Unit] Description=WPA supplicant daemon (interface-specific version) Requires=sys-subsystem-net-devices-%i.device After=sys-subsystem-net-devices-%i.device Before=network.target Wants=network.target # NetworkManager users will probably want the dbus version instead. [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 EOF touch /etc/wpa_supplicant/wpa_supplicant-$WIFIDEV.conf chmod go-rwx /etc/wpa_supplicant/wpa_supplicant-$WIFIDEV.conf systemctl enable wpa_supplicant@$WIFIDEV.service systemctl disable networking systemctl disable wpa_supplicant.service
WiFi-Netwerke hinzufügen
Nun kann man als zuständiger Administrator Passwörter für die ESSIDs/WiFi-Netzwerke der betroffenen Schule zur wpa_supplicant Konfigurationsdatei hinzufügen.
export WIFIDEV=wlan0 wpa_passphrase <ESSID> '<wpapassphrase>' >> /etc/wpa_supplicant/wpa_supplicant-$WIFIDEV.conf
Es können so viele ESSIDs und Passwörter hinzugefügt werden wie benötigt.
Neustart
Nach Ausführung des Skriptes und Anpassung der Benutzerreferenzen der kabellosen Netzwerke sollten die Notebooks neu gestartet werden, damit man die Änderungen genießen kann.
Danksagung
Das oben beschriebene wurde inspiriert und angestoßen durch zwei Artikel. Vielen Dank an Dan Nanni [1] und Joachim Breitner [2] für die Inspiration. light+love Mike [1] http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html [2] https://www.joachim-breitner.de/blog/664-Switching_to_systemd-networkd