Wie verfolge ich ausgehende Schnittstellen?

8

Der Unix-Befehl tracerouteverfolgt die IP-Adressen der Knoten von einem Quellknoten zu einem Zielknoten. Jeder Knoten dazwischen hat eine eingehende und eine ausgehende Schnittstelle.

Traceroute

Bei Ausführung traceroute -n dstvon srcwerden die IP-Adressen von src, dst und allen eingehenden Schnittstellen der dazwischen liegenden Hops angezeigt.

Aber wie kann man die ausgehenden IP-Adressen verfolgen?

Aktualisieren

Ich habe den ping -RVorschlag ausprobiert , aber er scheint nicht zu funktionieren. Dies ist die Traceroute zu einem öffentlichen Webserver:

$ ping -n -c 1 -R 212.227.222.9
PING 212.227.222.9 (212.227.222.9) 56 (124) Datenbytes.
64 Bytes von 212.227.222.9: icmp_req = 1 ttl = 57 Zeit = 47,4 ms
RR: 192.168.2.111
        169.254.1.1
        87.186.224.94
        62.154.76.34
        62.154.12.175
        212.227.117.13
        212.227.117.8
        10.71.3.253
        212.227.222.9


--- 212.227.222.9 Ping-Statistiken ---
1 gesendete Pakete, 1 empfangene, 0% Paketverlust, Zeit 0 ms
rtt min / avg / max / mdev = 47,441 / 47,441 / 47,441 / 0,000 ms

Und dies ist die IP-Adresse meiner DFÜ-Verbindung.

$ curl -s https://toolbox.googleapps.com/apps/browserinfo/info/ | jq -r .remoteAddr
93.192.75.247

Es wurde jedoch nicht vom Ping-Befehl aufgezeichnet. Was kann der Grund sein?

ceving
quelle
Tipp: Der schnellste Weg, um Ihre öffentliche IP zu erhalten, ist curl ifconfig.me. Einfachste Sache im Internet. Hände runter.
Ryan Foley
1
ICMP gibt Ihnen niemals die Informationen, die Sie genau erhalten möchten. Das Standardverhalten besteht darin, die Ausgangsschnittstelle der ICMP-Nachricht zu verwenden. Sie kann jedoch im Allgemeinen so konfiguriert werden, dass sie von anderen Schnittstellen bezogen wird. Angenommen, ich habe einen Internet-Router, der die RFC1918-Adressierung zwischen Router-Schnittstellen in meinem eigenen Netzwerk verwendet, aber ich möchte diese Adressen nicht der Öffentlichkeit zur Verfügung stellen. Ich kann einer Loopback-Schnittstelle eine öffentliche IP zuweisen und den gesamten ICMP-Verkehr von dort beziehen diese Schnittstelle. Sie erhalten weder die "eingehenden" noch die "ausgehenden" Schnittstellen und werden dies niemals von diesem Gerät aus tun.
YLearn
@RyanFoley ifconfig.me ist nicht zuverlässig (1 Fehler in 5 Tests) und langsam: Eine Abfrage dauert 2,8 Sekunden. Die Toolbox von Google benötigt 0,7 Sekunden.
Ceving
Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:

6

Ich bin nicht genau die Antwort auf Ihre Frage, aber das ist eine einfache (aber begrenzte) Möglichkeit, (in bestimmten Fällen) das zu tun, was Sie wollen. Ich poste die Option -R der Ping-Manpage:

-R Route aufzeichnen. Schließt die Option RECORD_ROUTE in das Paket ECHO_REQUEST ein und zeigt den Routenpuffer für zurückgegebene Pakete an. Beachten Sie, dass der IP-Header nur für neun solcher Routen groß genug ist. Viele Hosts ignorieren oder verwerfen diese Option.

Sie können also auch den Rückweg von ECHO_REQUEST sehen, dh nicht die Exit-Schnittstelle (nach der Sie fragen), es sei denn, der ausgehende Pfad ist der gleiche wie der Rückweg. Nur in diesem Fall ist der Rückgabepfad die IP-Adresse der ausgehenden Schnittstelle, nach der Sie fragen.

Das ist ein echtes Beispiel in meinem Internetprovider-Netz, vielleicht nicht so klar, aber ich habe gerade keinen Router, um mich miteinander zu verbinden :) dest 10.2.105.178

traceroute 10.2.105.178
traceroute to 10.2.105.178 (10.2.105.178), 30 hops max, 60 byte packets
 1  192.168.1.254 (192.168.1.254)  3.418 ms  3.575 ms  4.021 ms
 2  10.189.48.1 (10.189.48.1)  11.237 ms * *
 3  10.2.105.178 (10.2.105.178)  15.235 ms * *

ping -R 10.2.105.178 PING 10.2.105.178 (10.2.105.178) 56 (124) Datenbytes.

64 Bytes vom 10.2.105.178: icmp_req = 5 ttl = 253 time = 74,1 ms NOP RR:

192.168.1.133

10.189.51.61

10.2.105.177

10.2.105.178

10.2.105.178

10.189.48.1

192.168.1.254

192.168.1.133

---- weggelassen ----

64 Bytes vom 10.2.105.178: icmp_req = 6 ttl = 253 time = 13,0 ms NOP RR:

192.168.1.133

10.189.51.61

10.2.105.177

10.2.105.178

10.2.105.218 ## jedes Mal ändern, ich weiß nicht warum ##

10.189.48.1

192.168.1.254

192.168.1.133

feligiotti
quelle
Ich bin nicht sicher, ob ich richtig verstanden habe, was RECORD_ROUTE tut, aber es scheint nicht zu sein, was ich brauche. Ich habe es mit einer DFÜ-Verbindung versucht. Ich kenne die öffentliche Adresse meines DFÜ-Routers und habe eine Route von neun Hops zu einem öffentlichen Webserver. Für jeden Hopfen habe ich die -ROption ausprobiert . Der vierte Sprung war der erste, der die Anfrage beantwortete. Die Antwort enthält jedoch nicht meine öffentliche Adresse. Und obwohl es nur der vierte Sprung war, enthält die Antwort 9 Adressen.
Ceving
Nur einen Moment, ich bereite ein Beispiel vor
feligiotti
Das ping -Rsoll nur für sehr begrenzten Hopfen nützlich sein. Ich sage vorher, das ist ein eingeschränkter Weg
feligiotti
Das gleiche Beispiel funktioniert nicht für mein DFÜ-Netzwerk. Ich habe keine Idee warum. Vielleicht NAT?
Ceving
Hi @Ceving, mach einen traceroute 212.227.222.9und dann einen ping -R bis zum dritten Hop, den du in der Traceroute gefunden hast. Auf diese Weise haben Sie das gleiche Schema, das ich zum Lesen der Antwort verwendet habe. Die neun Strecke Gesamtmittel gehen und kommen zurück, wenn Sie also tun ping -R 212.227.222.9Sie nicht den vollständigen Pfad sehen, aber nur der letzte Teil
feligiotti
5

Gemäß RFC1812 sollte die Quelladresse der vom Router generierten ICMP-Nachricht die der Ausgangsschnittstelle sein, über die das Paket normalerweise zum Absender zurückkehren würde.

In der Realität ist es sehr wahrscheinlich, dass Sie einem nicht standardmäßigen Verhalten ausgesetzt sind, bei dem der Router die ICMP-Antwort mit der Quelle der Eingangsschnittstelle erstellt. Dies erleichtert normalerweise das Ablesen der Traceroute.

Als Antwort auf YLearns Frage veröffentliche ich ein Netzwerkdiagramm und einige Ausgaben. Beispieltopologie zur Veranschaulichung der Funktionsweise von Traceroute

Nehmen wir an, wir säuern die Traceroute von R5s Loopback 5.5.5.5 zu R1s Loopback 1.1.1.1. Wie Sie sehen können, erfolgt der Vorwärtspfad über R4-R2, während der Rückwärtspfad R3-R4 ist.

R4#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "bgp 4", distance 20, metric 0
Tag 2, type external
Last update from 10.1.24.2 00:02:42 ago
Routing Descriptor Blocks:
* 10.1.24.2, from 10.1.24.2, 00:02:42 ago
  Route metric is 0, traffic share count is 1
  AS Hops 2

R1#sh ip route 5.5.5.5
Routing entry for 5.5.5.5/32
Known via "bgp 1", distance 20, metric 0
Tag 3, type external
Last update from 10.1.13.3 00:14:18 ago
Routing Descriptor Blocks:
* 10.1.13.3, from 10.1.13.3, 00:14:18 ago
  Route metric is 0, traffic share count is 1
  AS Hops 2
  Route tag 3
  MPLS label: none

Die Traceroute-Ausgabe von R5 sieht wie folgt aus:

R5#traceroute
Protocol [ip]:
Target IP address: 1.1.1.1
Source address: 5.5.5.5
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.45.4 208 msec 140 msec 100 msec
2 10.1.24.2 96 msec 44 msec 104 msec
3 10.1.12.1 224 msec 220 msec 112 msec

Während der von R1 generierte tatsächliche ICMP-Verkehr über R3 zu R5 zurückkehrt, enthält der IP-Header der ICMP Unreachable-Nachricht die Quelle der Eingangsschnittstelle 10.1.12.1.

Nach meiner Erfahrung, wie sich Cisco- und Juniper-Router verhalten, bin ich mir bei anderen Anbietern nicht sicher.

mkurek
quelle
Wahrscheinlich nur ich, aber der zweite Satz hat mich ein bisschen verwirrt. Wollen Sie damit sagen, dass ein Gerät im Internet häufig über die Eingangsschnittstelle des Datenverkehrs reagiert, der die Generierung der ICMP-Nachricht verursacht hat? Wenn also der Datenverkehr auf Int1 empfangen wird und die ICMP-Nachricht auf Int2 ausgeht, wird sie von Int1 bezogen? Oder beziehen Sie sich auf eine andere Eingangsschnittstelle (und wenn ja, welche)? Nach meiner Erfahrung arbeiten die meisten Router wie im RFC-Status und verwenden standardmäßig die Ausgangsschnittstelle der Nachricht. In den meisten Fällen ist dies dieselbe Schnittstelle, auf der der Datenverkehr empfangen wurde.
YLearn