sys::systemd vs sys::network vs sys::networkd
Aktueller Zustand
Es gibt im Moment 3 recipes, die das Netzwerk einer Maschine konfigurieren:
-
sys::network
für debian_version kleiner 9 -
sys::systemd
für jessie(?) aufwärts -
sys::networkd
für stretch aufwärts
sys::systemd
und sys::networkd
überschneiden sich, bieten aber unterschiedliche features an. In sys::networkd
muss man alles manuell angeben, es gibt einen eigenen Namespace für die Attribute und auch ein eigenes Recipe. sys::systemd
bietet allerlei praktische Schalter, mit denen man die aktuelle Konfiguration persistent machen kann.
Problem
Die Konfiguration die von sys::systemd
ist subtil kaputt, weil ipv6 nicht mit ausreichender Gründlichkeit abgeschaltet wird. Das führt dazu, dass systemd-networkd-wait-online.service
auf die Konfiguration von ipv6 wartet und dadurch nicht erfolgreich ausgeführt wird. Das führt oft zu Problemen mit nslcd, autofs und sonstigem was auf auf das Netzwerk wartet. Ausserdem ist mir nicht klar, warum sys::systemd
überhaupt das Netzwerk konfigurieren sollte.
sys::networkd
bringt zwar viel Flexibilität, ist aber umständlich zu benutzen.
Lösungsvorschlag
Da systemd-networkd mit aktuellem Debian alle Features hat die man braucht, um auch kompliziertere config wie die lxgws und Hypervisoren zu bauen, würde ich folgendes vorschlagen:
-
sys::network
kann man wohl einfach so lassen, solange das noch benutzt wird. -
sys::systemd
konfiguriert nur systemd (Dateien unter/etc/systemd/system
und/etc/systemd/system.conf
). -
sys::networkd
wird mit den Features aussys::systemd
erweitert
Offene Punkte
Netzwerk managen?
Soll das Netzwerk prinzipiell gemanagt werden oder nicht? Bei der Installation bekommt man ja von FAI eine default-Konfiguration die normalerweise passt. Diese Konfiguration muss auch normalerweise nie geändert werden. Unter neuen Debian-Versionen würde ich vorschlagen alles mit systemd-networkd zu machen. Dazu muss man allerdings alle anderen Mechanismen abklemmen, wahlweise mit einem der folgenden Schritte:
- /etc/default/networking anpassen, so dass ifupdown kein netzwerk mehr konfiguriert
- /etc/network löschen oder umbenennen
- Debian Paket ifupdown deinstallieren
- Ggf. dhcpd oder sonst was deinstallieren oder abschalten. Prinzipiell gibt es nicht besonders viele Maschinen bei denen das Netzwerk bisher gemanaged wird, was wohl auch erklärt warum sich die recipes überschneiden und in gsi-sys mit Attributen konfiguriert werden die teilweise gar keine Auswirkungen haben.
Namensschema
Mit den neuen Interface-Namen, bei denen der Steckplatz im Rechner im Namen kodiert ist, sorgt dafür, dass die Interfaces in allen Rechnern anders heißen, was viele Dinge umständlich machen kann. Debian ist so voreingestellt, dass weiterhin das alte Namensschema verwendet wird. Maschinen die nicht das alte Schema haben, müssen allerdings eine neue initramfs bekommen und gebootet werden.