Die allgemeine Übersicht ist folgende: Ich habe einen Impish Ubuntu-Server mit zwei Schnittstellen, den Adressen 172.16.2.103/24
und 10.1.2.10/24
. Ich möchte, dass der Standardverkehr über das Gateway läuft 172.16.2.254
. Wenn ich jedoch eine Quelladresse von angebe, 10.1.2.10
möchte ich, dass diese ein Gateway von hat 10.1.2.254
. Das Folgende funktioniert in 99 % der Fälle, aber ich möchte, dass der Kernel die Quell-IP 172.16.2.103
auch dann auswählt, wenn er Kontakt mit aufnimmt 10.1.2.0/24
. Dies war in möglich, /etc/networks/interfaces
aber ich konnte es mit Netplan nicht herausfinden.
Folgendes habe ich in meiner Netplan-Konfiguration:
network:
ethernets:
ens160:
addresses:
- 172.16.2.103/24
routes:
- to: 0.0.0.0/0
via: 172.16.2.254
nameservers:
addresses:
- 10.1.2.1
search:
- localdomain
optional: yes
ens192:
addresses:
- 10.1.2.10/24
routing-policy:
- from: 10.1.2.10
table: 10
routes:
- to: 0.0.0.0/0
via: 10.1.2.254
table: 10
optional: yes
version: 2
Wie gesagt, das funktioniert meistens gut. Ich habe eine Routing-Richtlinie (auch bekannt als IP-Regel), die bedeutet, dass ich die 10 Routing-Tabelle nachschlage, wenn ich die Quelladresse von Paketen ändere. Es gibt jedoch eine zusätzliche Route, die ich aus der Hauptroute entfernen möchte.
Das ist, was ich erhalte, wenn ich die Routing-Tabellen auschecke:
IN1: me@host:~$ ip route
OUT1: default via 172.16.2.254 dev ens160 proto static
OUT2: 172.16.2.0/24 dev ens160 proto kernel scope link src 172.16.2.103
OUT3: 10.1.2.0/24 dev ens192 proto kernel scope link src 10.1.2.10
IN2: me@host:~$ ip route list table 10
OUT5: default via 10.1.2.254 dev ens192 proto static
Ich möchte OUT3 entfernen oder genauer gesagt in die 10-Routingtabelle verschieben, sodass in der Haupt-Routingtabelle keine Layer2-Verbindung zu 10.1.2.0/24 vorhanden ist. Ich kann das manuell folgendermaßen machen:
me@host:~$ sudo ip route del 10.1.2.0/24 dev ens192
Aber ich weiß nicht, wie ich das in Netplan einbetten kann. Früher hätte ich eine Up-Anweisung hinzugefügt, /etc/network/interfaces
aber das ist keine Option mehr.
Dank im Voraus.
Antwort1
Ich würde das nicht als Lösung bezeichnen, sondern eher als Workaround. Mein Problem war, dass ich eine unerwünschte Route entfernen wollte: Der Workaround besteht darin,ein andererRoute mit höherer Priorität!
network:
ethernets:
ens160:
addresses:
- 172.16.2.103/24
routes:
- to: 0.0.0.0/0
via: 172.16.2.254
# ** ADDITIONAL ROUTE **
- to: 0.0.0.0/0
via: 172.16.2.254
table: 172
# **********************
nameservers:
addresses:
- 10.1.2.1
search:
- localdomain
optional: yes
ens192:
addresses:
- 10.1.2.10/24
routing-policy:
- from: 10.1.2.10
table: 10
# ** ADDITIONAL ROUTING POLICY **
- to: 172.16.2.0/24
table: 172
# *******************************
routes:
- to: 0.0.0.0/0
via: 10.1.2.254
table: 10
optional: yes
version: 2
Beachten Sie die zusätzliche Routing-Richtlinie und Route für die Schnittstelle ens160. Dadurch wird eine weitere Routing-Tabelle mit dem Namen 172 erstellt, und diese hat eine Standardroute, die mit der Standardroute der Haupttabelle identisch ist (172.16.2.254). Wenn ich jetzt routeZu172.16.2.0/24, anstatt über die Haupttabelle mit der falschen Route zu gehen, geht es stattdessen über die Routing-Tabelle 172.
Ich würde mich trotzdem über eine Nachricht freuen, ob es eine Möglichkeit gibt, die Route in der Haupttabelle zu löschen, aber da ich jetzt ein funktionierendes System habe, werde ich dies in zwei Wochen als akzeptierte Lösung markieren.