.png)
Ich habe folgende 2 Routen:
# ip ro show table 0|grep 10.250
10.250.0.0/16 via 10.80.1.1 dev ens5 table 220 proto static src 10.80.1.76
10.250.1.4 via 10.80.1.45 dev ens5
Das erste stammt aus der von strongSwan verwalteten Tabelle 220, das andere habe ich manuell zum Testen erstellt.
Ich gehe davon aus, dass der explizite /32
Weg immer gewinnt, aber
# ip ro get 10.250.1.4
10.250.1.4 via 10.80.1.1 dev ens5 table 220 src 10.80.1.76 uid 0
cache
Linux bevorzugt immer noch die /16
.
Warum ist das so?
Antwort1
Das liegt daran, dass strongSwan Policy Routing verwendet. Der fehlende Teil zur Erklärung ist die Ausgabe vonip rule
mit einem zusätzlichen Eintrag, der von strongSwan festgelegt wird und normalerweise wie folgt lautet:
# ip rule
0: from all lookup local
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
Die StreckenführungRegelnwerden in der bevorzugten Reihenfolge durchlaufen (die Reihenfolge, die oben angezeigt wird), um verschiedene Routen zu referenzierenTabellen, bis eine Route gefunden wird (oder keine (Fall möglich, wenn es nirgends eine Standardroute gab oder „negative“ Routen vorhanden sind) und ein Fehler wie Network is unreachable
zurückgegeben wird). Die Routing-Regel Präferenz 220 wird vor der Standard-Routing-Regel Präferenz 32766 ausgeführt, daher wird zuerst die Routing-Tabelle 220 geprüft. Da in der Routing-Tabelle 220 10.250.0.0/16 mit 10.250.1.4 übereinstimmt, wurde eine Route gefunden: Die Routenauswertung endet hier, was auch immer in späteren Tabellen gewählt worden sein könnte. DiehauptsächlichDie Routing-Tabelle wird für dieses Ziel nie erreicht.
Wenn das Ergebnis ip route get ...
eine andere Routing-Tabelle anzeigt alslokal,hauptsächlich(oder die TabelleStandardwenn es nicht leer gelassen wird, wie es normalerweise der Fall ist), bedeutet dies, dass es eine Routing-Regel geben muss, die auf diese Tabelle verweist, und dass sie mit sichtbar sein wird ip rule
.
Für viele andereRichtlinienbasiertes RoutingIn manchen Fällen gibt es anstelle des „Platzhalters“ einen zusätzlichen Selektor from all
. Normalerweise wird eine Quell-IP-Adresse/ein Quellnetzwerk oder eine eingehende Schnittstelle verwendet: wiederum, um das normale Routing-Ergebnis zu ändern. Es gibt sogar noch andere Möglichkeiten, wie Port, UID usw. Eine Ziel-IP-Adresse/ein Zielnetzwerk wird bereits durch normale Routeneinträge ausgewählt und wird daher selten als Selektor in Routing-Regeln verwendet.