table of contents
| TRACEROUTE(1) | Traceroute pour Linux | TRACEROUTE(1) |
NOM¶
traceroute – Afficher la trace du routage de paquets vers l'hôte réseau
SYNOPSIS¶
traceroute [-46dFITUnreAV] [-f
premier_ttl] [-g passerelle,...]
[-i périphérique] [-m max_ttl]
[-p port] [-s adresse_source]
[-q nb_requêtes] [-N
req_simultanées] [-t tos]
[-l étiquette_flux] [-w temps_attente]
[-z attente_envoi] [-UL] [-D]
[-P protocole] [--sport=port] [-M
méthode] [-O options_module]
[--mtu] [--back]
host [longueur_paquet]
traceroute6 [options]
tcptraceroute [options]
lft [options]
DESCRIPTION¶
traceroute trace la route des paquets sur un réseau IP pour atteindre un hôte donné. Il utilise le champ TTL (time to live) du protocole IP et tente d’obtenir la réponse TIME_EXCEEDED du protocole ICMP pour chaque passerelle le long du chemin vers l’hôte.
traceroute6 équivaut à traceroute -6
tcptraceroute équivaut à traceroute -T
lft (Layer Four Traceroute) réalise un traçage de route TCP, comme traceroute -T, mais essaie de fournir une compatibilité avec l’implémentation originale de ce type, aussi appelée « lft ».
Le seul paramètre requis est le nom ou l’adresse IP de l’hôte de destination. La longueur_paquet facultative est la taille totale du paquet de test (par défaut 60 octets pour IPv4 et 80 pour IPv6). La taille indiquée peut être ignorée dans certaines situations ou augmentée jusqu’à une valeur minimale.
Ce programme tente de tracer la route qu’un paquet suivrait vers un certain hôte sur Internet en lançant des paquets de test avec un petit TTL (Time To Live), puis en écoutant une réponse ICMP « time exceeded » d’une passerelle. Les tests commencent avec un TTL de 1, augmenté de 1 jusqu’à obtenir un message ICMP « port injoignable » (ou une réinitialisation de TCP), ce qui signifie que l’hôte est atteint, ou qu’un maximum est atteint (par défaut 30 sauts). Par défaut, trois tests sont envoyés pour chaque réglage de TTL et une ligne est affichée indiquant le TTL, l’adresse de la passerelle et le temps d’aller-retour de chaque test. L’adresse peut être suivie d’autres informations demandées. Si les réponses de test proviennent de passerelles différentes, l’adresse de chaque système ayant répondu est affichée. En l’absence de réponse au-delà d’un certain délai, un astérisque (*) est inscrit pour ce test.
Après le temps d’aller-retour, des annotations supplémentaires peuvent être affichées : !H, !N ou !P (hôte, réseau ou protocole inaccessibles), !S (échec de route vers la source), !F (fragmentation nécessaire), !X (communication interdite administrativement), !V (violation de la priorité de l'hôte), !C (seuil de priorité en vigueur) ou !<numéro> (<numéro> de code ICMP inaccessible). Si la plupart des tests aboutissent à une quelconque inaccessibilité, traceroute abandonne et se termine.
Nous ne voulons pas que l’hôte de destination traite les paquets de test UDP, aussi le port de destination est défini à une valeur improbable (cela peut être changé en utilisant l’option -p). Ce problème ne se pose pas pour le traçage de route ICMP ou TCP (pour TCP, nous utilisons la technique « half-open » qui empêche nos requêtes d’être détectées par les applications de l’hôte de destination).
Dans un environnement de réseau moderne, les méthodes traditionnelles de traçage de route peuvent ne pas être toujours applicables à cause de l’utilisation très répandue de pare-feux. De tels pare-feux filtrent les ports UDP « improbables » ou même les ECHO ICMP. Pour résoudre ce problème, d’autres méthodes de traçage sont mises en œuvre (incluant TCP) ; consultez la LISTE DES MÉTHODES DISPONIBLES ci-après. De telles méthodes utilisent un protocole et des ports source/destination particuliers pour contourner les pare-feux (pour être vu par les pare-feux comme un début de type autorisé de session réseau).
OPTIONS¶
- --help
- Afficher l'aide puis quitter.
- -4, -6
- Forcer explicitement le traçage de route IPv4 ou IPv6. Par défaut, le programme essaie de résoudre le nom indiqué et de choisir le protocole approprié automatiquement. Si la résolution du nom d’hôte renvoie des adresses IPv4 et IPv6, traceroute utilise IPv4.
- -I, --icmp
- Utiliser ECHO d’ICMP pour les tests.
- -T, --tcp
- Utiliser SYN de TCP pour les tests.
- -d, --debug
- Activer le débogage au niveau socket (quand le noyau Linux le prend en charge).
- -F, --dont-fragment
- Ne pas fragmenter les paquets de test (pour IPv4, le bit DF est aussi
positionné, ce qui indique aux routeurs intermédiaires de ne
pas aussi fragmenter à distance).
En variant la taille du paquet de test à l’aide du paramètre longueur_paquet de ligne de commande, il est possible d’obtenir manuellement des informations sur le MTU de sauts particuliers de réseau. L’option --mtu (voir ci-après) essaie de le faire automatiquement.
Notez que les fonctionnalités non fragmentées (telles que les options -F ou --mtu) fonctionnent correctement depuis seulement la version 2.6.22 du noyau Linux. Avant cette version, IPv6 était toujours fragmenté, IPv4 ne pouvait utiliser que le MTU final une fois déterminé (à partir du cache de route) qui pouvait être moindre que le MTU réel du périphérique.
- -f premier_ttl, --first=premier_ttl
- Spécifier le TTL de début. Par défaut, 1.
- -g passerelle, --gateway=passerelle
- Indiquer à traceroute d’ajouter une option de routage selon la source (source routing) d’IP pour le paquet envoyé pour indiquer au réseau de router le paquet à travers la passerelle spécifiée (la plupart des routeurs ont ce routage désactivé pour des raisons de sécurité). En général, plusieurs passerelles sont autorisées (séparées par des virgules). Pour IPv6, la forme numéro,adresse,adresse... est autorisée, où numéro est le type d’entête de route (par défaut, le type 2). Noter que le type 0 d’entête de route est obsolète (RFC 5095).
- -i interface, --interface=interface
- Spécifier l’interface à travers laquelle traceroute doit envoyer les paquets. Par défaut, l’interface est choisie selon la table de routage.
- -m max_ttl, --max-hops=max_ttl
- Spécifier le nombre maximal de sauts (valeur maximale de TTL) que traceroute doit tester. Par défaut, c’est 30.
- -N req_simultanées, --sim-queries=req_simultanées
- Spécifier le nombre de paquets de test à envoyer
simultanément. Envoyer plusieurs tests en même temps peut
accélérer considérablement traceroute. La
valeur par défaut est 16.
Notez que certains routeurs ou hôtes peuvent limiter le débit ICMP. Dans de telles situations, indiquer un nombre trop élevé peut conduire à la perte de certaines réponses. - -n
- Ne pas essayer de mapper les adresses IP aux noms d’hôte lors de leur affichage.
- -p port, --port=port
- Pour le traçage de route UDP, spécifier le départ du
port de destination que traceroute utilisera (le numéro de
port de destination sera incrémenté par chaque test).
Pour le traçage de route ICMP, spécifier la valeur de la séquence ICMP initiale (qui est aussi incrémentée à chaque test).
Pour TCP et autres, spécifier seulement le port de destination (constant) auquel se connecter. Lors de l’utilisation de l’adaptateur tcptraceroute(1), l’option -p spécifie le port source. - -t tos, --tos=tos
- Pour IPv4, définir le TOS (Type of Service) et la valeur de
priorité (precedence). Les valeurs utiles sont 16 (délai
court) et 8 (haut débit). Notez que pour utiliser certaines valeurs
de priorité de TOS, il est nécessaire d’être
le superutilisateur.
Pour IPv6, définir la valeur du contrôle de trafic (Traffic Control). - -l étiquette_flux, --flowlabel=étiquette_flux
- Utiliser étiquette_flux pour les paquets IPv6.
- -w max[,ici,environ], --wait=max[,ici,environ]
- Déterminer le temps d’attente d’une réponse
à un test.
Il y a (en général) trois valeurs flottantes séparées par des virgules (ou par une barre oblique). max spécifie la durée maximale d’attente (en secondes, par défaut 5.0) dans tous les cas.
Les mises en œuvre traditionnelles de traceroute attendent toutes max secondes pour n’importe quel test. Mais en cas de réponses déjà existantes pour le même saut, ou même pour le prochain saut, le temps d’aller-retour de telles réponses peut être utilisé comme indication pour déterminer la durée raisonnable réelle d’attente.
L’argument facultatif ici (par défaut 3.0) spécifie un facteur de multiplication du temps d’aller-retour d’une réponse déjà reçue pour le même saut. La valeur résultante est utilisée comme délai pour le test, au lieu de max (mais pas plus). L’argument facultatif environ (par défaut 10.0) spécifie un facteur similaire pour une réponse du prochain saut (la première durée trouvée est utilisée dans les deux cas).
En premier, on regarde pour le même saut (du test qui sera le prochain affiché). Si rien n’est trouvé, on regarde pour un prochain saut. Si rien n’est trouvé, max est utilisé. Si ici ou environ n’ont pas de valeurs, le calcul correspondant est omis.
ici et environ sont toujours définies à zéro si seul max est spécifié (pour des raisons de rétrocompatibilité). - -q nb_requêtes, --queries=nb_requêtes
- Définir le nombre de paquets de test par saut. La valeur par défaut est 3.
- -r
- Contourner les tables de routage normales et envoyer directement à un hôte sur un réseau connecté. Si l’hôte n’est pas un réseau directement connecté, une erreur est renvoyée. Cette option peut être utilisée pour envoyer un « ping » à un hôte local à travers une interface pour laquelle aucune route n’est définie.
- -s addresse_source, --source=adresse_source
- Choisir un adresse de source de remplacement. Notez qu’il faut choisir l’adresse d’une des interfaces. Par défaut, l’adresse de l’interface de sortie est choisie.
- -z attente_envoi, --sendwait=attente_envoi
- Intervalle minimal de temps entre les tests (par défaut 0). Si la valeur est supérieure à 10, cette option indique un nombre de millisecondes, autrement c’est un nombre de secondes (les valeurs en virgule flottante sont aussi autorisées). Cette option est utile quand des routeurs ont une limite de débit pour les messages ICMP.
- -e, --extensions
- Afficher les extensions ICMP (RFC 4884). La forme générale est CLASSE/TYPE: suivi d’un vidage hexadécimal. Le MPLS (RFC 4950) est affiché analysé sous la forme : MPLS:L=label,E=exp_utilisé,S=bas_pile,T=TTL (plus d’objets sont séparés par / ). Les informations d’interface (RFC 5837) sont affichées aussi analysées sous la forme suivante : {INC|SUB|OUT|NXT}:index,adresse_IP,"nom",mtu=MTU (les quatre champs peuvent tous être manquants).
- -A, --as-path-lookups
- Rechercher des chemins AS dans les registres de routage et afficher les résultats directement après l’adresse correspondante.
- -V, --version
- Afficher la version puis quitter.
Trois options supplémentaires sont destinées aux utilisateurs experts (tels que des méthodes de traçage de remplacement, etc) :
- --sport=port
- Choisir le port source à utiliser. Cela implique -N 1 -w 5. Normalement, les ports source (si applicable) sont choisis par le système.
- --fwmark=marque
- Définir la marque de pare-feu pour les paquets sortants (depuis le noyau 2.6.25 de Linux).
- -M méthode, --module=nom
- Utiliser la méthode spécifiée pour les
opérations de traceroute. La méthode udp
traditionnelle à pour nom default ; icmp (-I)
et tcp (-T) ont pour noms icmp et tcp respectivement.
Les options spécifiques à une méthode peuvent être passées avec l’option -O. La plupart des méthodes ont des raccourcis simples, (-I signifie -M icmp, etc). - -O option, --options=options
- Spécifier un option spécifique à la méthode. Plusieurs options sont séparées par des virgules (utiliser plusieurs -O sur la ligne de commande). Chaque méthode peut avoir ses propres options spécifiques ou non. Pour afficher les options disponibles utiliser -O help.
- -U, --udp
- Utiliser UDP pour un port de destination particulier pour le traçage de route (au lieu d’augmenter le port pour chaque test). Le port par défaut est 53 (DNS).
- -UL
- Utiliser UDP-Lite pour le traçage de route (par défaut le port 53).
- -D, --dccp
- Utiliser les requêtes DCCP pour les tests.
- -P protocole, --protocol=protocole
- Utiliser un paquet brut du protocole spécifié pour le traçage de route. Le protocole par défaut est 253 (RFC 3692).
- --mtu
- Connaitre le MTU du chemin en cours de traçage. Cela implique
-F -N 1. Le nouveau mtu est affiché
sous la forme F=NOMBRE après le premier test
d’un saut qui requiert de connaitre un tel mtu (en fait, le
message ICMP correspondant « frag needed » est
normalement envoyé par le saut précédent).
Notez que certains routeurs peuvent mettre en cache une fois l’information lue d’une fragmentation. Par conséquent, le MTU final peut être reçu d’un saut plus proche. Essayez de spécifier un tos inhabituel avec l’option -t, cela peut aider pour un essai (ensuite il peut y être mis en cache).
Voir l’option -F pour plus de détails. - --back
- Afficher le nombre de sauts en arrière quand il semble différent de celui en avant. Ce nombre est obtenu en supposant que les sauts distants envoient des paquets de réponse avec un TTL initial défini à 64, 128 ou 255 (ce qui semble une pratique courante). Il est affiché sous forme de valeur négative de la forme « -NOMBRE ».
LISTE DES MÉTHODES DISPONIBLES¶
En général, une méthode particulière de traçage de route peut devoir être choisie par -M nom, mais la plupart des méthodes ont leurs déclencheurs simples en ligne de commande (ils peuvent apparaître après le nom de la méthode s’ils existent).
default¶
L’ancienne méthode traditionnelle de traçage, utilisée par défaut.
Les paquets de test sont des datagrammes UDP avec des ports de destination appelés « improbable ». Le port « improbable » du premier test est 33434, puis pour chaque test suivant, il est incrémenté de un. Puisque ces ports sont supposés ne pas être utilisés, l’hôte de destination répond normalement « icmp unreach port » comme réponse finale (bien que personne ne sache ce qui se passe quand des applications écoutent de tels ports).
Cette méthode est autorisée pour les utilisateurs sans privilèges.
icmp -I¶
La méthode la plus courante actuellement, qui utilise des
paquets ECHO ICMP pour les tests.
Si vous pouvez utiliser ping(8) sur l’hôte de
destination, le traçage de route ICMP est aussi pertinent.
Cette méthode peut être autorisée pour les
utilisateurs sans privilèges depuis la version 3.0 du noyau
(IPv4, pour IPv6 3.11), qui gère les nouveaux sockets dgram
icmp (ou « ping »). Pour autoriser de
tels sockets, l’administrateur système doit fournir une plage
sysctl(8) net/ipv4/ping_group_range pour correspondre à
n’importe quel groupe de l’utilisateur.
Options :
tcp -T¶
Méthode moderne bien connue, destinée à
contourner les pare-feux.
Utiliser un port de destination constant (par défaut 80, HTTP).
Si des filtres sont présents dans le chemin du réseau, alors très vraisemblablement, tout port UDP « improbable » (comme pour la méthode default), ou même les ECHO ICMP (comme pour icmp), seront filtrés et tout le traçage de route s’arrêtera à un tel pare-feu. Pour contourner un filtre réseau, les seules combinaisons autorisées protocole/port doivent être utilisées. Pour tracer par exemple un serveur de courriels, alors vraisemblablement -T -p 25 peut l’atteindre même quand -I ne le peut pas.
Cette méthode utilise la technique « half-open » bien connue, qui empêche les applications sur l’hôte de destination de voir les tests. Normalement, un SYN TCP est envoyé. Pour les ports non écoutants, des réinitialisations TCP sont reçues et tout est réglé. Pour les ports écoutant activement, un SYN+ACK TCP est reçu, mais une réponse de réinitialisation TCP est envoyée (au lieu du ACK TCP) ; de cette façon la session TCP distante est interrompue sans même que l'application s'en aperçoive.
Voici quelques options pour la méthode tcp :
- syn,ack,fin,rst,psh,urg,ece,cwr
- Définir les drapeaux TCP spécifiés pour le paquet de test, dans n’importe quelle combinaison.
- flags=nombre
- Définir le champ flags (drapeaux) dans l’entête TCP à nombre.
- ecn
- Envoyer le paquet SYN avec les drapeaux ECE et CWR de TCP (pour Explicit Congestion Notification, RFC 3168).
- sack,timestamps,window_scaling
- Utiliser l’option d’entête TCP correspondante dans le paquet de test émis.
- sysctl
- Utiliser le réglage actuel de sysctl(8) (/proc/sys/net/*) pour les options d’entête TCP ci-avant et ECN. Réglage toujours défini par défaut si rien d’autre n’est spécifié.
- fastopen
- Utiliser l’option Fast Open de TCP (si SYN), seulement pour la négociation initiale de cookie.
- mss=[nombre]
- Utiliser la valeur de nombre (ou inchangée) pour l’option MAXSEG d’entête TCP (si SYN) et découvrir sa diminution le long du chemin en cours de traçage. La nouvelle MSS est affichée une seule fois sous la forme M=NOMBRE lors du premier test pendant lequel elle a été détectée. Remarque : certains routeurs peuvent renvoyer un fragment original trop petit dans le message « time exceeded », rendant la vérification impossible. D’autre part, les réponses peuvent venir dans un ordre différent. Tout cela peut conduire à un placement décalé du rapport (utiliser -N 1 peut aider pour l’ordre).
- info
- Afficher les drapeaux TCP et les options gérées des réponses TCP finales quand l’hôte cible est atteint. Cela permet de déterminer si une application écoute le port et d’autres choses utiles. Les options TCP prises en charge peuvent être toutes définies avec -T -O, c’est-à-dire mss, sack, timestamps, window_scaling et fastopen, avec un format de sortie similaire (une valeur pour mss et simplement leur présence pour les autres).
L’options par défaut est syn,sysctl
tcpconn¶
Une implémentation initiale de la méthode TCP, un simple appel utilisant connect(2), qui réalise l’ouverture complète de session TCP. Elle n’est par recommandée pour une utilisation normale parce que l’application de destination est toujours affectée (et peut être désorientée).
udp -U¶
Utiliser un datagramme UDP avec un port de destination constant
(par défaut 53, DNS).
Conçu aussi pour contourner les pare-feux.
Remarquez que, au contraire de la méthode tcp, l’application correspondante sur l’hôte de destination reçoit toujours nos tests (avec des données aléatoires), et la plupart peuvent être facilement désorientées par ceux-ci. Dans la plupart des cas, elle ne répondra pas à nos paquets, aussi nous ne verrons jamais le saut final dans le traçage (heureusement, il semble qu'au moins les serveurs DNS répondent, tout en manifestant leur mécontentement).
Cette méthode est autorisée pour les utilisateurs sans privilèges.
udplite -UL¶
Utiliser les datagrammes UDP-Lite pour les tests avec un port de destination constant (par défaut 53).
Cette méthode est autorisée pour les utilisateurs
sans privilèges.
Options :
- coverage=nombre
- Définir la couverture d’émission à nombre.
dccp -D¶
Utiliser des paquets de requête DCCP pour les tests (RFC 4340).
Cette méthode utilise la même « technique half-open » utilisée pour TCP. Le port de destination est 33434.
Options :
- service=nombre
- Définir le code du service DCCP à nombre (par défaut, 1885957735).
raw -P protocole¶
Envoyer un paquet brut de protocole protocole.
Aucun entête spécifique au protocole n’est
utilisé, seulement un entête IP.
Cela implique -N 1 -w 5.
Options :
- protocol=protocole
- Utiliser de protocole IP protocole (par défaut 253).
NOTES¶
Pour accélérer le fonctionnement, normalement plusieurs tests sont envoyés simultanément. D’un autre côté cela crée un « torrent de paquets », particulièrement dans la direction réponse. Les routeurs peuvent limiter le débit des réponses ICMP, et quelques réponses peuvent à perdues. Pour éviter cela, il faut diminuer le nombre de tests simultanés ou même le définir à 1 (comme dans l’implémentation initiale de traceroute), c’est-à-dire -N 1
L’hôte final (cible) peut rejeter certains des tests simultanés et peut même ne répondre qu’aux derniers. Cela peut conduire des sauts « semblant expirés » supplémentaires près du saut final. Un algorithme adapté est utilisé pour auto-détecter de telles situations, mais il ne peut aider dans ce cas, aussi utilisez -N 1.
Pour une stabilité un peu plus grande, le fonctionnement du programme peut être ralenti en utilisant l’option -z, par exemple en utilisant -z 0.5 pour une pause d’une demi-seconde entre les tests.
Pour supprimer une attente supplémentaire, un algorithme adaptable (consulter l’option -w pour plus d’informations) est utilisé. Il peut conduire à une expiration prématurée (particulièrement quand les temps de réponse diffèrent) et afficher « * » au lieu de la durée. Dans ce cas, désactivez cet algorithme en spécifiant l’option -w avec le délai désiré (par exemple, -w 5).
Si certains sauts ne rapportent rien pour toutes les méthodes, la dernière chance d’obtenir un résultat est d’utiliser la commande ping -R (IPv4 et seulement pour les huit sauts les plus proches).
VOIR AUSSI¶
TRADUCTION¶
La traduction française de cette page de manuel a été créée par Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
| 11 octobre 2006 | Traceroute |