web-dev-qa-db-fra.com

Est-ce que traceroute utilise UDP ou ICMP ou les deux?

Lorsque je fais une trace sur le domaine www.google.com depuis mon ordinateur portable, est-ce que j'utilise icmp ou udp?
Je pensais que c'était icmp type 11 mais en cherchant quelque chose d'autre, je suis tombé sur des règles où icmp type 30 était utilisé et j'ai vu des règles où udp était utilisé.
Quelqu'un peut-il m'expliquer comment cela fonctionne?
Je travaille sur un pare-feu (iptables) pour un serveur virtuel dédié.

24
Kris

Le type de paquet envoyé diffère selon l'implémentation. Par défaut, Windows tracert utilise ICMP et Mac OS X et Linux traceroute utilisent UDP. Je n'ai pas de machines BSD ou Solaris ni aucun autre système d'exploitation à portée de main, mais la page de manuel de la version Mac OS X mentionne que sa provenance est BSD 4.3.

Les versions Mac et Linux que j'ai offrent la possibilité de choisir une variété de protocoles différents, y compris les paquets ICMP, TCP, UDP et GRE. D'autres protocoles peuvent être spécifiés par leur nom ou leur numéro, mais traceroute ne sait rien du fonctionnement des autres protocoles. Cela les envoie aveuglément.

Ils peuvent également à la fois modifier la charge utile et les ports source et de destination afin d'éviter les pare-feu ou découvrir quel routeur le long du chemin supprime des paquets d'une certaine taille.

Toutes les versions de traceroute reposent sur les réponses ICMP type 11 (Time dépassé) de chaque saut le long de la route. Si les réponses ICMP type 11 sont bloquées par votre pare-feu, traceroute ne fonctionnera pas. Ces paquets sont entrants et non sortants.

ICMP type est spécifiquement désigné pour traceroute et est étiqueté comme une "demande d'information". Je n'ai pu trouver nulle part où cela est réellement utilisé. La page de manuel des versions Mac OS X et Linux indique que -I enverra ICMP type 8 (demande d'écho). Wikipedia dit que Windows tracert utilise également les requêtes d'écho ICMP. ICMP type 30 ou type 8 sont des paquets sortants, pas entrants.

ICMP type (réponse d'écho) peut revenir comme le tout dernier paquet lorsque le TTL est exactement égal au nombre de sauts. Traceroute saura qu'il est terminé lorsqu'il reçoit C'est un paquet entrant.

TCP SYN les paquets provoqueront un paquet RST ou un SYN ACK paquet en réponse quand ils atteignent leur destination. Si vous recevez un SYN ACK paquet, il est poli de suivre avec un paquet RST pour ne pas laisser une connexion semi-ouverte sur le serveur.

Il est possible d'obtenir ICMP type 3 code 4 des réponses au lieu des réponses ICMP type 11 si vous envoyez un gros paquet avec l'indicateur "Ne pas fragmenter", mais cela ne vous permettra probablement de trouver le houblon avec le plus petit MTU. Normalement, vous n'obtiendrez ce type de réponse que d'un bond le long de l'itinéraire. Pas tous.

28
Ladadadada

Le traceroute traditionnel utilise UDP sur l'incrémentation des ports pour chaque saut.

Vous pouvez utiliser n'importe quel type de paquet pour l'implémenter - ICMP, TCP SYN, etc. Tout ce qu'il faut, c'est que le paquet IP expire et vous êtes en or.

Diverses implémentations, comme MacOS, prennent en charge plusieurs types de traceroute, ainsi que des modes qui n'incrémentent pas les ports, etc., pour contourner les restrictions du pare-feu.

8
Daniel Pittman