Cómo funciona el comando traceroute ?
Introducción:
Habitualmente requerimos hacer algunos diagnósticos en redes y utilizamos el comando traceroute pero desconocemos cómo es su funcionamiento interno y el porqué de sus resultados.
Traceroute es una herramienta que viene incluida en casi todos los sistemas operativos y permite conocer las rutas seguidas por un paquetes desde que se originó y hasta que llegó a su destino, conociendo los routers intermedios por los que paso el paquete.
# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
1 rcu-core (45.189.200.1) 209.879 ms 269.520 ms 156.457 ms
2 10.179.10.1 (10.179.10.1) 146.174 ms 146.176 ms 145.891 ms
3 201.182.132.201 (201.182.132.201) 288.713 ms * 448.867 ms
4 200.115.95.158 (200.115.95.158) 163.055 ms 308.638 ms 163.417 ms
5 74.125.242.193 (74.125.242.193) 230.013 ms
172.253.53.33 (172.253.53.33) 163.745 ms
74.125.242.209 (74.125.242.209) 165.299 ms
6 142.250.232.139 (142.250.232.139) 161.719 ms
142.250.46.169 (142.250.46.169) 286.943 ms
172.253.71.9 (172.253.71.9) 206.963 ms
7 dns.google (8.8.8.8) 160.926 ms 162.657 ms 230.801 ms
Como vemos están los routers por lo que paso el paquete desde que se originó en mi PC hasta que llegó hacía Google Public DNS. Pero cómo funciona el comando para poder descubrir los dispositivos intermedios?.
Funcionamiento:
Para hacer la traza se utiliza el encabezado de un paquete IP llamado TTL (time to live), éste es un contador que va decrementando su valor a medida que tiene un salto (hops), es decir que ha pasado por un router. Cuando el valor llega a 0, el paquete se descarta y se envía un ICMP de vuelta al host que originó el paquete; esto permite que no quede un paquete dando vueltas en un bucle y lo elimina. Al envía el paquete de retorno, el IP origen es el router mismo, con lo cual se conoce el IP del salto.
traceroute se aprovecha de este funcionamiento y envía un paquete con un TTL de 1 para asegurarse que solo tenga un salto y luego recibir un paquete ICMP tipo 11 (time exceeded) desde el primer salto que tengamos.
Luego manda otro paquete con TTL de 2, entonces el paquete pasa por el primer router del cual ya se tiene registro y el segundo le debería enviar otro ICMP para informar el TTL agotado.
En caso de que no se reciba el paquete dentro de ciertos limites (por defecto es 5) simplemente se marca ese salto con un asterisco y se continúa con el hop siguiente.
Por: Maximiliano Dobladez
Bajo Licencia CC 2.5 – Attribution-Noncommercial-No Derivative