Skip to main content
Traceroute peut être un outil inestimable pour tenter de diagnostiquer les problèmes de connexion aux hôtes d'autres réseaux. Toutefois, pour l'utiliser efficacement, il faut comprendre son fonctionnement et la signification de ses résultats.

 

Traceroute fonctionne en manipulant la valeur du Time-To-Live (TTL) dans l'en-tête IP (figure 1). Comme je devais faire mes exemples en utilisant le réseau interne Stratus , j'ai supprimé la représentation hexadécimale de l'adresse IP dans les traces de paquets et j'ai traduit tous les octets en notation décimale pointillée en un code de lettre unique de A à W. Le nombre de lettres représente le nombre de chiffres de l'octet. C'est-à-dire que AAA représente un nombre à 3 chiffres tandis que J représente un nombre à 1 chiffre.

 

Xmit IP Ver/HL 45, ToS 0, Len 5c, ID 5447, Flg/Frg 0, TTL 3c, Prtl 1
Cksum e90c, Src XXXXXXXX, Dst XXXXXXXX
ICMP from AAA.BBB.CC.DDD to EEE.FFF.GGG.HHH echo
Figure 1 - trame de packet_monitor avec TTL à haute luminosité
Chaque routeur qui traite le paquet réduira la valeur TTL de 1 et, si la valeur TTL est supérieure à 0, transmettra le paquet au routeur suivant ou à la destination finale. Si la valeur TTL est égale à 0, le routeur rejettera le paquet et *peut* renvoyer à l'expéditeur un message de dépassement du temps ICMP. La clé est *mai*, certains routeurs ne renverront pas de message de dépassement de temps ou ne le feront que s'ils ne sont pas occupés. En outre, certains pare-feu bloquent le message ICMP, de sorte que même si le routeur envoie le message de dépassement de temps, l'hôte qui exécute traceroute peut ne jamais le voir.
Traceroute commence par envoyer un message à la destination cible avec une valeur TTL de 1. Il chronomètre le temps qui s'écoule entre le moment où il envoie le message et celui où il reçoit une réponse.

 

17:07:07.797 Xmit IP Ver/HL 45, ToS 0, Len 28, ID 1, Flg/Frg 0, TTL 1, Prtl 11
Cksum 78CC, Src XXXXXXXX, Dst XXXXXXXX
UDP from AAA.BBB.CC.DDD.34611 to EEE.FFF.GGG.HHH.33435 Cksum 0000, 20 data bytes.
17:07:07.799 Rcvd IP Ver/HL 45, ToS c0, Len 38, ID 4a39, Flg/Frg 0, TTL 80, Prtl 1
Cksum 0d1a, Src aXXXXXXXX, Dst XXXXXXXX
ICMP from AAA.BBB.II.J to AAA.BBB.CC.DDD time excdd

 

Figure 2 - Trame et réponse du traceroute packet_monitor
Par défaut, la commande traceroute envoie trois messages avec un TTL de 1 et signale les trois fois ainsi que le nom et/ou l'adresse IP du routeur qui a envoyé la réponse. J'utilise toujours l'argument -numérique pour ne pas avoir à attendre la résolution du nom (figure 3). Traceroute incrémente ensuite le TTL de 1 et le fait à nouveau. Il continuera d'incrémenter le TTL jusqu'à ce qu'il obtienne une réponse de la destination cible ou qu'une limite, 30 (par défaut), soit atteinte. Vous pouvez trouver de la documentation sur tous les arguments de traceroute dans le manuel OpenVOS STREAMS TCP/IP Administrator's Guide (R419 ).

 

traceroute -numeric EEE.FFF.GGG.HHH
traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.II.LLL 2 ms 1 ms 1 ms
2 AAA.BBB.II.J 1 ms 1 ms 1 ms
3 AAA.BBB.MM.NN 12 ms 5 ms 6 ms
4 BBB.OOO.PPP.QQQ 76 ms 76 ms 76 ms
5 BBB.RRR.SSS.TTT 80 ms 80 ms 80 ms
6 BBB.RRR.SSS.UUU 87 ms 82 ms 79 ms
7 EEE.FFF.V.J 89 ms 89 ms 86 ms
8 EEE.FFF.GGG.HHH 82 ms 87 ms 80 ms
ready 15:19:12

 

Figure 3 - Sortie du traceroute
On pourrait s'attendre à ce que les temps augmentent à mesure que le TTL augmente et c'est généralement le cas, mais pas toujours, comparez les troisièmes temps déclarés du saut 6 (79 ms) et du saut 5 (80 ms) dans la figure 3. Il y a plusieurs raisons à cela. Premièrement, le réseau n'est pas déterministe, parfois il prend simplement plus de temps. Deuxièmement, le routeur du saut N-1 peut être plus occupé que celui du saut N et prendre plus de temps pour envoyer le message ICMP. Enfin, la voie de retour du routeur N peut être plus rapide que celle du routeur N-1. Par exemple, il n'est pas nécessaire que le quatrième routeur renvoie sa réponse à la source via les routeurs 3, 2 et 1. Il pourrait envoyer sa réponse directement au routeur 1, ce qui pourrait être beaucoup plus rapide. Cela signifie que si traceroute est très efficace pour signaler le chemin qu'un paquet prend de l'hôte émetteur à l'hôte cible, vous ne pouvez pas vous fier au fait qu'un paquet envoyé de l'hôte cible à l'hôte émetteur ne prenne le même chemin qu'en sens inverse. C'est ce qu'on appelle le routage asymétrique.

 

Traceroute peut ajouter un drapeau à une heure qui indique qu'il a reçu autre chose que le message de dépassement de l'heure prévue. Les drapeaux sont :
!H - hôte injoignable
!N - réseau injoignable
!P - protocole injoignable
Par exemple, la figure 4 montre que le premier routeur ne sait pas comment atteindre le réseau cible et renvoie donc un message de réseau inaccessible et traceroute se termine à ce point.

 

traceroute EEE.FFF.GGG.HHH -numeric
traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.CC.KKK 2 ms !N 0 ms !N 1 ms !N
ready 15:40:03

 

Figure 4 : messages inaccessibles sur le réseau
Un astérisque (*) à la place d'une heure indique que traceroute n'a pas reçu de réponse. Comme je l'ai indiqué ci-dessus, il se peut que le routeur n'envoie pas de message ICMP de dépassement de temps, qu'un pare-feu bloque le message de dépassement de temps sur son chemin de retour ou qu'un pare-feu bloque le message sortant. Il se peut également que le réseau ait simplement supprimé le message sortant ou le message de retour.

 

Un seul ou même deux timeouts lors d'un saut (figure 5) indique probablement soit que le routeur n'a pas envoyé le message parce qu'il était occupé, soit que le réseau lâchait des paquets (ou les deux). Remarquez le 8e saut dans la figure 5, l'astérisque avant l'adresse IP signifie que le premier message de l'ensemble a été temporisé.

 

traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.II.LLL 1 ms 0 ms *
2 AAA.BBB.II.J 1 ms 1 ms 1 ms
3 AAA.BBB.MM.NN 1 ms * 1 ms
4 BBB.OOO.PPP.QQQ 7 ms 8 ms 8 ms
5 BBB.RRR.SSS.TTT 76 ms 76 ms 75 ms
6 BBB.RRR.SSS.UUU 79 ms 77 ms 77 ms
7 EEE.FFF.V.J 79 ms * *
8 * EEE.FFF.W.253 79 ms 79 ms
9 EEE.FFF.GGG.HHH 80 ms 80 ms 80 ms
ready 14:43:16

 

Figure 5 - Routeur occupé ou paquets déposés
Si les trois messages ont un délai d'attente mais que les sauts suivants indiquent des temps (figure 6), il est probable que le routeur pour ce saut n'envoie tout simplement pas les messages dont le temps ICMP est dépassé.

 

traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.II.LLL 1 ms 0 ms 1 ms
2 AAA.BBB.II.J 1 ms 1 ms 1 ms
3 AAA.BBB.MM.NN 1 ms 1 ms 1 ms
4 BBB.OOO.PPP.QQQ 7 ms 8 ms 8 ms
5 BBB.RRR.SSS.TTT 76 ms 76 ms 75 ms
6 BBB.RRR.SSS.UUU 79 ms 77 ms 77 ms
7 * * *
8 * * *
9 EEE.FFF.GGG.HHH 80 ms 80 ms 80 ms
ready 14:47:01

 

Figure 6 - Routeur(s) non réactif(s)
Si tous les sauts dépassent un certain délai (figure 7), il est probable qu'un pare-feu bloque les messages sortants ou les messages de retour.

 

traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.II.LLL 1 ms 0 ms 0 ms
2 AAA.BBB.II.J 1 ms 1 ms 1 ms
3 AAA.BBB.MM.NN 1 ms 1 ms 1 ms
4 BBB.OOO.PPP.QQQ 7 ms 6 ms 8 ms
5 * * *
6 * * *
7 * * *
8 * * *
. . . .
29 * * *
30 * * *
ready 14:51:05

 

Figure 7 - blocage du pare-feu
Il y a une autre raison pour laquelle tout ce qui dépasse un certain point se retrouve à un moment donné. C'est le moment où la cible ne répond pas. Toutes les cibles ne répondent pas et lorsque cela se produit, vous avez quelque chose qui ressemble à la figure 8. La différence entre les figures 7 et 8 est que dans la figure 8, le dernier routeur à envoyer une réponse est celui qui est local à la cible. Comment pouvez-vous dire que c'est le cas ? Parfois, l'adressage le rend évident, par exemple la cible est 192.168.1.12 et 192.168.1.1 est le dernier routeur à répondre. Ce n'est pas aussi évident sur la figure 9, EEE.FFF.W.XXX peut être le dernier routeur avant EEE.FFF.GGG.HHH, ils ont les 16 premiers bits en commun. Mais sans connaître le schéma de sous-réseautage utilisé par le réseau de la cible, il n'y a aucun moyen d'en être sûr sans demander.

 

traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.II.LLL 1 ms * 0 ms
2 AAA.BBB.II.J 1 ms 1 ms 1 ms
3 AAA.BBB.MM.NN 1 ms 1 ms 0 ms
4 BBB.OOO.PPP.QQQ 10 ms 7 ms 6 ms
5 BBB.RRR.SSS.TTT 77 ms 76 ms 75 ms
6 BBB.RRR.SSS.UUU 79 ms 80 ms 81 ms
7 EEE.FFF.V.J 82 ms 78 ms 79 ms
8 EEE.FFF.W.XXX 78 ms 95 ms 77 ms
9 * * *
. . . .
29 * * *
30 * * *
ready 15:00:20

 

Figure 8 - cible ne répondant pas
Il est également possible d'obtenir des réponses de deux ou plusieurs routeurs pour un même saut (figure 9). Cela peut se produire si les routeurs sont en équilibrage de charge ou si le réseau est instable et que les routes changent ou, comme dans le cas de la figure 9, le routeur AAA.BBB.CC.KKK n'était pas le routeur optimal et, après avoir transmis le paquet à AAA.BBB.II.J, il a renvoyé un message de redirection à la source pour changer sa table de routage.

 

traceroute EEE.FFF.GGG.HHH -numeric
traceroute to EEE.FFF.GGG.HHH (EEE.FFF.GGG.HHH), 30 hops max, 40 byte packets
1 AAA.BBB.CC.KKK 7 ms 1 ms 0 ms
2 AAA.BBB.II.J 1 ms AAA.BBB.MM.NN 1 ms 1 ms
3 BBB.OOO.PPP.QQQ 9 ms 8 ms 8 ms
4 BBB.RRR.SSS.TTT 81 ms 81 ms 77 ms
5 BBB.RRR.SSS.UUU 80 ms 79 ms 78 ms
6 EEE.FFF.V.J 81 ms 77 ms 77 ms
7 EEE.FFF.W.253 78 ms 80 ms 80 ms
8 EEE.FFF.GGG.HHH 84 ms 83 ms 80 ms
ready 15:47:51

 

Figure 9 - deux réponses pour le même saut
Il existe deux types de commandes traceroute qui se distinguent par le type de message qu'elles envoient. Certaines traceroutes, comme celle que l'on trouve sur les systèmes Microsoft Windows, envoient des messages ICMP de demande d'écho (ping) ; d'autres, comme celle qui fonctionne sous STCP, envoient des messages UDP. Il est important de savoir quel type de traceroute vous utilisez si vous devez configurer des pare-feu pour laisser passer des paquets ou écrire des filtres d'analyse de protocole. La réponse de la cible sera également différente. Si la cible reçoit une requête ping, elle renvoie une réponse ping ; si elle reçoit un message UDP, la réponse dépend du numéro de port. Si le port est utilisé, l'application d'écoute rejettera plus que probablement le paquet parce qu'il ne répond pas aux exigences de l'application en matière de structure de message. Si le port n'est pas utilisé, l'hôte *peut* renvoyer un message ICMP de destination sur un port inaccessible. C'est pourquoi traceroute sélectionne des ports qui ne sont généralement pas utilisés.

 

Le numéro de port vu par l'hôte cible dépendra du nombre de houblon nécessaire pour l'atteindre. Traceroute démarre le port de destination à 33435 (par défaut) et incrémente le numéro de port pour chaque message (figure 10). La cible voit donc 3 ports différents, il y a de fortes chances que les trois ne soient pas utilisés. Le port source est basé sur l'ID du processus d'envoi. Un processus donné utilisera toujours le même port source.

 

dir len proto source destination src port dst port
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33435
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33436
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33437
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33438
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33439
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33440
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33441
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33442
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33443
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33444
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33445
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33446
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33447
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33448
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33449
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33450
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33451
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33452
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33453
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33454
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33455
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33456
R 28 ICMP EEE.FFF.GGG.HHH AAA.BBB.CC.DDD unreach
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33457
R 28 ICMP EEE.FFF.GGG.HHH AAA.BBB.CC.DDD unreach
T 40 UDP AAA.BBB.CC.DDD EEE.FFF.GGG.HHH 34737 33458
R 28 ICMP EEE.FFF.GGG.HHH AAA.BBB.CC.DDD unreach

 

Figure 10 - (edited) packet traces showing port number changes
Enfin, à moins qu'il y ait un problème au premier saut, vous ne pourrez probablement pas faire grand-chose pour le régler. Une fois que le STCP (ou la pile réseau d'un hôte) envoie un paquet au routeur local, il n'est plus entre ses mains (et les vôtres). Cependant, si vous connaissez l'adresse IP du dernier saut qui répond ou du saut où les délais commencent soudainement à se produire, vous avez une idée de l'endroit où se situe le problème et vous pouvez contacter le bon groupe d'administrateurs réseau pour le résoudre.

2024 Stratus Technologies.