Commande tracepath : vérifier les sauts et la MTU du chemin au lieu de traceroute

Environnement de testFamille RHELAlmaLinux 9.8iputils 20210202Compte rootDebian 12 · traceroute 2.1.2 compte standard
Commandes réseautracepathEmplacement/usr/bin/tracepath

Sur un serveur Linux, la commande tracepath permet de vérifier sans droits root le chemin (sauts) que suivent les paquets jusqu'à une destination ainsi que la MTU du chemin. Sur un serveur AlmaLinux 9 sans traceroute installé, nous avons limité le nombre de sauts à 10 et vérifié le chemin jusqu'à example.com : jusqu'au quatrième saut, on lisait les temps de réponse et une MTU de chemin de 1500, puis les six sauts suivants n'ont pas répondu.

La sortie ci-dessous provient d'un serveur AlmaLinux 9.8 (compte root), et la version de traceroute ainsi que l'état du paquet ont été vérifiés sur un serveur Debian 12 (compte ordinaire). Les adresses IPv6 du premier saut et des routeurs intermédiaires ont été remplacées par des adresses d'exemple réservées à la documentation, et les temps de réponse et valeurs pmtu ont été laissés tels quels.

1️⃣ Utiliser la commande tracepath

  • ↪️ Vérifier les sauts et la MTU du chemin jusqu'à la destination

tracepath reçoit un nom ou une adresse IP de destination, envoie des paquets UDP et affiche les sauts qui répondent, une ligne par saut dans l'ordre du TTL. Le nombre maximal de sauts est de 30 par défaut et se modifie avec -m.

Pour example.com, nous avons ajouté -m 10 pour ne vérifier que jusqu'au dixième saut.

tracepath -n -m 10 example.com
 1?: [LOCALHOST]                        0.006ms pmtu 9001
 1:  fe80::1%eth0                                          0.077ms pmtu 1500
 1:  2001:db8:a::5b                                        2.627ms asymm  8 
 2:  2001:db8:a::52                                        1.473ms asymm 12 
 3:  2001:db8:b::1e                                       19.653ms asymm  9 
 4:  2001:db8:c::                                          3.642ms asymm 11 
 5:  no reply
 6:  no reply
 7:  no reply
 8:  no reply
 9:  no reply
10:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500 

Ce serveur a envoyé les paquets à l'adresse IPv6 de example.com, et des temps de réponse sont apparus jusqu'au quatrième saut. À partir du cinquième saut, no reply s'est enchaîné : la ligne reached indiquant que la destination était atteinte en dix sauts n'est pas apparue, et l'exécution a pris environ 18 secondes.

Lancée vers la même destination sans -m, la commande ne s'est pas terminée en 30 secondes. Pour un chemin avec beaucoup de sauts muets, on réduit le nombre de sauts à vérifier avec -m.

La version de tracepath installée se vérifie avec -V ; sur ce serveur, tracepath était iputils 20210202.

tracepath -V
tracepath from iputils 20210202

2️⃣ Lire la sortie de tracepath

  • ↪️ Numéro de saut, pmtu, asymm, reached

Chaque ligne de sortie donne dans l'ordre le numéro de saut, l'adresse qui a répondu et le temps aller-retour. pmtu s'ajoute là où la MTU du chemin change, et asymm quand l'aller et le retour n'ont pas le même nombre de sauts. Voici ce qu'on vérifie sur chaque ligne.

SortieSignification
1?:Champ du numéro de saut — un ? s'ajoute au numéro estimé faute d'avoir obtenu le TTL dans la réponse
[LOCALHOST]Ligne du serveur lui-même, avant que le paquet ne parte sur le réseau
0.077msTemps aller-retour jusqu'à ce saut
pmtu 1500MTU du chemin (octets) modifiée à cet endroit — n'apparaît qu'en cas de changement
asymm 8Écart de sauts entre l'aller et le retour — le manuel officiel indique que la valeur n'est pas fiable
no replySaut qui n'a pas répondu au paquet envoyé avec ce TTL
reachedLigne où la destination est atteinte
Too many hopsS'arrête après avoir vérifié le nombre de sauts fixé par -m
Resume: pmtu … hops … back …MTU de tout le chemin, sauts jusqu'à la destination et estimation des sauts du retour

Dans la sortie de example.com, la pmtu de la première ligne [LOCALHOST] était de 9001 et elle est passée à 1500 au premier saut. La ligne TTL 1 qui apparaît deux fois avec seulement l'adresse qui change correspond aussi à l'exemple du manuel officiel. Le manuel explique que si le premier paquet est refusé au premier saut à cause de la MTU du chemin, la même ligne TTL apparaît une seconde fois.

Une fois la destination atteinte, reached s'ajoute en fin de ligne et la dernière ligne Resume donne le nombre de sauts jusqu'à la destination. En envoyant vers 127.0.0.1, reached est apparu dès le premier saut, et la ligne Resume était [pmtu 65535 hops 1 back 1].

tracepath -n 127.0.0.1
 1:  127.0.0.1                                             0.047ms reached
     Resume: pmtu 65535 hops 1 back 1 

Un chemin qui se termine par Too many hops sans reached n'a pas reçu de réponse de la destination dans les sauts fixés par -m. Le chemin vers example.com n'a pas non plus eu de reached en dix sauts, si bien que seule la pmtu est restée sur la ligne Resume, sans nombre de sauts.

3️⃣ Options de tracepath

  • ↪️ -n, -b, -m et longueur de paquet -l

tracepath n'a que huit options : -4, -6, -n, -b, -l, -m, -p et -V, et lancé sans destination, il affiche cette liste comme aide. Sans option, il résout en noms les adresses qui répondent ; en envoyant vers localhost, localhost est apparu dans le champ du saut.

tracepath localhost
 1?: [LOCALHOST]                        0.003ms pmtu 65536
 1:  localhost                                             0.048ms reached
 1:  localhost                                             0.030ms reached
     Resume: pmtu 65536 hops 1 back 1 

[tracepath -n] n'affiche que les adresses IP, sans résoudre les noms. En ajoutant -n pour le même localhost, le champ du saut est passé à l'adresse IPv6 ::1, et le chemin vers example.com lancé avec -n n'a aussi affiché que des adresses dans ce champ.

tracepath -n localhost
 1?: [LOCALHOST]                        0.005ms pmtu 65536
 1:  ::1                                                   0.039ms reached
 1:  ::1                                                   0.010ms reached
     Resume: pmtu 65536 hops 1 back 1 

-b affiche à la fois le nom et l'adresse. En ajoutant -b pour 127.0.0.1, l'adresse est apparue entre parenthèses après le nom : [localhost (127.0.0.1)].

tracepath -b 127.0.0.1
 1:  localhost (127.0.0.1)                                 0.050ms reached
     Resume: pmtu 65535 hops 1 back 1 

-m fixe le nombre maximal de sauts à vérifier et acceptait les valeurs de 0 à 255. Avec -m 0, seules les lignes Too many hops et Resume sont apparues, sans ligne de saut, et 256 a été refusé avec [out of range].

tracepath -m 0 127.0.0.1
     Too many hops: pmtu 65535
     Resume: pmtu 65535 

-l est la longueur du premier paquet envoyé ; par défaut 65535 octets en IPv4 et 128000 octets en IPv6. En ajoutant -l 1500 pour 127.0.0.1, la pmtu de la ligne Resume est passée de 65535 à 1500.

tracepath -l 1500 -n 127.0.0.1
 1:  127.0.0.1                                             0.028ms reached
     Resume: pmtu 1500 hops 1 back 1 

-p fixe le premier port UDP de destination. Avec -p 33434 pour 127.0.0.1, le résultat était le même que sans l'option.

OptionCopierDescription
-nAffiche seulement les adresses IP, sans résoudre les noms
-bAffiche le nom et l'adresse ensemble
-msautsFixe le nombre maximal de sauts à vérifier, 30 par défaut
-llongueurFixe la longueur du premier paquet, par défaut IPv4 65535, IPv6 128000
-VAffiche la version et quitte
OptionCopierDescription
-4N'envoie qu'à des adresses IPv4
-6N'envoie qu'à des adresses IPv6
-pPortFixe le premier port UDP de destination

4️⃣ Différences entre tracepath et traceroute

  • ↪️ Installation, droits, paquets envoyés

Sur les serveurs où traceroute ne peut pas être installé, on vérifie le chemin avec tracepath au lieu de traceroute. Le serveur AlmaLinux 9.8 vérifié n'avait pas le paquet traceroute, tandis que tracepath fait partie du paquet iputils et s'est lancé sans installation supplémentaire.

rpm -q traceroute
package traceroute is not installed

Le serveur Debian 12 était dans le cas inverse : traceroute 2.1.2 était installé, mais pas le paquet iputils-tracepath qui contient tracepath.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

Comme ces deux serveurs le montrent, les commandes présentes varient selon la distribution : vérifiez d'abord laquelle existe sur le serveur auquel vous êtes connecté. tracepath n'a pas besoin des droits root et fonctionne avec tout compte capable d'envoyer des paquets UDP. L'exécutable tracepath du serveur AlmaLinux 9.8 avait lui aussi les droits rwxr-xr-x, sans capacité (capability) ajoutée.

Catégorietracepathtraceroute
Serveur AlmaLinux 9.8Inclus dans le paquet iputils, se lance tout de suiteNon installé
Serveur Debian 12Paquet iputils-tracepath non installétraceroute 2.1.2 installé
Paquets envoyésUDPUDP par défaut, -I pour ICMP, -T pour TCP
Sortie par sautUne ligneTrois envois par défaut, trois temps (modifiable avec -q)
Nombre d'optionsHuit : -4 -6 -n -b -l -m -p -VPlus de 20 rien que sur le premier écran de --help

Si vous devez suivre le chemin en ICMP ou en TCP, ou envoyer plusieurs fois par saut pour comparer les temps, il faut installer et utiliser la commande traceroute. Sur un serveur où l'installation est difficile, ou quand la MTU du chemin compte aussi, tracepath est le bon choix.

🔲 Simulateur de la commande tracepath

Dans le simulateur ci-dessous, vous pouvez revoir le chemin vers example.com en changeant seulement le nombre de sauts, ou saisir vous-même -n, -b, -m et -l pour localhost et 127.0.0.1 afin de comparer.

Simulateur de la commande tracepathiputils 20210202
[root@server work]#
Fonctionne uniquement dans votre navigateur et n'envoie aucun vrai paquet. Utilisez ↑↓ pour rappeler les commandes précédentes.

🔢 FAQ & contenus recommandés

Non, le code de sortie ne l'indique pas. Même quand la commande lancée vers example.com avec -m 10 s'est terminée par Too many hops sans reached, le code de sortie était 0. Un échec de résolution de nom et un argument invalide ont donné 1, et un lancement sans destination 255. Le code de sortie ne distingue que les erreurs d'exécution : pour savoir si la destination a été atteinte, regardez la ligne reached de la sortie.

localhost a été envoyé vers l'adresse IPv6 ::1, d'où la MTU de l'interface de bouclage, 65536, sur la première ligne [LOCALHOST], tandis qu'avec 127.0.0.1, en IPv4, la longueur de paquet par défaut d'IPv4, 65535, est apparue telle quelle. La MTU de l'interface lo vérifiée avec ip link était aussi de 65536.

Avec -4, l'envoi se fait uniquement vers des adresses IPv4. Avec -4 pour localhost, reached est apparu en un saut via IPv4 sans ligne [LOCALHOST] ; à l'inverse, -6 pour 127.0.0.1 s'est terminé par [Address family for hostname not supported].

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 2   +   10   =