IP-Regel sollte IP-Route nicht übertreffen

IP-Regel sollte IP-Route nicht übertreffen

Ich verwende CentOS und verwende ip routeund ip rulefür das Routing.

Ich habe derzeit eineip rule

from 10.8.23.0/28 table 1234

Undip route

default via 10.8.23.254 eth1
10.10.10.10 via 10.10.10.1 eth1
10.0.0.0/14 dev test-interface table 1234

Es scheint, dass ip ruledie zweite Zeile in erfolgreich war ip route, sodass meine Pakete auch dann noch gesendet werden, wenn die Ziel-IP 10.10.10.10 ist, test-interfacewenn die Quell-IP ist 10.8.23.0/28.

Wie kann ich sicherstellen, dass 10.10.10.10 via 10.10.10.1 eth1die ìp-Regel außer Kraft gesetzt wird, auch wenn die Quell-IP der Regel entspricht? Hoffe, das ergibt Sinn :)

Durch den Test ip route get 10.10.10.10bekomme ich:

10.10.10.10 via 10.10.10.1 dev eth1  src 10.8.23.1

aber ip route get 10.10.10.10 src 10.0.0.13gibt mir:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

Wird also src IPgegenüber der Ziel-IP priorisiert.

Antwort1

Sie können es sich einfach als eine Möglichkeit vorstellen, ip rulemehrere IP-Routingtabellen zu erstellen/übernehmen (nicht nur die Standardtabelle).

Um Ihr Problem zu lösen, müssen Sie einen weiteren ip ruleEintrag hinzufügen, um Ihren spezifischen Routenfall zu behandeln. Sie können beispielsweise den folgenden Befehl verwenden:

$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10

Hier gehe ich davon aus, 10dass klein genug ist, um als erstes angezeigt zu werden ip rule. Dies hängt von der Ausgabe von ab ip rule ls. Es werden Ihnen alle Regeln nach Priorität angezeigt (ein kleinerer Wert bedeutet eine höhere Priorität und wird zuerst angezeigt).

Wenn Sie Quell- und Zielprüfungen in Ihrem kombinieren müssen ip rule, können Sie Folgendes verwenden:

$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10

Die Tabelle 123sollte die richtige Route enthalten, beispielsweise:

$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123

verwandte Informationen