Comando tracepath: ver saltos y MTU de la ruta en lugar de traceroute

Entorno de pruebaFamilia RHELAlmaLinux 9.8iputils 20210202Cuenta rootDebian 12 · traceroute 2.1.2 cuenta normal
Comandos de redtracepathUbicación/usr/bin/tracepath

En un servidor Linux, el comando tracepath muestra la ruta (saltos) que siguen los paquetes hasta un destino y la MTU de la ruta, sin privilegios de root. En un servidor AlmaLinux 9 sin traceroute instalado, limitamos el número de saltos a 10 y comprobamos la ruta hasta example.com: hasta el cuarto salto se vieron los tiempos de respuesta y una MTU de ruta de 1500, y los seis saltos siguientes no respondieron.

La salida de abajo se ejecutó en un servidor AlmaLinux 9.8 (cuenta root), y la versión de traceroute y el estado del paquete se comprobaron en un servidor Debian 12 (cuenta normal). Las direcciones IPv6 del primer salto y de los routers intermedios se sustituyeron por direcciones de ejemplo para documentación, y los tiempos de respuesta y los valores de pmtu se dejaron tal cual.

1️⃣ Cómo usar el comando tracepath

  • ↪️ Ver los saltos y la MTU de la ruta hasta un destino

tracepath recibe un nombre o una dirección IP de destino, envía paquetes UDP y muestra los saltos que responden, una línea por salto en orden de TTL. El número máximo de saltos por defecto es 30 y se puede cambiar con -m.

Para example.com añadimos -m 10 para comprobar solo hasta el décimo salto.

tracepath -n -m 10 example.com
 1?: [LOCALHOST]                        0.006ms pmtu 9001
 1:  fe80::1%eth0                                          0.077ms pmtu 1500
 1:  2001:db8:a::5b                                        2.627ms asymm  8 
 2:  2001:db8:a::52                                        1.473ms asymm 12 
 3:  2001:db8:b::1e                                       19.653ms asymm  9 
 4:  2001:db8:c::                                          3.642ms asymm 11 
 5:  no reply
 6:  no reply
 7:  no reply
 8:  no reply
 9:  no reply
10:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500 

Este servidor envió los paquetes a la dirección IPv6 de example.com, y hasta el cuarto salto aparecieron tiempos de respuesta. A partir del quinto salto siguió no reply, así que no apareció la línea reached que indica que se llegó al destino en diez saltos, y la ejecución tardó unos 18 segundos en terminar.

Al ejecutarlo contra el mismo destino sin -m, no terminó en 30 segundos. En rutas con muchos saltos que no responden, se ejecuta con -m para reducir el número de saltos que se comprueban.

La versión de tracepath instalada se comprueba con -V; el tracepath de este servidor era iputils 20210202.

tracepath -V
tracepath from iputils 20210202

2️⃣ Cómo leer la salida de tracepath

  • ↪️ Número de salto, pmtu, asymm, reached

Cada línea de la salida muestra el número de salto, la dirección que respondió y el tiempo de ida y vuelta, en ese orden. Donde cambió la MTU de la ruta se añade pmtu, y si la ida y la vuelta tienen distinto número de saltos se añade asymm. Esto es lo que se revisa en cada línea.

SalidaSignificado
1?:Campo del número de salto: se añade ? al número estimado cuando la respuesta no dio el TTL
[LOCALHOST]La línea del propio servidor, antes de que el paquete salga a la red
0.077msTiempo de ida y vuelta hasta ese salto
pmtu 1500MTU de la ruta (bytes) cambiada en ese punto; solo aparece cuando cambia
asymm 8Diferencia de saltos entre la ida y la vuelta; el manual oficial dice que no es un valor fiable
no replySalto que no respondió al paquete enviado con ese TTL
reachedLínea en la que se llegó al destino
Too many hopsSe detiene tras comprobar hasta el número de saltos fijado con -m
Resume: pmtu … hops … back …MTU de toda la ruta, saltos hasta el destino y estimación de los saltos de vuelta

En la salida de example.com, la pmtu de la primera línea [LOCALHOST] era 9001 y cambió a 1500 en el primer salto. Que la línea de TTL 1 aparezca dos veces cambiando solo la dirección también es el patrón del ejemplo del manual oficial. El manual explica que, si el primer paquete se rechaza en el primer salto por la MTU de la ruta, la misma línea de TTL aparece una vez más.

Al llegar al destino se añade reached al final de la línea, y la última línea Resume muestra el número de saltos hasta el destino. Al enviar a 127.0.0.1 apareció reached en un solo salto, y la línea Resume fue [pmtu 65535 hops 1 back 1].

tracepath -n 127.0.0.1
 1:  127.0.0.1                                             0.047ms reached
     Resume: pmtu 65535 hops 1 back 1 

Una ruta que termina en Too many hops sin reached no recibió respuesta del destino dentro de los saltos fijados con -m. La ruta de example.com tampoco tuvo reached en diez saltos, así que en la línea Resume solo quedó pmtu, sin número de saltos.

3️⃣ Opciones de tracepath

  • ↪️ -n, -b, -m y la longitud de paquete -l

tracepath tiene solo ocho opciones: -4, -6, -n, -b, -l, -m, -p y -V, y al ejecutarlo sin destino esta lista aparece como mensaje de uso. Sin opciones, resuelve a nombres las direcciones que responden, y al enviar a localhost apareció localhost en el campo del salto.

tracepath localhost
 1?: [LOCALHOST]                        0.003ms pmtu 65536
 1:  localhost                                             0.048ms reached
 1:  localhost                                             0.030ms reached
     Resume: pmtu 65536 hops 1 back 1 

[tracepath -n] muestra solo direcciones IP sin resolver nombres. Al añadir -n para el mismo localhost, el campo del salto cambió a la dirección IPv6 ::1, y al ejecutar la ruta de example.com con -n también aparecieron solo direcciones en el campo del salto.

tracepath -n localhost
 1?: [LOCALHOST]                        0.005ms pmtu 65536
 1:  ::1                                                   0.039ms reached
 1:  ::1                                                   0.010ms reached
     Resume: pmtu 65536 hops 1 back 1 

-b muestra a la vez el nombre y la dirección. Al añadir -b para 127.0.0.1, la dirección apareció entre paréntesis después del nombre: [localhost (127.0.0.1)].

tracepath -b 127.0.0.1
 1:  localhost (127.0.0.1)                                 0.050ms reached
     Resume: pmtu 65535 hops 1 back 1 

-m es la opción que fija el número máximo de saltos que se comprueban, y aceptó valores de 0 a 255. Con -m 0 aparecieron directamente solo las líneas Too many hops y Resume, sin líneas de saltos, y al poner 256 se rechazó con [out of range].

tracepath -m 0 127.0.0.1
     Too many hops: pmtu 65535
     Resume: pmtu 65535 

-l es la longitud del primer paquete enviado; por defecto es de 65535 bytes en IPv4 y 128000 bytes en IPv6. Al añadir -l 1500 para 127.0.0.1, la pmtu de la línea Resume pasó de 65535 a 1500.

tracepath -l 1500 -n 127.0.0.1
 1:  127.0.0.1                                             0.028ms reached
     Resume: pmtu 1500 hops 1 back 1 

-p es la opción que fija el primer puerto UDP de destino al que se envía. El resultado de añadir -p 33434 para 127.0.0.1 fue el mismo que sin ella.

OpciónCopiarDescripción
-nMuestra solo direcciones IP sin resolver nombres
-bMuestra el nombre y la dirección a la vez
-msaltosFija el número máximo de saltos que se comprueban, por defecto 30
-llongitudFija la longitud del primer paquete, por defecto IPv4 65535, IPv6 128000
-VMuestra la versión y termina
OpciónCopiarDescripción
-4Envía solo a direcciones IPv4
-6Envía solo a direcciones IPv6
-pPuertoFija el primer puerto UDP de destino al que se envía

4️⃣ Diferencias entre tracepath y traceroute

  • ↪️ Instalación, permisos, paquetes enviados

En servidores donde no se puede instalar traceroute, la ruta se comprueba con tracepath en lugar de traceroute. El servidor AlmaLinux 9.8 que revisamos no tenía el paquete traceroute, y tracepath viene en el paquete iputils, así que se ejecutó sin instalar nada aparte.

rpm -q traceroute
package traceroute is not installed

El servidor Debian 12 era lo contrario: traceroute 2.1.2 estaba instalado y el paquete iputils-tracepath, que contiene tracepath, no lo estaba.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later
apt-cache policy iputils-tracepath
iputils-tracepath:
  Installed: (none)
  Candidate: 3:20221126-1+deb12u1

Como muestran estos dos servidores, los comandos disponibles cambian según la distribución, así que primero se comprueba cuál existe en el servidor al que estás conectado. tracepath no necesita privilegios de root y puede ejecutarlo cualquier cuenta que pueda enviar paquetes UDP. El ejecutable de tracepath del servidor AlmaLinux 9.8 también tenía permisos rwxr-xr-x, sin capacidades (capability) añadidas.

Categoríatracepathtraceroute
Servidor AlmaLinux 9.8Incluido en el paquete iputils, se ejecuta al momentoNo instalado
Servidor Debian 12Paquete iputils-tracepath no instaladotraceroute 2.1.2 instalado
Paquetes enviadosUDPUDP por defecto, -I para ICMP, -T para TCP
Salida por saltoUna líneaEnvía tres veces por defecto, tres tiempos (se cambia con -q)
Número de opcionesOcho: -4 -6 -n -b -l -m -p -VMás de 20 solo en la primera pantalla de --help

Si necesitas ver la ruta con ICMP o TCP, o enviar varias veces por salto para comparar tiempos, tendrás que instalar y usar el comando traceroute. En servidores donde instalarlo es difícil o donde también quieres ver la MTU de la ruta, tracepath es la opción adecuada.

🔲 Simulador del comando tracepath

En el simulador de abajo puedes volver a ver la ruta de example.com cambiando solo el número de saltos, o escribir tú mismo -n, -b, -m y -l para localhost y 127.0.0.1 y ver las diferencias.

Simulador del comando tracepathiputils 20210202
[root@server work]#
Funciona solo en tu navegador y no envía paquetes reales. Con ↑↓ recuperas los comandos anteriores.

🔢 FAQ & contenido recomendado

No, el código de salida no lo indica. Incluso al ejecutarlo contra example.com con -m 10 y terminar en Too many hops sin reached, el código de salida fue 0. Un fallo de resolución de nombres y un argumento no válido dieron 1, y ejecutarlo sin destino dio 255. El código de salida solo distingue errores de ejecución, así que si se llegó al destino se comprueba con la línea reached de la salida.

localhost se envió a la dirección IPv6 ::1, así que la primera línea [LOCALHOST] mostró la MTU de la interfaz de loopback, 65536, mientras que con 127.0.0.1, que es IPv4, apareció tal cual la longitud de paquete por defecto de IPv4, 65535. La MTU de la interfaz lo comprobada con ip link también era 65536.

Con -4 solo se envía a direcciones IPv4. Al añadir -4 para localhost apareció reached en un solo salto por IPv4 sin la línea [LOCALHOST], y al revés, al añadir -6 para 127.0.0.1 terminó con [Address family for hostname not supported].

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 3   +   6   =