Qu’est ce que le traceroute ?

I. Présentation

Dans ce tutoriel, nous allons voir qu'est ce que le traceroute, un utilitaire souvent utilisé sous toute distribution qui permet de suivre et de retracer le chemin d'un paquet d'un point A à un point B sur un réseau LAN comme sur internet. Nous verrons comment un traceroute fonctionne, les différences entre les principaux OS et les limites de cet outil.

II. Traceroute: qu'est ce que c'est ?

Comme dit précédemment, traceroute est un outil qui va permettre, à partir d'un poste A, de suivre le chemin qu'emprunte une communication vers un point B. On dit souvent que "ça passe par Internet" mais nous pouvons avoir des informations plus précises. Traceroute est aussi utilisé dans les réseaux d'entreprises pour connaitre le chemin qu'utilise les flux au sein des réseaux. On peux imaginer une utilisation lors de la configuration d'un protocole de routage par exemple.

III. Comment ça fonctionne

Techniquement, traceroute a un fonctionnement assez logique. Il utilise le TTL (Time To Live) des paquets UDP ou ICMP qu'il manie afin de découvrir progressivement le chemin que parcourent les paquets. Plus précisément, la source va d'abord envoyer un paquet avec un TTL de 1 qui sera décrément au premier routeur (dit aussi "saut" ou "hop") qui jettera alors le paquet puis enverra à la source du paquet un message d'erreur ICMP disant "Time to live exceeded in transit" . Notre source fera ensuite la même chose avec un TTL de 2. Arrivé à notre cible finale, celle-ci nous répondra un paquet. Voici un schéma qui vous permettra de mieux comprendre ce processus :

Traceroute01

Nous voyons bien sur le schéma ci-dessus le processus d'exécution d'un traceroute. A la fin de notre traceroute, nous aurons donc deux lignes qui ressemblerons à cela :

1   2 ms  2 ms  4 ms  router1.false.net [159.57.85.1]
2   24 ms 24 ms 24 ms router2.false.net [56.32.45.12]
Itinéraire déterminé

Pour que ce soit parlant, voici un exemple de résultat de traceroute sous Windows (commande "tracert"):

Traceroute02

On voit ici un traceroute de chez moi vers www.it-connect.fr qui est sur un serveur 1&1 en Allemagne. On voit donc que le premier routeur que mon paquet va passer est ma livebox (routeur entre mon LAN et internet) puis différent routeur où nous n'avons que l'IP, pour arriver au final sur le réseau de 1&1 ("oneandone.net") et enfin sur le serveur "kundenserver.de". Si nous effectuons une analyse de trame sur cette requête, nous verrons quelque chose comme suivant (sous Windows) :

Traceroute04

On voit donc bien l'incrémentation du TTL une fois un routeur passé (dans les cadres rouges).

  • Comment obtient-on des informations sur chacun des routeurs ?

Étant donné que chaque routeur qui décrémente le TTL alors qu'il arrive à 0 est obligé de jeter le paquet, il envoie tout de même un avertissement à sa source pour la prévenir. C'est pendant cet envoi du paquet ICMP "Time to live exceeded in transit" que nous pouvons récupérer des informations sur le routeur en question. On récupérera forcément son IP à partir de laquelle nous pourrons faire une recherche DNS (type nslookup). Nous verrons cela en détail dans la suite du tutoriel. Les données de temps sont elles évaluées en examinant le temps que le paquet d'erreur "TTL exceeded " met à nous revenir. Pour revenir à notre trame précédente :

Traceroute05

On voit bien la trame 84 qui effectue un ping avec un TTL de 1 puis la trame 85 qui décrémente le TTL et qui renvoie un "TTL exceeded" en retour avec l'IP source (du routeur donc) "192.168.1.254". On remarque ensuite une requête DNS sur 254.1.168.192.in-addr-arpa qui ressemble donc à un nslookup inversé (partant de l'IP pour arriver au nom). On a ensuite la réponse du serveur DNS (qui ici a la même IP que mon routeur puisqu'il s'agit de ma livebox)

IV. Problème de résultat : les étoiles

Il arrive parfois que le résultat nous affiche des étoiles au lieu d'avoir des informations sur le temps de retour du paquet ou du routeur faisant transiter le paquet. Cela arrive par exemple lorsque nous tentons un traceroute vers un site du ministère de la justice  comme www.legifrance.gouv.fr :

Traceroute03

Les étoiles présentes dans certains résultats correspondent à des manques d'information concernant les routeurs qui jettent le paquet. Nous savons qu'un routeur a jeté le paquet car nous n'avons pas de réponse claire de notre cible mais aucun retour ne nous est fait, le "Délai d'attente de la demande dépassé" apparait donc après un nombre défini de tentatives infructueuses.

Cela est souvent dû au fait que les routeurs sont plus sécurisés et n'acceptent pas ce genre de paquet (ICMP par exemple), ils sont configurés pour ne pas y répondre en parti pour ne pas fournir d'information sur eux-mêmes. Pour le site legifrance.gouv.fr, on peut imaginer que la fin du chemin qui est stocké sur des serveurs gouvernementaux est protégé et que les routeurs le constituants sont configurés pour ne par répondre aux paquets ICMP.

Traceroute06

V. Différence entre Windows et Linux

Sous Windows, la commande à exécuter est la suivante :

tracert

Tandis que sous Linux c'est la commande suivante :

traceroute

Il faut également savoir que le "tracert" de Windows utilise des paquets ICMP pour effectuer le traceroute alors que le traceroute de Linux utilise des paquets UDP comme on le voit sur l'analyse de trame suivante :

Traceroute07

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d’IT-Connect.fr et d’Information-security.fr.
Auditeur sécurité chez Amossys.

    mickael a publié 478 articles sur IT-Connect.See all posts by mickael

    Une réaction sur “Qu’est ce que le traceroute ?

    • 05/07/2016 à 18:39
      Permalink

      Merci monsieur,
      vous nous apprenez beaucoup de choses.

      Répondre

    Laisser un commentaire

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