Ach ja, Debian...
Seit einiger Zeit hat ifupdown
die Möglichkeit, nicht alle Netzwerk-Interfaces in /etc/network/interfaces
zu pflegen, sondern diese z.B. in /etc/network/interfaces.d/
als kurze Dateien abzulegen. Gerade wenn man mal 10 VLANs und dazu jeweils eine Bridge hat (ja, ein Virtualisierungsserver), macht das die Sache IMHO deutlich übersichtlicher.
Wenn ich mich richtig erinnere, dann gab es zuerst die Möglichkeit per source /etc/network/interfaces.d/*
einzelne Dateien bzw. Wildcards einzulesen. Später kam dann noch ein source-directory /etc/network/interfaces.d/
dazu.
Leider hat man es von Anfang an versäumt, statt nur "*
" ein Suffix für die Schnippsel zu definieren, also z.B. source /etc/network/interfaces.d/*.iface
- somit wird auch bei einem frisch installiertem Debian/Buster alles gelesen, was in diesem Verzeichnis liegt.
Das führt jetzt zu der dämlichen Situation, dass der Editor (der hoffentlich automatisch Backup-Files anlegt), nachdem man statt DHCP eine feste IP-Adresse eingetragen hat, folgendes hinterlässt:
root@buster:/etc/network/interfaces.d# ls
eth0.cfg eth0.cfg~
Und was macht ein ifup eth0
draus? Das da:
root@buster:/etc/network/interfaces.d# ip a ls dev eth0
2: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fe:ac:16:f0:00:bb brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.10.10.10/28 brd 10.10.10.15 scope global eth0
valid_lft forever preferred_lft forever
inet 172.22.240.100/24 brd 172.22.240.255 scope global dynamic eth0
valid_lft 3086sec preferred_lft 3086sec
inet6 fe80::fcac:16ff:fef0:bb/64 scope link
valid_lft forever preferred_lft forever
Die Lösung? Eigentlich GANZ einfach. Es gäbe ja sogar zwei...
- Entweder man definiert ein Suffix (z.B.
*.iface
, siehe oben) und macht dannsource /etc/network/interfaces.d/*.iface
, ignoriert also alles andere. - Man stellt (zumindest bei Neuinstallationen) auf
source-directory /etc/network/interfaces.d/
um, welches nur folgende RegExp zulässt:^[a-zA-Z0-9_-]+$
Ich bin ein Freund von Zweiterem, deswegen stell ich das auch mit meiner Ansible-Grundinstallation um.
Gestern allerdings fiel mir das auf die Füße. Nach einem Reboot kam der vServer nicht mehr hoch. Warum? Darum:
root@buster:/etc/network/interfaces.d# ls
50-cloud-init.cfg
In der RegExp für source-directory
ist kein Punkt dabei! Daher werden Dateien mit einem Suffix nicht gelesen. Darüber lässt sich jetzt auch streiten, ob das sinnvoll ist, klar. An anderer Stelle ist das aber (im Debian-System, z.B. Cron-Scripte, die per run-parts
aufgerufen werden) dann auch wieder so, es zieht sich also durch. Ich fände es als Default immer noch besser, als Backup-Dateien (welche auf "~
" enden) wie Schnippsel zu behandeln und sie einzulesen.
An anderer Stelle hat man gelernt: War es bei Apache 2 in Debian möglich, im Verzeichnis /etc/apache2/sites-enabled/
beliebige Dateinamen abzulegen, werden inzwischen nur noch Schnippsel mit der Endung "*.conf
" inkludiert.
Fazit:
Durch eine unbedachte Default-Einstellung bei der Einführung eines eigentlich SEHR coolen Features (source
mit "*
" als Wildcard), hat man Probleme in der Zukunft vorprogrammiert.