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 Route
Block niemals ausgeführt wird. Ich habe einige Fehlerbehebungen durchgeführt und hier ist der Unterschied zwischen dem, was ip
und was systemd-networkd
für den ersten Route
Block getan wird .
# ip
192.168.0.1 dev enp0s3 scope link
# networkd
192.168.0.1 dev enp0s3 proto static
Fügt systemd-networkd
also nicht scope link
zur Route hinzu. Aus diesem Grund 192.168.0.1
schlägt ein Versuch, eine Standardroute über hinzuzufügen , mit einem Network is unreachable
Fehler 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-networkd
Fehler 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-networkd
und erstellt, um ip
Befehle direkt auszuführen. Ich möchte jedoch den Standardansatz verwenden, da dies CoreOS ist, das ich konfigurieren möchte.
Sie möchten angeben, wie das Gateway über den lokalen Bereich erreicht werden kann. Das heißt, es ist tatsächlich im selben Segment erreichbar. In Ihrem Beispiel fehlt lediglich die Zeile
Scope=link
.quelle
Keine der vorgeschlagenen Lösungen funktionierte mit systemd 237, da sie
GatewayOnlink=true
fehlte.Ich konnte ein verbindungslokales IPv4-Gateway mit einer / 32-Schnittstellenadresse mit folgender Konfiguration verwenden:
quelle
Ich habe ein ähnliches Setup für IPv6 (jemand, der den Fall hier beschreibt: https://phyks.me/2014/11/getting-ipv6-to-work-with-a-kimsufi-server.html ).
Für Ihren Fall würde es als solches übersetzen:
Es funktioniert in Ordnung (zumindest in meinem Fall), obwohl ich kürzlich die Ausgabe von systemd-networkd bemerkt habe
enp1s0f0: Could not set NDisc route or address: Invalid argument
. Aber nicht sicher warum und mein System funktioniert immer noch.EDIT: Dieser Fehler scheint nichts damit zu tun zu haben. Ich habe festgestellt, dass mein Provider RA aktiviert hat, daher gebe ich nicht einmal mehr ein Gateway an (nur eine Adresse, keine Route) und habe immer noch diesen Fehler.
quelle