Skip to main content

Comment utiliser la commande 'traceroute' sous Linux

15-commandes réseaux ifconfig, ping, arp, netstat, traceroute, hostname #darija (Avril 2025)

15-commandes réseaux ifconfig, ping, arp, netstat, traceroute, hostname #darija (Avril 2025)
Anonim

La commande traceroute est utilisée sous Linux pour mapper le parcours d’un paquet d’informations de sa source à sa destination. Une des utilisations de traceroute est de localiser le moment où une perte de données survient sur un réseau, ce qui peut signifier qu'un nœud est en panne.

Étant donné que chaque saut dans l'enregistrement reflète un nouveau serveur ou routeur entre le PC d'origine et la cible visée, la révision des résultats d'une analyse traceroute vous permet également d'identifier les points lents susceptibles de nuire au trafic sur votre réseau.

Comment ça marche

L’évaluation de l’itinéraire spécifique emprunté par le trafic réseau (ou la recherche de la passerelle des criminels qui rejette vos paquets) pose plusieurs problèmes de dépannage. Traceroute utilise le protocole IP temps de vivre champ pour solliciter une réponse ICMP TIME_EXCEEDED de chaque passerelle le long du chemin d'accès à un hôte de destination.

Le seul paramètre à inclure lors de l'exécution de la commande traceroute est le nom d'hôte ou l'adresse IP de la destination.

Syntaxe et commutateurs Traceroute

traceroute -dFInrvx -F first_ttl -g passerelle -je Je fais face -m max_ttl -p Port -q Nqueries -s src_addr -t tos -w temps d'attente -z pausemsecs hôte paquet de paquets

Bien que ce qui est décrit ci-dessus indique comment la commande traceroute doit être écrite pour fonctionner en ligne de commande, les performances ou le résultat de la commande peuvent être modifiés en spécifiant un ou plusieurs commutateurs facultatifs.

  • -F: Définissez la durée de vie initiale utilisée dans le premier paquet de sondage sortant.
  • -F: Définissez le bit "ne pas fragmenter".
  • -ré: Activer le débogage au niveau du socket.
  • -g: Spécifiez une passerelle de routage source lâche (8 au maximum).
  • -je: Spécifiez une interface réseau pour obtenir l'adresse IP source des paquets de sondage sortants. Cela n’est normalement utile que sur un hôte multi-hébergé. (Voir le-s drapeau pour une autre façon de le faire.)
  • -JE: Utilisez ICMP ECHO au lieu des datagrammes UDP.
  • -m: Définissez la durée de vie maximale (nombre maximal de sauts) utilisée dans les paquets de sonde sortants. La valeur par défaut est 30 sauts (le même que celui utilisé pour les connexions TCP).
  • -n: Imprimez les adresses de saut numériquement plutôt que symboliquement et numériquement (enregistre une recherche adresse de nom de serveur de noms pour chaque passerelle trouvée sur le chemin).
  • -p: Définissez le numéro de port UDP de base utilisé dans les sondes (la valeur par défaut est 33434). Traceroute espère que rien n'écoute sur les ports UDP base à base + nhops - 1 sur l’hôte de destination (un message ICMP PORT_UNREACHABLE sera renvoyé pour mettre fin au suivi de la route). Si quelque chose écoute sur un port de la plage par défaut, cette option peut être utilisée pour sélectionner une plage de ports inutilisée.
  • -r: Ignorez les tables de routage normales et envoyez directement à un hôte sur un réseau connecté. Si l'hôte ne se trouve pas sur un réseau directement connecté, une erreur est renvoyée. Cette option peut être utilisée pour envoyer une requête ping à un hôte local via une interface ne passant par aucune route (par exemple, après le dépôt de l'interface par acheminé (8C)).
  • -s: Utilisez l'adresse IP suivante (généralement indiquée sous la forme d'un numéro IP, et non d'un nom d'hôte) comme adresse source dans les paquets de sonde sortants. Sur les hôtes multi-hébergés (ceux ayant plusieurs adresses IP), cette option peut être utilisée pour forcer l'adresse source à être quelque chose d'autre que l'adresse IP de l'interface sur laquelle le paquet de test est envoyé. Si l'adresse IP ne fait pas partie des adresses d'interface de cette machine, une erreur est renvoyée et rien n'est envoyé. (Voir le-je drapeau pour une autre façon de le faire.)
  • -t: Met le type de service dans les paquets de sonde à la valeur suivante (zéro par défaut). La valeur doit être un entier décimal compris entre 0 et 255. Cette option peut être utilisée pour voir si différents types de service entraînent différents chemins. (Si vous n'exécutez pas 4.4 lb / po2, cela peut être théorique, car les services réseau habituels tels que telnet et ftp ne vous permettent pas de contrôler le TOS.) Toutes les valeurs du TOS ne sont pas légales ou n'ont pas de sens - voir les spécifications IP. Les valeurs utiles sont probablement `-t 16 '(délai faible) et `-t 8 '(débit élevé).
  • -v: Sortie verbeuse. Les paquets ICMP reçus autres que TIME_EXCEEDED et UNREACHABLE sont répertoriés.
  • -w: Définissez le délai (en secondes) d’attente d’une réponse à une analyse (5 secondes par défaut).
  • -X: Basculer les sommes de contrôle IP. Ceci empêche normalement traceroute de calculer les sommes de contrôle IP. Dans certains cas, le système d'exploitation peut écraser des parties du paquet sortant mais ne pas recalculer la somme de contrôle. ainsi, dans certains cas, la valeur par défaut est de ne pas calculer les sommes de contrôle et-X provoque leur calcul. Notez que des sommes de contrôle sont généralement requises pour le dernier saut lors de l’utilisation de sondes ICMP ECHO (-JE), ils sont donc toujours calculés lors de l’utilisation de ICMP.
  • -z: Définissez la durée (en millisecondes) de pause entre les sondes (0 par défaut). Certains systèmes, tels que Solaris et les routeurs de Cisco, limitent le nombre de messages icmp. Une bonne valeur à utiliser avec ceci est 500 (par exemple, 1/2 seconde).

Interpréter les résultats

Traceroute décrit le chemin suivi par un paquet IP vers un hôte Internet en lançant des paquets de sonde UDP avec une petite durée de vie (TTL), puis en écoutant une réponse ICMP "temps dépassé" d'une passerelle. Nous commençons nos sondes avec un TTL de un et augmentons de un jusqu'à obtenir un "port inaccessible" ICMP (ce qui signifie que le paquet est arrivé à sa destination) ou atteignons un nombre maximal de tentatives, dont le nombre par défaut est de 30 sauts et peut être modifié avec la-m drapeau.

Lorsque traceroute est exécuté, il envoie trois sondes à chaque paramètre de durée de vie, puis affiche une ligne sur la console indiquant la durée de vie, l'adresse de la passerelle et le temps d'aller-retour de chaque sonde. Si les réponses de l'analyse proviennent de différentes passerelles, l'adresse de chaque système répondeur est imprimée. S'il n'y a pas de réponse dans un délai de cinq secondes (modifié avec le-w drapeau), un astérisque est imprimé pour cette sonde.

Pour éviter que l'hôte de destination ne soit submergé par le traitement des paquets de sondage UDP, le port de destination est défini sur une valeur peu susceptible d'être utilisée par ce périphérique. Si un réseau ou un service de la destination utilise ce port, modifiez la valeur à l'aide de la touche-p drapeau.

Un exemple d'utilisation et de sortie donnera des résultats similaires à cet exemple:

yak 71% traceroute nis.nsf.net. traceroute to nis.nsf.net (35.1.1.48), 30 sauts maximum, paquet de 38 octets 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32. 216.1) 39 ms 39 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 msn -nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 8 129.140. 70.13 (129.140.70.13) 99 ms 99 ms 80 ms 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 11 nic.merit.edu (35.1 .1,48) 239 ms 239 ms 239 ms

Notez que les deuxième et troisième lignes sont les mêmes. Ce résultat concerne un noyau bogué sur le second système de saut, lbl-csam.arpa, qui transmet les paquets avec une valeur de durée de vie égale à zéro (un bogue de la version distribuée de la BSD 4.3). Vous devez deviner le chemin emprunté par les paquets d'un pays à l'autre puisque le réseau NSFNet (129.140) ne fournit pas de traduction d'adresse à nom pour ses NSS.

Un exemple plus intéressant est:

yak 72% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 sauts max 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 .Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 (129.140.70.13) 129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * 16 * * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18.26) .0.115) 339 ms 279 ms 279 ms

Notez que les passerelles situées à 12, 14, 15, 16 et 17 sauts n'envoient pas de messages ICMP "délai dépassé" ou avec un TTL trop petit pour nous atteindre. Les lignes 14 à 17 exécutent le code de la passerelle MIT C qui n'envoie pas de message "délai dépassé".

La passerelle silencieuse 12 dans l'exemple ci-dessus peut être le résultat d'un bogue dans le code de réseau BSD et ses dérivés: Les machines qui exécutent le code 4.3 et les versions antérieures envoient un message inaccessible en utilisant le temps TTL restant dans le datagramme d'origine. Étant donné que, pour les passerelles, la durée de vie restante est égale à zéro, il est garanti que le "temps dépassé" ICMP ne nous parviendra pas. Le comportement de ce bug est légèrement plus intéressant quand il apparaît sur le système de destination:

1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1 ) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms 6 ms. Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * 9 * * * 10 * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) 59 Mme ! 39 ms! 39 ms!

Notez qu'il y a 12 "passerelles" (13 est la destination finale) et que la dernière moitié est manquante. Ce qui se passe réellement, c’est que le serveur nommé déchirure (un Sun-3 sous Sun OS 3.5) utilise la durée de vie (TTL) de notre datagramme arrivé comme TTL dans sa réponse ICMP. Ainsi, la réponse expirera sur le chemin de retour (aucun avis n’a été envoyé à qui que ce soit, car les ICMP ne sont pas envoyés pour les ICMP) jusqu'à ce que nous testions avec une durée de vie égale au moins au double de la longueur du chemin. En d’autres termes, rip n’est en réalité que sept. saute loin.

Une réponse renvoyée avec une durée de vie de 1 indique que ce problème existe. Traceroute imprime un "!" après le délai si la durée de vie est inférieure ou égale à 1. Etant donné que les fournisseurs livrent de nombreux logiciels obsolètes (Ultrix, Sun 3.x) ou non standard (HPUX de DEC), attendez-vous à voir ce problème fréquemment et prenez soin de choisir hôte cible de vos sondes.

D'autres annotations possibles après l'heure sont! H, ! N, ou! P (hôte, réseau ou protocole inaccessible),! S (la route source a échoué),!F- (fragmentation nécessaire - la valeur RFC1191 Path MTU Discovery est affichée),!X (communication interdite administrativement),! V (violation de priorité d’hôte),! C (limite de préséance en vigueur), ou! (Code inaccessible ICMP). Ces codes sont définis par RFC1812, qui remplace RFC1716. Si presque toutes les sondes génèrent un hôte inaccessible, traceroute abandonnera et sortira.

Ce programme est destiné à être utilisé dans les tests, les mesures et la gestion de réseaux. Il doit être utilisé principalement pour l’isolation manuelle des défauts. En raison de la charge que cela pourrait imposer au réseau, il est déconseillé d’utiliser traceroute lors d’opérations normales ou à partir de scripts automatisés.