Como funciona el traceroute
El traceroute es una herramienta que nos permite, dentro de ciertos límites, descubrir la ruta que hacen los paquetes entre dos equipos. Hoy vamos a ver como funciona.
# traceroute systemadmin.es traceroute to systemadmin.es (91.121.113.59), 30 hops max, 40 byte packets 1 82.98.141.253 (82.98.141.253) 1.935 ms 2.245 ms 2.491 ms 2 10.1.1.1 (10.1.1.1) 0.324 ms 0.367 ms 0.419 ms 3 193.149.1.81 (193.149.1.81) 4.406 ms * * 4 * * * 5 160g.rbx-2-6k.routers.chtix.eu (213.186.32.222) 22.144 ms * * 6 rbx-36-m1.routers.chtix.eu (213.251.191.231) 20.266 ms 20.257 ms 20.460 ms 7 mail.systemadmin.es (91.121.113.59) 20.042 ms 19.878 ms 19.848 ms
Para trazar la ruta se basa en el TTL de un paquete IP. Dicho valor es contador que se va decrementando a cada salto, y en el caso que dicho valor sea cero se manda un ICMP de vuelta al origen y se descarta el paquete.
traceroute se aprovecha de este funcionamiento para mandar un paquete con un TTL de 1 para asegurar que solo hace un salto y espera recibir el ICMP tipo 11 (Time Exceeded) desde el primer punto intermedio. Luego manda otro paquete con el TTL a valor 2, por lo que pasa por el primer punto que ya ha registrado y el segundo salta le debería mandar otro ICMP informando del TTL agotado.
En el caso que no se reciba dentro de los límites de tiempo (5 por defecto), simplemente de marca con un asterisco el salto (por ejemplo el cuarto del caso anterior).
El tipo de paquete que se usa es configurable mediante las siguientes opciones:
- -I: Manda paquetes ICMP echo request
- -T: Manda paquetes TCP SYN
- -U: Opción por defecto, usa paquetes UDP. Esta opción es la única disponible para usuarios no administradores del equipo
Evidentemente existen limitaciones, un salto intermedio puede no modificar el TTL, por lo que sería invisible el salto. También es posible que se modifique el TTL pero no se mande de vuelta el ICMP, por lo que veríamos el salto pero no podríamos conocer la IP como comentábamos en el caso del salto 4.
Por otro lado al lado de cada salto podemos ver lo tiempos de cada uno de los paquetes mandados. Podemos augmentar el numero de pruebas por cada salto mediante el parámetro -q:
# traceroute systemadmin.es -q 5 traceroute to systemadmin.es (91.121.113.59), 30 hops max, 40 byte packets 1 82.98.141.253 (82.98.141.253) 1.418 ms 1.742 ms 1.984 ms 2.229 ms 2.475 ms 2 10.1.1.1 (10.1.1.1) 0.350 ms 0.406 ms 0.457 ms 0.512 ms 0.562 ms 3 193.149.1.81 (193.149.1.81) 10.734 ms * * * * 4 * * * * * 5 160g.rbx-2-6k.routers.chtix.eu (213.186.32.222) 19.989 ms * * * * 6 rbx-36-m1.routers.chtix.eu (213.251.191.231) 20.119 ms 19.979 ms 20.105 ms 20.026 ms 20.061 ms 7 mail.systemadmin.es (91.121.113.59) 19.947 ms 19.849 ms 19.875 ms 19.899 ms 19.867 ms
Relacionados
Imprimir
10. May 2010 at 10:01 am :
Yo la verdad es que antes que traceroute prefiero el comando mtr (My Traceroute) que es al traceroute lo que el top al ps. Actualiza los tiempos de los saltos intermedios.
10. May 2010 at 10:30 am :
Y qué os parece dig?
Por cierto cambia la v por la b en comentabamos.
NaCl u2
10. May 2010 at 10:32 am :
Corregido, muchas gracias!
A que te refieres con lo del dig?
10. May 2010 at 12:29 pm :
Dig te sirve para interrogar los servidores DNS, no para analizar tránsito de redes a diferencia de traceroute o mtr. No tiene mucha relación con el tema.
Saludos,
Esteban.-
pd: muy buen blog Jordi, lo sigo hace tiempo.