Ich habe Probleme beim Hinzufügen direkter Routen durch systemd-networkd. Was ich erreichen möchte, ist ähnlich wie:
ip a a 192.168.0.2/32 dev enp0s3
ip r a 192.168.0.1/32 dev enp0s3
ip r a default via 192.168.0.1
Ich weiß, dass dies ein seltsames Setup ist, aber ich kann es nicht verwenden ip a a 192.168.0.2/24, um das Gateway zu erreichen. Aus irgendeinem Grund ist das gesamte / 24-Subnetz über das Gateway in diesem Subnetz erreichbar. Diese Standardroute gilt also nicht nur für Sammelrouten, sondern auch zum Erreichen des Subnetzes. Also habe ich /etc/systemd/network/enp0s3.network erstellt:
[Match]
Name=enp0s3
[Address]
Address=192.168.0.2/32
[Route]
Destination=192.168.0.1/32
[Route]
Gateway=192.168.0.1
Das Problem bei diesem Setup ist, dass der zweite RouteBlock niemals ausgeführt wird. Ich habe einige Fehlerbehebungen durchgeführt und hier ist der Unterschied zwischen dem, was ipund was systemd-networkdfür den ersten RouteBlock getan wird .
# ip
192.168.0.1 dev enp0s3 scope link
# networkd
192.168.0.1 dev enp0s3 proto static
Fügt systemd-networkdalso nicht scope linkzur Route hinzu. Aus diesem Grund 192.168.0.1schlägt ein Versuch, eine Standardroute über hinzuzufügen , mit einem Network is unreachableFehler fehl . Dies kann durch behoben werden
ip r c 192.168.0.1/32 dev enp0s3 # automatically adds `scope link`
ip r a default via 192.168.0.1 # added successfully
Meine Frage ist also: Sollte ein solches Verhalten als systemd-networkdFehler angesehen werden oder verwende ich es falsch? Ich konnte keine Dokumentation zu direkten Routen in networkd finden. Im Moment habe ich den Dienst deaktiviert systemd-networkdund erstellt, um ipBefehle direkt auszuführen. Ich möchte jedoch den Standardansatz verwenden, da dies CoreOS ist, das ich konfigurieren möchte.