Saltar al contenido

Cómo usar el comando ‘traceroute’ en Linux

abril 22, 2021
Interruptores de comando de Traceroute
Cambiar Explicación
-F Establezca el tiempo de vida inicial utilizado en el primer paquete de sondeo saliente.
-F Establezca el bit “no fragmentar”.
-D Habilite la depuración a nivel de socket.
-gramo Especifique una puerta de enlace de ruta de origen suelta (8 como máximo).
-I Especifique una interfaz de red para obtener la dirección IP de origen para los paquetes de sondeo salientes. Normalmente, esto solo es útil en un host de varios hogares. (Ver el
-s marca para otra forma de hacer esto.)
-I Utilice ICMP ECHO en lugar de datagramas UDP.
-metro Establezca el tiempo de vida máximo (número máximo de saltos) utilizado en los paquetes de sondeo salientes. El valor predeterminado es 30 saltos (el mismo valor predeterminado que se usa para las conexiones TCP).
-norte Imprime las direcciones de los saltos numéricamente en lugar de simbólica y numéricamente (guarda una búsqueda de dirección a nombre del servidor de nombres para cada puerta de enlace encontrada en la ruta).
-pag Establezca el número de puerto UDP base utilizado en las sondas (el valor predeterminado es 33434). Traceroute espera que nada esté escuchando en los puertos UDP
base a
base + nhops – 1 en el host de destino (por lo que se devolverá un mensaje ICMP PORT_UNREACHABLE para finalizar el seguimiento de la ruta). Si algo está escuchando en un puerto en el rango predeterminado, esta opción se puede usar para elegir un rango de puertos no utilizado.
-r Omita las tablas de enrutamiento normales y envíe directamente a un host en una red adjunta. Si el host no está en una red conectada directamente, se devuelve un error. Esta opción se puede usar para hacer ping a un host local a través de una interfaz que no tiene ruta a través de él (por ejemplo, después de que la interfaz fue eliminada por
encaminado(8C)).
-s Utilice la siguiente dirección IP (que generalmente se proporciona como un número de IP, no como un nombre de host) como la dirección de origen en los paquetes de sondeo salientes. En hosts de múltiples hosts (aquellos con más de una dirección IP), esta opción se puede usar para forzar que la dirección de origen sea diferente a la dirección IP de la interfaz a la que se envía el paquete de la sonda. Si la dirección IP no es una de las direcciones de interfaz de esta máquina, se devuelve un error y no se envía nada. (Ver el
-I marca para otra forma de hacer esto.)
-t Selecciona el
tipo de servicio en paquetes de sonda al siguiente valor (cero por defecto). El valor debe ser un entero decimal en el rango de 0 a 255. Esta opción se puede usar para ver si diferentes tipos de servicio dan como resultado diferentes rutas. (Si no está ejecutando 4.4bsd, esto puede ser académico, ya que los servicios de red normales como telnet y ftp no le permiten controlar el TOS). No todos los valores de TOS son legales o significativos; consulte la especificación de IP para obtener definiciones. Los valores útiles son probablemente ‘
-t
dieciséis‘(retraso bajo) y `
-t
8‘(alto rendimiento).
-v Salida detallada. Se enumeran los paquetes ICMP recibidos que no sean TIME_EXCEEDED y UNREACHABLE.
-w Configure el tiempo (en segundos) para esperar una respuesta a una sonda (por defecto, 5 segundos).
-X Alternar sumas de comprobación de IP. Normalmente, esto evita que traceroute calcule sumas de comprobación de IP. En algunos casos, el sistema operativo puede sobrescribir partes del paquete saliente pero no recalcular la suma de comprobación; por lo tanto, en algunos casos, el valor predeterminado es no calcular sumas de comprobación y usar
-X hace que se calculen. Tenga en cuenta que las sumas de comprobación suelen ser necesarias para el último salto cuando se utilizan sondas ICMP ECHO (
-I), por lo que siempre se calculan cuando se utiliza ICMP.
-z Configure el tiempo (en milisegundos) para pausar entre sondas (predeterminado 0). Algunos sistemas, como Solaris y enrutadores de Cisco, limitan la velocidad de los mensajes icmp. Un buen valor para usar con esto es 500 (por ejemplo, 1/2 segundo).



Interpretación de los resultados

Traceroute describe la ruta que sigue un paquete IP hacia un host de Internet al lanzar paquetes de sondeo UDP con un TTL pequeño y luego escuchar una respuesta ICMP de “tiempo excedido” desde una puerta de enlace. Inicie las sondas con un TTL de uno y aumente en uno hasta que obtenga un “puerto inalcanzable” ICMP (lo que significa que el paquete llegó a su destino) o alcance un valor máximo de intentos, que por defecto es de 30 saltos y se puede cambiar con el -metro bandera.


Cuando se ejecuta traceroute, envía tres sondas en cada ajuste TTL y luego imprime una línea a la consola que muestra el TTL, la dirección de la puerta de enlace y el tiempo de ida y vuelta de cada sonda. Si las respuestas de la sonda provienen de diferentes puertas de enlace, se imprime la dirección de cada sistema que responde. Si traceroute no recibe una respuesta en cinco segundos (cambiado con el -w flag), imprime un asterisco para esa sonda.


Para evitar que el procesamiento de paquetes de sondeo UDP abrume al host de destino, traceroute establece el puerto de destino en un valor que es poco probable que utilice el dispositivo. Si una red o servicio en el destino usa ese puerto, cambie el valor usando el -pag bandera.



Ejemplos de resultados de Traceroute

Un uso y una salida de muestra devolverán resultados similares a este ejemplo:


[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms


La segunda y tercera líneas son iguales. Este resultado se relaciona con un kernel con errores en el segundo sistema de salto, lbl-csam.arpa, que reenvía paquetes con un TTL cero (un error en la versión distribuida de 4.3 BSD). Debe adivinar qué ruta toman los paquetes a través del país, ya que NSFNet (129.140) no proporciona traducciones de dirección a nombre para sus NSS.

Ejemplo de puerta de enlace silenciosa

Un ejemplo más interesante es:


[yak 72]% traceroute allspice.lcs.mit.edu.
traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms

class = “ql-syntax”>

Tenga en cuenta que las puertas de enlace a 12, 14, 15, 16 y 17 saltos de distancia no envían mensajes ICMP de “tiempo excedido” o los envían con un TTL demasiado pequeño para comunicarse con nosotros. Las líneas 14 a 17 ejecutan el código MIT C Gateway que no envía mensajes de “tiempo excedido”.


La puerta de enlace silenciosa 12 en el ejemplo anterior puede ser el resultado de un error en 4.[23]Código de red BSD y sus derivados: las máquinas que ejecutan el código 4.3 y versiones anteriores envían un mensaje inalcanzable utilizando cualquier TTL que quede en el datagrama original. Para las puertas de enlace, el TTL restante es cero, se garantiza que el “tiempo excedido” de ICMP no regresará a nosotros.


Ejemplo de puerta de enlace silenciosa del sistema de destino

El comportamiento de este error es un poco más interesante cuando aparece en el sistema de destino:


1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
6 csgw.Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !

class = “ql-syntax”>

Observe que existen 12 “puertas de enlace” (13 es el destino final) y falta la última mitad. Lo que realmente está sucediendo es que el servidor llamado rotura (un Sun-3 que ejecuta Sun OS 3.5) está utilizando el TTL de nuestro datagrama que llega como TTL en su respuesta ICMP. Por lo tanto, la respuesta expirará en la ruta de retorno (sin que se envíe ningún aviso a nadie, ya que los ICMP no se envían para los ICMP) hasta que probemos con un TTL que sea al menos el doble de la longitud de la ruta; en otras palabras, el rip es en realidad solo siete salta.


Una respuesta que devuelve un TTL de 1 es una pista de que existe este problema. Traceroute imprime un! después del tiempo si el TTL es menor o igual a 1. Dado que los proveedores envían una gran cantidad de software obsoleto (DEC’s Ultrix, Sun 3.x) o no estándar (HPUX), espere ver este problema con frecuencia y tenga cuidado al elegir el host de destino de sus sondas.


Otras posibles anotaciones después de la hora son ! H, !NORTE, o !PAG (host, red o protocolo inalcanzable), !S (la ruta de origen falló), !F- (se necesita fragmentación: se muestra el valor de descubrimiento de MTU de ruta RFC1191), !X (comunicación administrativamente prohibida), ! V (violación de precedencia de host), !C (corte de precedencia en efecto), o ! (Código ICMP inalcanzable). Estos códigos están definidos por RFC1812, que reemplaza a RFC1716. Si casi todas las sondas dan como resultado algún tipo de host inalcanzable, traceroute se dará por vencido y saldrá.


Este programa está diseñado para su uso en pruebas, medición y gestión de redes. Debe usarse principalmente para el aislamiento manual de fallas. Debido a la carga que podría imponer a la red, no es aconsejable utilizar traceroute durante las operaciones normales o desde scripts automatizados.