Frage Verwendet Traceroute UDP oder ICMP oder beides?


Wenn ich auf meinem Computer eine Spur auf der Domain www.google.com anlege, verwende ich icmp oder udp?
Ich dachte, es wäre ICMP Typ 11, aber während der Suche nach etwas anderem stieß ich auf Regeln, wo ICMP Typ 30 verwendet wurde und ich sah Regeln, wo UDP verwendet wurde.
Kann mir jemand erklären, wie das geht?
Ich arbeite an einer Firewall (iptables) für einen virtuellen dedizierten Server.


23
2018-03-28 22:14


Ursprung




Antworten:


Die Art des Pakets, das gesendet wird, hängt von der Implementierung ab. Standardmäßig Windows tracert verwendet ICMP und sowohl Mac OS X als auch Linux traceroute benutze UDP. Ich habe keine BSD- oder Solaris-Maschinen oder irgendein anderes Betriebssystem zur Hand, aber die Manpage für die Mac OS X-Version erwähnt seine Herkunft ist BSD 4.3.

Die Mac- und Linux-Versionen, die ich habe, bieten die Möglichkeit, eine Vielzahl verschiedener Protokolle zu wählen, einschließlich ICMP-, TCP-, UDP- und GRE-Pakete. Andere Protokolle können über 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 die Payload und die Quell- und Zielports ändern, um Firewalls zu vermeiden oder herauszufinden, welcher Router entlang des Pfads Pakete einer bestimmten Größe ablegt.

Alle Versionen von traceroute sind darauf angewiesen ICMP-Typ 11 (Zeit überschritten) Antworten von jedem Hop entlang der Route. Wenn ICMP-Typ-11-Antworten von Ihrer Firewall blockiert werden, funktioniert Traceroute nicht. Diese Pakete sind eingehend, nicht abgehend.

ICMP-Typ 30 ist speziell für Traceroute vorgesehen und wird als "Informationsanfrage" bezeichnet. Ich konnte nirgendwo finden, wo dies tatsächlich verwendet wird. Die man-Seite für die Mac OS X und Linux Versionen sagt das -I wird senden ICMP-Typ 8 (Echoanforderung) Wikipedia sagt das Windows tracert verwendet auch ICMP-Echoanforderungen. ICMP-Typ 30 oder Typ 8 sind ausgehende Pakete, nicht eingehend.

ICMP-Typ 0 (Echo-Antwort) kann als das allerletzte Paket zurückkommen, wenn die TTL genau der Anzahl von Hops entspricht. Traceroute wird wissen, dass es beendet ist, wenn es eines davon erhält. Dies ist ein eingehendes Paket.

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

Es ist möglich zu bekommen ICMP Typ 3 Code 4 Antworten zurück anstelle von ICMP-Typ-11-Antworten, wenn Sie ein großes Paket mit dem Flag "Nicht fragmentieren" senden, dies erlaubt Ihnen jedoch wahrscheinlich nur, den Hop mit der kleinsten MTU zu finden. Normalerweise erhalten Sie diese Art von Antwort nur von einem Hop auf der Route. Nicht alle von ihnen.


25
2018-03-28 23:06





Traditionelle Traceroute verwendet UDP für die Erhöhung der Ports für jeden Hop.

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

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


8
2018-03-28 22:17



Der Standard-UDP-Port für eine unixartige Implementierung liegt zwischen 33434 und 33534. ICMP-Implementierungen verwenden eine "Echoanforderung" (Typ 8). - Ouki