it-swarm.com.de

Verwendet Traceroute UDP oder ICMP oder beides?

Wenn ich von meinem Laptop aus eine Ablaufverfolgung in der Domain www.google.com durchführe, verwende ich icmp oder udp?
Ich dachte, es wäre icmp Typ 11, aber als ich nach etwas anderem suchte, stieß ich auf Regeln, bei denen icmp Typ 30 verwendet wurde, und ich sah Regeln, bei denen udp verwendet wurde.
Kann mir jemand erklären, wie das funktioniert?
Ich arbeite an einer Firewall (iptables) für einen virtuellen dedizierten Server.

24
Kris

Die Art des gesendeten Pakets hängt von der Implementierung ab. Standardmäßig verwendet Windows tracert ICMP und sowohl Mac OS X als auch Linux traceroute verwenden UDP. Ich habe keine BSD- oder Solaris-Maschinen oder andere Betriebssysteme zur Verfügung, aber die Manpage für die Mac OS X-Version erwähnt, dass die Herkunft BSD 4.3 ist.

Die von mir angebotenen Mac- und Linux-Versionen bieten die Möglichkeit, verschiedene Protokolle auszuwählen, darunter ICMP-, TCP-, UDP- und GRE-Pakete. Andere Protokolle können durch ihren Namen oder ihre Nummer angegeben werden, aber traceroute weiß nichts darüber, wie andere Protokolle funktionieren. Es schickt sie einfach blind.

Sie können auch sowohl die Nutzlast als auch die Quell- und Zielports ändern, um Firewalls zu vermeiden oder festzustellen, welcher Router auf dem Pfad Pakete einer bestimmten Größe verwirft.

Alle Versionen von Traceroute basieren auf ICMP-Typ 11 (Zeit überschritten) Antworten von jedem Hop entlang der Route. Wenn ICMP-Antworten vom Typ 11 von Ihrer Firewall blockiert werden, funktioniert Traceroute nicht. Diese Pakete sind eingehend und nicht ausgehend.

ICMP-Typ ist speziell für Traceroute vorgesehen und als "Informationsanforderung" gekennzeichnet. Ich konnte nirgendwo finden, wo dies tatsächlich verwendet wird. Die Manpage für die Mac OS X- und Linux-Versionen besagt, dass -IICMP Typ 8 (Echoanforderung) sendet. Wikipedia sagt, dass Windows tracert auch ICMP-Echoanforderungen verwendet. ICMP Typ 30 oder Typ 8 sind ausgehende Pakete, keine eingehenden.

ICMP-Typ (Echoantwort) wird möglicherweise als letztes Paket zurückgegeben, wenn TTL genau der Anzahl der Hops entspricht. Traceroute weiß, dass es beendet ist, wenn es empfangen wird Dies ist ein eingehendes Paket.

TCP SYN Pakete verursachen entweder ein RST Paket oder ein SYN ACK Paket als Antwort, wenn sie ihr Ziel erreichen. Wenn Sie ein SYN ACK - Paket erhalten, ist es höflich, ein RST -Paket zu verwenden, um keine halboffene Verbindung auf dem Server zu hinterlassen.

Es ist möglich, ICMP Typ 3 Code 4 Antworten anstelle von ICMP Typ 11 Antworten zurück zu erhalten, wenn Sie ein großes Paket mit gesetztem Flag "Nicht fragmentieren" senden. Dies ist jedoch wahrscheinlich nur möglich Finde den Hopfen mit der kleinsten MTU. Normalerweise erhalten Sie diese Art von Antwort nur von einem Sprung entlang der Route. Nicht alle von ihnen.

28
Ladadadada

Herkömmliche Traceroute verwendet UDP zum Inkrementieren von Ports für jeden Hop.

Sie können jede Art von Paket verwenden, um es zu implementieren - ICMP, TCP SYN usw.) Alles, was Sie brauchen, ist, dass das IP-Paket abläuft und Sie golden sind.

Verschiedene Implementierungen wie MacOS bieten Unterstützung für mehrere Arten von Traceroute sowie für Modi, die keine Ports usw. erhöhen, um Firewall-Einschränkungen zu umgehen.

8
Daniel Pittman