Es wird häufig als Policy Base Routing oder Policy-Based Routing geschrieben. (Ist letzteres ein Cisco-System?) In diesem Artikel werde ich über PBR für Linux schreiben. Wenn Sie jedoch mehr über PBR für Cisco erfahren möchten, lesen Sie bitte hier.
Bei der Konfiguration des Routings unter Linux verwenden wir Routing-Tabellen. In Wirklichkeit können jedoch mehrere Routing-Tabellen vorhanden sein, und es gibt Routing-Richtlinien, die bestimmen, welche Routing-Tabelle verwendet werden soll. PBR wird unter Verwendung dieser Routing-Richtlinie durchgeführt.
Dies ist wunderschön organisiert, so dass es sich gut anfühlt. [Wie Linux die Route von Paketen auswählt](Wie wählt Linux die Route von Paketen aus)
Schauen wir uns zunächst die Standard-Routing-Richtlinie an.
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Auf diese Weise wird im Ausgangszustand festgelegt, dass in dieser Reihenfolge die lokalen, Haupt- und Standardwerte verwendet werden. Es ist nicht auf 1-32765 eingestellt, aber Sie können die Richtlinie manuell hinzufügen. Wie sich die Routing-Richtlinie auf die Routing-Tabelle bezieht, ist
- Cache durchsuchen
Wenn in der nächsten Regel keine Tabelle geschrieben ist, wird auf diese Weise die in der nächsten Regel geschriebene Routing-Tabelle angezeigt. Und auf den Inhalt der Routing-Tabelle wird so verwiesen.
- Wählen Sie unter den übereinstimmenden Routen die spezifischste Route (lange Netzmaske) aus
"Übereinstimmende Route" bedeutet, dass die in die Routing-Tabelle geschriebene Ziel-IP (Bereich) und die Ziel-IP des Pakets, das Sie senden möchten, übereinstimmen. In der Routing-Tabelle wird die Ziel-IP als Grundlage für die Beurteilung verwendet. Wenn Sie also nach anderen Kriterien routen möchten, müssen Sie eine frühere Routing-Richtlinie verwenden.
Grob gesagt: "Ich möchte eine Routing-Tabelle basierend auf der Quell-IP auswählen."
Einzelheiten finden Sie in diesem Bereich. Linux Advanced Routing & Traffic Control HOWTO Routing-Einstellungen für Linux-Computer mit zwei Nic richtlinienbasiertes IP-Routing-Management Auf zwei Netzwerkkarten im selben Subnetz verweisen oder über Quellrouting sprechen Linux Policy Base Routing
Schauen wir uns nun noch einmal die Standardregeln an.
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Es heißt "von allen", was allen ausgehenden IPs entspricht. Fügen wir eine Regel hinzu, die die Quelle angibt.
#ip rule add from 172.10.10.1/24 table 100
#ip rule
0: from all lookup local
32765: from 172.10.10.1/24 lookup 100
32766: from all lookup main
32767: from all lookup default
Ich fürchte, wenn ich mich nicht anmelden kann, indem ich versehentlich die Quelle der Route angegeben habe, die tatsächlich für SSH usw. verwendet wird, werde ich auch das Ziel einschränken. Sie können die Referenzreihenfolge auch beschleunigen, indem Sie mit "prio" eine jüngere Nummer angeben.
#ip rule add from 172.10.10.2/24 to 172.20.20.1/32 table 101 prio 100
#ip rule
0: from all lookup local
100: from 172.10.10.2/24 to 172.20.20.1 lookup 101
32765: from 172.10.10.1/24 lookup 100
32766: from all lookup main
32767: from all lookup default
Insbesondere, wenn die Anwendung die Quell-IP nicht angibt (wenn Sie beispielsweise Ping drücken, fügen Sie normalerweise nur die Ziel-IP in den Befehl ein, nicht die Quell-IP. Geben Sie diese natürlich mit der Option -I an. Es ist jedoch möglich.) Anscheinend entspricht es der "von allen" -Regel. Dann wird eine übereinstimmende Route gefunden und die Quell-IP festgelegt, aber es scheint, dass auf die Routing-Richtlinie mit den Informationen dieser Quell-IP erneut verwiesen wird.
Da diesmal die Quell-IP festgelegt wurde, besteht die Möglichkeit, nicht nur "von allen", sondern auch "von XX.XX.XX.XX" zu treffen.
Der Grund, warum auf die Routing-Richtlinie zweimal verwiesen wird, liegt darin, dass die Pakete nach dem Verlassen des lokalen Prozesses die Routing-Entscheidung zweimal bestanden haben, wenn Sie sich ansehen, wie die Pakete unter Linux fließen. Ich denke, es wird.
Insbesondere wenn die Anwendung keine Quell-IF angibt, folgt sie wahrscheinlich der Notation "dev XXXX" für das übereinstimmende Routing.
#ip route
default via 172.19.48.1 dev eth0
172.19.48.0/20 dev eth0 proto kernel scope link src 172.19.49.170
Mit anderen Worten, selbst wenn es sich um eine Antwort auf ein von außen kommendes Paket handelt, gibt es nicht immer eine Antwort von der empfangenen IF zurück und hält sich an das Routing. (Für die Quell-IP sollte die IP zum Zeitpunkt des Empfangs verwendet werden.)
Ich wusste nicht, was es war, also habe ich es überprüft. Die zur Validierung verwendeten Tools sind Ping und Traceroute. Wie bereits erwähnt, können Sie mit Ping die Quelle mit der Option -I angeben. Sie können die Quelle auch mit den Optionen -i und -s in traceroute angeben.
Außerdem werden wir es hier wie folgt nennen.
src X.X.X.X
wird als IP beschriebenErgebnis
Angabe der Quell-IP | Angabe der Quell-IF | Ergebnis |
---|---|---|
Keiner | Keiner | Gesendet von der aufgelisteten IF mit der aufgelisteten IP |
Ja | Keiner | Wird von der aufgelisteten IF mit der angegebenen IP gesendet |
Keiner | Ja | Wird von der angegebenen IF mit der angegebenen IP gesendet |
Ja | Ja | Es wird mit der angegebenen IP gesendet. Die Quell-IF wird beschrieben, sobald sie organisiert ist. |
Durch Markieren mit der Linux-Firewall können Sie eine Routing-Richtlinie für diese Markierung schreiben.
Bitte sehen Sie hier für Details. Wenden Sie DS-Lite mit FWMARK nur auf die Ports 80 und 443 an Iptables Tutorial 1.2.2
Der Grund dafür ist, dass die Muster, die in der Linux-Firewall angegeben werden können (z. B. mit dem Befehl iptables), sehr detailliert sind. Dies gibt Ihnen mehr Flexibilität beim Schreiben von Regeln, die mit Paketen übereinstimmen.
Es gibt jedoch einige Einschränkungen.
Aus Vollständige Kontrolle des Datenverkehrs mit NETMARK und iproute2
[Hinweis] Wenn Sie das Routing mithilfe von fwmark in iproute2 steuern, wird das Standard-Gateway anscheinend als "Netzwerk nicht erreichbar" behandelt, bevor Sie zur fwmark-Tabelle wechseln. Seien Sie also vorsichtig.
Bitte beachten Sie, dass Sie möglicherweise einmal davon abhängig waren. (Zu diesem Zeitpunkt war es CentOS 7.3) Wahrscheinlich wird die Routing-Entscheidung unmittelbar nach dem Verlassen des lokalen Prozesses durchlaufen. Wenn hier also kein passendes Routing vorhanden ist, wird es als "Netzwerk nicht erreichbar" behandelt.
Es kann nicht mit PBR erreicht werden, aber es kann mit NameSpace erreicht werden.
Einzelheiten finden Sie in diesem Bereich. Separate Linux-Routing-Tabelle mithilfe des Netzwerk-Namespace Verwendung des Befehls ip netns (der Bereich der Netzwerkexperimente wird erweitert) ip-netns(8) — Linux manual page Versuch, mit VXLAN unter Linux umzugehen
Bisher haben wir den Befehl ip verwendet, um den Inhalt von PBR zu überprüfen, aber ich möchte auch andere Methoden erwähnen. Es wird empfohlen, die Methode zum Ändern der Einstellungen so weit wie möglich auf eine zu beschränken oder die Rollenverteilung zu klären. (Andernfalls werden Sie immer irgendwo schlagen und es kommt zu unerwarteten Unannehmlichkeiten.)
iproute2 Dieses Paket enthält IP-Befehle und so weiter. Beim Routing verwenden wir hauptsächlich die "IP-Regel", mit der die Routing-Richtlinie angezeigt und ausgeführt werden kann, und die "IP-Route", mit der die Routing-Tabelle angezeigt und ausgeführt werden kann. Der mit diesem Befehl festgelegte Inhalt wird sofort wiedergegeben, verschwindet jedoch beim Neustart. Im Notfall können Sie es neu starten, um die Herausforderung mit Zuversicht anzunehmen. Grundsätzlich sollten Sie in der Lage sein, jede Distribution (auch eingebettetes System) zu verwenden, daher ist es bequem, iproute2 zu beherrschen.
Bitte sehen Sie hier für Details. Linux Advanced Routing & Traffic Control HOWTO ip-rule(8) — Linux manual page ip-route(8) — Linux manual page Statische Routen mit IP-Befehlen konfigurieren
network-tools Ein supertypisches netzwerkbezogenes Paket, das ifconfig, arp, route und netstat enthält. Es ist jedoch heute veraltet. Viele Leute finden es einfacher, dies zu verwenden, aber wir empfehlen, ab sofort iproute2 zu verwenden.
NetworkManager
In der RedHat-Serie werden Netzwerkeinstellungen häufig mit Netowrk Manager vorgenommen. Es gibt eine GUI, aber es stehen auch TUI und CLI zur Verfügung, die mit dem Befehl nmtui bzw. dem Befehl nmcli verarbeitet werden können. Für die meisten Netzwerkeinstellungen ist nmtui ausreichend, für erweiterte Einstellungen wie diese verwenden Sie den Befehl CLI nmcli. Die Einstellungen in nmcli werden (vorerst) in diesem Artikel nicht behandelt. Dies ist jedoch praktischer, wenn Sie Ihr Netzwerk normalerweise in Network Manager konfigurieren. PBR ist jedoch nicht gut und schwer zu handhaben. Zunächst denke ich, dass es besser ist, es zu verwenden, nachdem Sie sich an die Operation mit dem Befehl ip gewöhnt haben.
Bitte sehen Sie hier für Details. Konfigurieren Sie richtlinienbasiertes Routing, um alternative Routen zu definieren (https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define- alternative-routen_konfigurieren-und-verwalten-vernetzung) RHEL7-Netzwerkeinstellungen
Hier werde ich über Red Hat sprechen. (Sorry, ich bin nicht mit Debian vertraut ...) Netowork Manager, den ich zuvor eingeführt habe, verfügt über viele Umgebungen, die absichtlich gestoppt werden. Wenn Sie NetoworkManager nicht verwenden möchten, die Einstellungen aber auch nach dem Neustart erhalten bleiben sollen, können Sie dies tun, indem Sie direkt in die Einstellungsdatei schreiben. Auch hier denke ich, dass es am besten ist, sich mit dem Befehl ip daran zu gewöhnen.
Bitte sehen Sie hier für Details. Ich habe versucht, das richtlinienbasierte Routing in RHEL 7.4 festzulegen. Festlegen statischer Routen in IFCFG-Dateien Richtlinienbasiertes Routing (PBR) unter RHEL 7 und CentOS 7 festlegen
Bitte verzeihen Sie mir, obwohl es sich um einen ausgeschnittenen Artikel handelt, der nur Zitate und Links enthält.
Recommended Posts