Imoteq

Traceroute, en 5 minutes top chrono

Présent dans la boite à outil de l'admin réseau, du sysadmin ou du devops en herbe, traceroute permet voir quel est le chemin emprunté par nos paquets IP. Dans ce court post, on va regarder comment il fait ca et comment utiliser la bête.

Ce qu'il faut savoir, sinon on comprend rien

Chaque paquet IP transporte avec lui une donnée appelée TTL (Time To Live). Sauf que comme son nom ne l'indique pas, cette donnée ne correspond pas à une unité de temps mais à un nombre de routeurs à traverser. Ainsi si j'envoie mon paquet IP avec un TTL d'une valeur de 5, ma gateway (1er routeur recontré) va le transmettre en diminuant son TTL d'une unité (qui sera égale à 4), après le prochain routeur son TTL sera de 3, et ainsi de suite. Si ce paquet n'a pas atteint sa destination et qu'un routeur l'intercepte avec un TTL à 1, il ne le transmet pas au suivant mais le jette dans la poubelle verte. Mais comme il est sympa, il prévient quand même l'émetteur du paquet en lui envoyant une requête "ICMP TTL exceeded messages", dévoilant ainsi son identité à ce dernier.

Ca commence à s'éclaircir...

Traceroute utilise effectivement ce mécanisme de TTL pour identifier tous les routeurs traversés par les paquets IP.

Il envoie une première série de paquets avec un TTL de 1. Notre gateway va lui répondre un courtois "ICMP TTL exceeded messages" dévoilant ainsi son IP, qu'il s'empressera de nous afficher.

Traceroute enverra ensuite une deuxième série de paquets avec un TTL de 2, pour découvrir quel est le second routeur, et ainsi de suite.

Ca commence à s'assombrir...

Après quelques exécutions, vous avez pu vous rendre compte qu'au lieu de nous afficher les adresses IP des routeurs, nous avons droit à des étoiles scintillantes.

Par exemple, un traceroute de google.fr donne :

traceroute google.fr
traceroute to google.fr (216.58.208.195), 30 hops max, 60 byte packets
 1  gateway (10.0.4.4)  0.562 ms  0.175 ms  0.109 ms
 2  10.129.74.5 (10.129.74.5)  2.685 ms  3.196 ms  17.374 ms
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *

google.fr est en effet situé dans les étoiles entre jupiter et tatouine.

Pour les moins rêveurs d'entre vous, les étoiles correspondent à des paquets IP pour lesquels traceroute n'a pas recu de "ICMP TTL exceeded messages", il n'a même rien recu du tout d'ailleurs.

Quand on voit un résultat si peu probant, il y a de fortes chances pour que votre firewall en soit en cause et bloque vos paquets !

Les routeurs ou les firewalls ne sont en effet pas tous configurés pour faire plaisir à traceroute, et si un paquet ne leur plait pas (port ou protocol exotique), il s'empressera de le jeter, sans même regarder son TLL, et sans même prévenir traceroute que son paquet a disparu, l'effronté.

L'astuce du chef

Par défaut traceroute utilise le protocol UDP avec un port dans les 33000 pour rester discret. Comme nous venons de le voir, cette configuration ne plait pas beaucoup aux routeurs. Ces derniers sont en revanche souvent plus tolérants vis à vis du protocole ICMP. Il est possible d'exécuter traceroute pour envoyer des paquets ICMP avec l'option "--icmp" :

traceroute --icmp google.fr
traceroute to google.fr (216.58.208.195), 30 hops max, 60 byte packets
 1  gateway (10.0.4.4)  0.313 ms  0.226 ms  0.205 ms
 2  10.129.74.5 (10.129.74.5)  78.799 ms  143.318 ms  161.526 ms
 3  10.129.74.230 (10.129.74.230)  0.540 ms  0.516 ms  0.371 ms
 4  * * *
 5  90.67.88.225 (90.67.88.225)  0.829 ms * *
 6  * 81.52.48.154 (81.52.48.154)  1.744 ms *
 7  * * 81.253.234.89 (81.253.234.89)  1.614 ms
 8  ae20-0.ncidf303.francetelecom.net (193.253.82.18)  1.121 ms * *
 9  * ae42-0.niidf301.Paris.francetelecom.net (193.252.159.149)  1.245 ms *
10  ae40-0.niidf302.Paris.francetelecom.net (193.252.103.38)  1.708 ms  1.533 ms  1.638 ms
11  193.252.137.78 (193.252.137.78)  5.346 ms  4.386 ms  3.435 ms
12  209.85.172.162 (209.85.172.162)  18.466 ms  2.031 ms  2.027 ms
13  108.170.244.225 (108.170.244.225)  2.465 ms  2.354 ms  2.432 ms
14  216.239.42.39 (216.239.42.39)  1.915 ms  1.887 ms  2.034 ms
15  par10s21-in-f195.1e100.net (216.58.208.195)  2.304 ms  2.227 ms  2.233 ms

Le résultat est ici plus parlant !

© Imoteq . Tous droits réservés