Das Linux-Routing verarbeitet keine Domänennamen

Das Linux-Routing verarbeitet keine Domänennamen

Ich frage mich, ob ich einen VPS mit 2 Netzwerkschnittstellen (1.1.1.1 UND 2.2.2.2) habe und 1.1.1.1 als primär eingestellt ist ...

eth0 = 1.1.1.1
eth0:1 = 2.2.2.2

Jetzt möchte ich den gesamten Datenverkehr für domain.com (ich weiß nicht, ob die Domäne Cloudflare verwendet) über die IP 2.2.2.2 eth0:1 umleiten.

Beispiel 1:

Wenn ich es ausführe, wget domain.comwird es durch 2.2.2.2 eth0:1
gehen, aber wenn ich es ausführe, wget google.comwird es durch 1.1.1.1 eth0 gehen

Beispiel 2:

Wenn ich beispielsweise zu „whatismyip.com“ gehe, um eth0 durchzureichen, wird angezeigt, dass meine IP „1.1.1.1“ ist.
Wenn ich jedoch zu „whatismyipaddress.com“ gehe, wird eth0:1 durchgereicht, sodass meine IP „2.2.2.2“ ist.

Antwort1

Dabei sind einige Dinge zu beachten:

Das Linux-Routing verarbeitet keine Domänennamen

Es gibt viele Konfigurationsoptionen für das Routing unter Linux, aber keine, die reine Domänennamen akzeptiert. Schließlich geht es hier um IP-Routing. Daher müssen Regeln für IP-Adressen definiert werden, die offensichtlich „kaputt gehen“, wenn sich die DNS-Einträge einer Domäne ändern.

Schnittstellenpräferenz

In diesem Fall gibt es zwei Schnittstellen, die eine Route zum selben Subnetz (0.0.0.0/0, auch bekannt als Internet) bereitstellen. Um dem Kernel mitzuteilen, dass er eine bestimmte Schnittstelle bevorzugen soll, müssen wir Policy-Based Routing (PBR) anwenden.

Wie der Name schon sagt, funktioniert Policy-Based Routing, indem eine Richtlinie (auch „Regel“ genannt) definiert wird, um zu bestimmen, welche Schnittstelle verwendet werden soll. Ohne Richtlinien wählt der Kernel die erste Route, die zum Netzwerk eines Ziels passt.

Routen, Regeln, Tabellen

Der Kernel verwendet Routen, um zu bestimmen, wie Pakete behandelt werden. Eine Route ist eine einfache Definition, die die Zieladresse und den zu verwendenden Link (Schnittstelle) enthält.

Routen werden in gruppiert tables. Welche Tabelle verwendet wird, hängt von den definierten Richtlinien ab.

Eine policy(oder Regel) teilt dem Kernel mit, welche Tabelle zum Weiterleiten von Paketen untersucht werden soll. Die Definition der Richtlinie umfasst die zu untersuchende Quelle, das Ziel und die Routing-Tabelle eines Pakets.

Aktuelle Routen und Richtlinien anzeigen

Um die aktuell vom System verwendeten Routen anzuzeigen, führen Sie aus ip route

Hier werden alle Einträge in der mainRouting-Tabelle angezeigt. Auf andere Tabellen kann durch Ausführen zugegriffen werden ip route show table <tablename>.

Um die aktuell verwendeten Richtlinien anzuzeigen, führen Sie aus ip rule

Hier werden alle vom Kernel verwendeten Richtlinien/Regeln aufgelistet. Sie werden von oben nach unten durchlaufen, bis eine Regel auf das zu verarbeitende Paket zutrifft.

Beispiel

echo "101 out1" >> /etc/iproute2/rt_tables
ip rule add from all to 3.4.5.6 table out1
ip route add default via 10.0.0.1 dev eth0 src 1.1.1.1 table out1
ip route add 10.0.0.0/8 dev eth0 src 1.1.1.1 table out1

Diese Befehle erstellen eine neue Routing-Tabelle out1und fügen sie 10.0.0.1als Gateway für den Internetzugang hinzu. Der an 3.4.5.6(dieser muss durch eine tatsächliche, aufgelöste IP-Adresse der Zieldomäne ersetzt werden) gerichtete Datenverkehr wird über das in der out1Tabelle definierte Standard-Gateway unter Verwendung des angegebenen Geräts eth0und der angegebenen IP gesendet 1.1.1.1.

Ich empfehle Ihnen, einige vorhandene Tutorials und Anleitungen zu lesen, um sich mit der Terminologie vertraut zu machen. Suchen Sie nach iproute2und linux advanced routing and traffic control.

Und zu guter Letzt: Testen Sie Ihre Änderungen, bevor Sie sie auf einem Live-System anwenden. Fehler passieren, ich persönlich ziehe es vor, eine VM zu braten, anstatt einen Remote-Server.

verwandte Informationen