GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Der tragbare Weg, um die Standard-Routen-Quelladresse zu erhalten?

Ich muss die IP-Adresse abrufen, die als Quelle für Pakete verwendet wird, die über default gesendet werden Strecke . (BEARBEITEN) Bitte beachten Sie, dass ich mich auf den default beziehe Route, die als default markiert ist in ip r (Siehe am Ende für die tatsächliche Route, die die Pakete unter meinem VPN-Setup nehmen).

Meine erste Idee war, ip r zu verwenden und daraus ableiten:

# ip r
0.0.0.0/1 via 10.0.2.1 dev tun0
default via 10.237.76.1 dev enxb827eb4297a4 src 10.237.77.206 metric 202
10.0.2.0/24 dev tun0 proto kernel scope link src 10.0.2.100
10.81.102.133 via 10.237.76.1 dev enxb827eb4297a4
10.237.76.0/22 dev enxb827eb4297a4 proto kernel scope link src 10.237.77.206 metric 202
128.0.0.0/1 via 10.0.2.1 dev tun0

Es sah gut aus, ein ip r | grep default | cut -d" " -f7 gab mir den erwarteten 10.237.77.206 .

Dann bekam ich auf einem anderen System (beide sind Debian-Derivate)

# ip r
0.0.0.0/1 via 10.0.2.1 dev tun0
default via 10.237.76.1 dev eth0  metric 202
10.0.2.0/24 dev tun0  proto kernel  scope link  src 10.0.2.5
10.81.102.133 via 10.237.76.1 dev eth0
10.237.76.0/22 dev eth0  proto kernel  scope link  src 10.237.76.56  metric 202
128.0.0.0/1 via 10.0.2.1 dev tun0

Hier ist die Lösung nicht so einfach:Ich muss die IP der Standardroute extrahieren (10.237.76.1 ), gleichen Sie es mit der entsprechenden Route ab (10.237.76.0/22 dev eth0 proto kernel scope link src 10.237.76.56 metric 202). ), die hoffentlich den src enthält .

Letztlich Schnitt aus der Ausgabe von ip wird auf lange Sicht nicht haltbar sein (Änderungen in der Ausgabe, Variationen in der Ausgabe zwischen Distributionen oder Versionen, …)

Gibt es einen tragbareren Weg, um diese IP zu erhalten?

Mit „tragbar“ meine ich:

  • idealerweise „funktioniert auf jedem Linux“
  • weniger ideal, aber immer noch gut „funktioniert auf Debian und seinen Derivaten“

Bitte beachten Sie, dass sich das Gerät in einem exklusiven VPN befindet, sodass ich die tatsächliche Route, die das Paket nehmen wird, wenn das VPN aktiv ist (d. h. die meiste Zeit), nicht direkt analysieren kann:den default Route wird von zwei anderen Routen maskiert, die effektiv den gesamten IP-Bereich abdecken. Bitte korrigieren Sie mich, wenn ich mich hier irre.

Akzeptierte Antwort:

Sie könnten eine beliebige Adresse auswählen, von der Sie glauben, dass sie immer über die Standardroute zugegriffen wird, zum Beispiel Google DNS, und dann die Quelladresse für das drucken Strecke:

ip route get 8.8.8.8 | awk '{ for (nn=1;nn<=NF;nn++) if ($nn~"src") print $(nn+1) }'

Linux
  1. Linux treibt das Internet an, bestätigt EU-Kommissar

  2. Python:Erhalten Sie ein Standard-Gateway für eine lokale Schnittstelle/IP-Adresse in Linux

  3. Wie kann die eth0-Gateway-Adresse ermittelt werden, wenn es sich nicht um das Standard-Gateway handelt?

  4. Gibt es eine Möglichkeit, die BIOS-Version von Linux abzurufen?

  5. Linux - Treffer der Standardroute finden

So erhalten Sie die Größe eines Verzeichnisses in Linux

So finden / erhalten Sie Ihre IP-Adresse unter Linux

So ändern Sie die Standard-Shell im Linux-System

So erhalten Sie Ihre IP-Adresse unter Linux

Der tragbare (posix) Weg zur Prozesssubstitution?

Holen Sie sich eine IP-Adresse unter Linux:Entdecken Sie die vielen Möglichkeiten