El diagnóstico de redes es una parte esencial del trabajo de cualquier administrador de redes/sistemas, que incluye el análisis y la resolución de diferentes tipos de problemas de red.

Conocer la ruta que recorre un paquete IP entre dos puntos de una red arroja mucha información útil para los ojos entrenados.

Una de esas herramientas multiplataforma populares y de uso común que ayuda en el análisis y la solución de problemas relacionados con las rutas de red es traceroute.

En términos sencillos, traceroute rastrea la ruta de un paquete IP entre el origen y el destino enviando paquetes de sondeo (probablemente ICMP ECHO o TCP SYN) y luego escuchando sus respuestas ICMP de «tiempo excedido». El TTL de estos paquetes se mantiene intencionadamente como uno y se incrementa en uno hasta que obtenemos ICMP «puerto inalcanzable», lo que significa que llegamos al host o alcanzamos el valor máximo (por defecto como 30 saltos).

Un ejemplo de salida de traceroute tiene el aspecto siguiente

$ traceroute google.com
traceroute a google.com (172.217.169.14), 30 saltos como máximo, paquetes de 60 bytes
 1 140.91.200.22 (140.91.200.22) 0,129 ms 140.91.200.19 (140.91.200.19) 0,151 ms 140.91.200.77 (140.91.200.77) 0,114 ms
 2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms
 3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms
 4 108.170.246.129 (108.170.246.129) 0,583 ms 0,745 ms 0,714 ms
 5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms
 6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms
$

La salida predeterminada de traceroute, como se muestra arriba, muestra el TTL (tiempo de vida) o el tiempo de ida y vuelta de tres paquetes, el número máximo de saltos y el tamaño del paquete en bytes, así como la dirección IP y el nombre de dominio resuelto, cuando es posible.

Traceroute es muy útil para determinar los retrasos en la respuesta y el encaminamiento entre dos nodos. Además, ayuda a determinar los puntos de fallo en una ruta hacia el destino. Muchos cortafuegos y enrutadores bloquean los mensajes de traceroute en Internet, por lo que su salida puede no ser siempre correcta.

Hay soluciones posibles hasta cierto punto cambiando el tipo de mensajes de sondeo, pero sólo puede ayudar hasta cierto punto a eludir este problema. Así que hay que tener esto en cuenta mientras se utiliza esta utilidad.

Algunas opciones de traceroute requieren privilegios elevados de superusuario que permiten modificar los paquetes sin procesar.

comando tracepath

Red Hat Enterprise Linux o RHEL 8 y sus distribuciones Linux derivadas no vienen con el comando traceroute instalado por defecto. Esto puede parecer un cambio significativo para aquellos que están acostumbrados a la utilidad traceroute en versiones anteriores de Red Hat Linux o CentOS.

Pero hay un comando igualmente capaz disponible por defecto en RHEL8 llamado tracepath que tiene capacidades similares a su homólogo tracepath y está listo para su uso con la instalación del sistema operativo.

Además tracepath soporta la opción MTU, que permite detectar el valor MTU o Unidad de Transmisión Máxima, que es el paquete más grande que tracepath puede enviar por la red.

A continuación se muestra un ejemplo de salida de tracepath como referencia:

$ tracepath 131.153.76.66
 1?: [LOCALHOST] pmtu 9000
 1: 140.91.200.23 0.416ms asymm 2
 1: 140.91.200.23 0.239ms asymm 2
 2: 140.91.200.74 0.194ms pmtu 1500
 2: oracle-svc071175-lag003322.ip.doce99-cust.net 1.344ms
 3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2
 4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5
 5: prs-bb1-link.ip.doce99.net 8.548ms asymm 6
 6: mei-b5-link.ip.doce99.net 18.111ms asymm 5
 7: sin respuesta
 8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7
 9: 131.153.47.139 163.358ms asymm 8
10: sin respuesta
11: 131.153.76.66 159.071ms !H
     Reanudar: pmtu 1500
$

La salida por defecto de tracepath, como se muestra arriba, muestra TTL (Time To Live) o tiempo de ida y vuelta de un paquete, MTU (Maximum Transmission Unit) que se puede enviar por la red mediante tracepath y el nombre de dominio resuelto siempre que sea posible.

sintaxis de tracepath

la sintaxis de uso general del comandotracepath es la siguiente:

$ tracepath <opciones> <destino DNS o IP&gt

#1. Sin banderas, tracepath muestra la ruta al destino tomada como se muestra a continuación:

$ tracepath 131.153.56.85
 1?: [LOCALHOST] pmtu 9000
 1: 140.91.200.77 0.226ms asymm 2
 1: 140.91.200.79 0.497ms asymm 2
 2: 140.91.200.74 0.216ms pmtu 1500
 2: oracle-svc071174-lag003319.ip.doce99-cust.net 0.691ms
 3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2
 4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3
 5: nyk-bb1-link.ip.doce99.net 80.617ms asymm 8
 6: rest-bb1-link.ip.doce99.net 153.250ms asymm 21
 7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6
 8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9
 9: sin respuesta
10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9
11: phx-b1-link.ip.twelve99.net 131.524ms
12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11
13: giglinx-ic305413-phx-b1.ip.doce99-cust.net 132.583ms asymm 12
14: sin respuesta
15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4
17: sin respuesta
18: sin respuesta
19: speedchi.phoenixnap.com 133.809ms alcanzado
     Reanudar: pmtu 1500 saltos 19 atrás 8
$

#2. Si desea imprimir sólo la dirección IP, puede utilizar la bandera -n:

$ tracepath -n 131.153.56.85
 1?: [LOCALHOST] pmtu 1500
 1: 140.91.200.74 0.393ms asymm 2
 1: 140.91.200.21 0.180ms asymm 2
 2: 213.248.69.255 0.576ms
 3: 213.248.98.246 1.210ms asymm 2
 4: 62.115.117.122 1.371ms asymm 3
 5: 62.115.133.239 141.920ms asymm 20
 6: 62.115.141.244 77.732ms asymm 7
 7: sin respuesta
 8: 62.115.137.55 881.711ms asim 9
 9: sin respuesta
10: 62.115.137.55 914.855ms asymm 9
11: 62.115.125.97 132.182ms
12: 62.115.125.97 131.686ms asymm 11
13: 62.115.42.6 133.132ms asymm 12
14: sin respuesta
15: 62.115.42.10 143.880ms asymm 12
16: 4.14.13.150 134.869ms asymm 4
17: sin respuesta
18: 4.14.13.150 145.263ms asymm 4
19: 131.153.56.85 133.636ms alcanzado
     Reanudar: pmtu 1500 saltos 19 atrás 8
$

#3. Para imprimir tanto los nombres de host como las direcciones IP, utilice la bandera -b:

$ tracepath -b 131.153.56.85
 1?: [LOCALHOST] pmtu 1500
 1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2
 1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2
 2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms
 3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2
 4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3
 5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20
 6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7
 7: sin respuesta
 8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7
 9: sin respuesta
10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9
11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms
12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11
13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14
14: sin respuesta
15: sin respuesta
16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4
17: sin respuesta
18: sin respuesta
19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms alcanzado
     Reanudar: pmtu 1500 saltos 19 atrás 8
$

#4. Para establecer un valor personalizado de longitud de paquete en lugar de utilizar el valor predeterminado de tracepath, es decir, 65535, especifique el valor con la bandera -l:

$ tracepath -l 300 131.153.56.85
 1: 140.91.200.77 0.405ms asymm 2
 2: oracle-svc071174-lag003319.ip.doce99-cust.net 0.589ms
 3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2
 4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3
 5: nyk-bb1-link.ip.doce99.net 81.564ms asymm 8
 6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7
 7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6
 8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7
 9: sin respuesta
10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9
11: phx-b1-link.ip.twelve99.net 131.449ms
12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11
13: giglinx-ic315451-phx-b1.ip.doce99-cust.net 143.059ms asymm 14
14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11
15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4
17: sin respuesta
18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4
19: speedchi.phoenixnap.com 133.736ms alcanzado
     Reanudar: pmtu 300 saltos 19 atrás 8
$

#5. También podemos establecer el puerto de destino inicial utilizando la bandera -p como:

$ tracepath -p 9000 131.153.56.85
 1?: [LOCALHOST] pmtu 1500
 1: 140.91.200.18 0.160ms asymm 2
 1: 140.91.200.74 0.177ms asymm 2
 2: oracle-svc071175-lag003322.ip.doce99-cust.net 1.151ms
 3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2
 4: sin respuesta
 5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8
 6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7
 7: sin respuesta
 8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7
 9: sin respuesta
10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9
11: phx-b1-link.ip.twelve99.net 132.036ms
12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9
13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12
14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11
15: sin respuesta
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4
17: sin respuesta
18: sin respuesta
19: speedchi.phoenixnap.com 133.562ms alcanzado
     Reanudar: pmtu 1500 saltos 19 atrás 8
$

#6. El número máximo de saltos, que por defecto está fijado en 30, puede personalizarse utilizando la bandera -m como se muestra a continuación:

$ tracepath -m 20 131.153.56.85
 1?: [LOCALHOST] pmtu 1500
 1: 140.91.200.18 0.175ms asymm 2
 1: 140.91.200.77 0.169ms asymm 2
 2: oracle-svc071174-lag003319.ip.doce99-cust.net 0.669ms
 3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2
 4: sin respuesta
 5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20
 6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7
 7: sin respuesta
 8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7
 9: sin respuesta
10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9
11: phx-b1-link.ip.twelve99.net 132.582ms
12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11
13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11
14: sin respuesta
15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4
17: sin respuesta
18: sin respuesta
19: speedchi.phoenixnap.com 133.474ms alcanzado
     Reanudar: pmtu 1500 saltos 19 atrás 8
$

Tenga en cuenta que tracepath no admite privilegios elevados de superusuario como traceroute, ya que no admite la función de modificación avanzada de paquetes.

Resumen

Este artículo ha resumido el uso del comando traceroute, cómo se utiliza en la resolución de problemas relacionados con la red y cómo podemos realizar las mismas tareas en sistemas RHEL8 utilizando el comando tracepath.

Para saber más sobre estos comandos, utilice la página man respectiva de la herramienta.

$ man traceroute
$ man tracepath