Trazarruta
En informática, traceroute
y tracert
son comandos de diagnóstico de redes informáticas para mostrar posibles rutas (trayectorias) y medir los retrasos de tránsito de los paquetes a través de una red de Protocolo de Internet (IP). El historial de la ruta se registra como los tiempos de ida y vuelta de los paquetes recibidos de cada host sucesivo (nodo remoto) en la ruta (ruta); la suma de los tiempos medios en cada salto es una medida del tiempo total empleado para establecer la conexión. Traceroute continúa a menos que todos los paquetes enviados (generalmente tres) se pierdan más de dos veces; entonces se pierde la conexión y no se puede evaluar la ruta. Ping, por otro lado, solo calcula los tiempos finales de ida y vuelta desde el punto de destino.
Para el Protocolo de Internet versión 6 (IPv6), la herramienta a veces tiene el nombre traceroute6
y tracert6
.
Implementaciones
El comando traceroute
está disponible en muchos sistemas operativos modernos. En sistemas similares a Unix, como FreeBSD, macOS y Linux, está disponible como una herramienta de línea de comandos. Traceroute también es accesible gráficamente en macOS dentro de la suite Network Utilities; estas utilidades quedaron obsoletas desde el lanzamiento de macOS Big Sur.
Microsoft Windows y ReactOS proporcionan un programa llamado tracert
que realiza la misma función de seguimiento de rutas. Los sistemas operativos basados en Windows NT también proporcionan PathPing, con una funcionalidad similar. La versión de ReactOS fue desarrollada por Ged Murphy y tiene licencia GPL.
En sistemas operativos similares a Unix, traceroute envía, de manera predeterminada, una secuencia de paquetes de Protocolo de datagramas de usuario (UDP), con números de puerto de destino que van desde 33434 a 33534; las implementaciones de traceroute enviadas con Linux, FreeBSD, NetBSD, OpenBSD, DragonFly BSD y macOS incluyen una opción para usar paquetes de solicitud de eco ICMP (-I) o cualquier protocolo arbitrario (-P ) como UDP, TCP usando paquetes TCP SYN o ICMP.
En Windows, tracert envía paquetes de solicitud de eco ICMP, en lugar de los paquetes UDP que traceroute envía de manera predeterminada.
El valor de tiempo de vida (TTL), también conocido como límite de salto, se usa para determinar los enrutadores intermedios que se atraviesan hacia el destino. Traceroute envía paquetes con valores TTL que aumentan gradualmente de un paquete a otro, comenzando con un valor TTL de uno. Los enrutadores disminuyen los valores TTL de los paquetes en uno cuando enrutan y descartan paquetes cuyo valor TTL ha llegado a cero, devolviendo el mensaje de error ICMP ICMP Time Exceeded. Para el primer conjunto de paquetes, el primer enrutador recibe el paquete, disminuye el valor TTL y descarta el paquete porque entonces tiene un valor TTL cero. El enrutador envía un mensaje ICMP Time Exceeded a la fuente. El siguiente conjunto de paquetes recibe un valor TTL de dos, por lo que el primer enrutador reenvía los paquetes, pero el segundo enrutador los descarta y responde con ICMP Time Exceeded. Procediendo de esta manera, traceroute usa los mensajes ICMP Time Exceeded devueltos para crear una lista de enrutadores que atraviesan los paquetes, hasta que se alcanza el destino y devuelve un mensaje ICMP Destination Unreachable si se usan paquetes UDP o un mensaje ICMP Echo Reply si ICMP Echo se utilizan mensajes.
Los valores de marca de tiempo devueltos para cada enrutador a lo largo de la ruta son los valores de retraso (latencia), que normalmente se miden en milisegundos para cada paquete.
El remitente espera una respuesta dentro de un número específico de segundos. Si un paquete no se reconoce dentro del intervalo esperado, se muestra un asterisco. El Protocolo de Internet no requiere que los paquetes tomen la misma ruta hacia un destino en particular, por lo que los hosts enumerados pueden ser hosts que han atravesado otros paquetes. Si el host en el salto #N no responde, el salto se omite en la salida.
Si una red tiene un cortafuegos y opera sistemas similares a Windows y Unix, se debe habilitar más de un protocolo de entrada a través del cortafuegos para que traceroute funcione y reciba respuestas.
Algunas implementaciones de traceroute usan paquetes TCP, como tcptraceroute y traceroute de capa cuatro (lft). PathPing es una utilidad introducida con Windows NT que combina la funcionalidad de ping y traceroute. MTR es una versión mejorada de ICMP traceroute disponible para sistemas Windows y similares a Unix. Las diversas implementaciones de traceroute se basan en el envío de paquetes ICMP Time Exceeded (tipo 11) a la fuente.
En Linux, tracepath es una utilidad similar a traceroute, con la principal diferencia de que no requiere privilegios de superusuario.
La implementación de traceroute de Cisco también utiliza una secuencia de datagramas UDP, cada uno con valores TTL crecientes, a un número de puerto no válido en el host remoto; de forma predeterminada, se utiliza el puerto UDP 33434. Una versión extendida de este comando (conocido como el comando extended traceroute) puede cambiar el número de puerto de destino utilizado por los mensajes de la sonda UDP.
Uso
La mayoría de las implementaciones incluyen al menos opciones para especificar el número de consultas a enviar por salto, el tiempo de espera de una respuesta, el límite de saltos y el puerto a usar. Al invocar traceroute sin opciones especificadas, se muestra la lista de opciones disponibles, mientras que man traceroute presenta más detalles, incluidos los indicadores de error que se muestran. Un ejemplo en Linux:
$ traceroute -w 3 - Q 1 -m 16 ejemplo.com
traceroute to example.com (93.184.216.34), 16 hops max, 52 byte packets 1 192.x.x.x (192.x.x.x.x) 5.152 ms 2 10.x.x.x (10.x.x.x.x) 12.767 ms 3 172.x.x.x (172.x.x.x.x) 11.638 ms 4 172.x.x.x (172.x.x.x.x) 13.193 ms 5 xxx.x.x.x.cox.net (68.x.x.x) 20.624 ms 6 xxx.xx.xxx.edgecastcdn.net (192.x.x.x) 56.205 ms 7 xxx.xx.xxx.edgecastcdn.net (192.x.x.x) 24.573 ms 8 * 9 *10 93.x.x.x (93.x.x.x) 22.810 ms11 93.x.x.x (93.x.x.x) 20.235 ms
En el ejemplo anterior, las opciones seleccionadas son esperar tres segundos (en lugar de cinco), enviar solo una consulta a cada salto (en lugar de tres), limitar el número máximo de saltos a 16 antes de darse por vencido (en lugar de 30), con example.com como host final. En las líneas 8 y 9 (TTL 8 y 9) muestra asteriscos donde el enrutador no respondió dentro del tiempo de espera.
Traceroute se puede usar para ayudar a identificar definiciones de tablas de enrutamiento incorrectas o firewalls que pueden estar bloqueando el tráfico ICMP, o UDP de puerto alto en ping de Unix, a un sitio. Una respuesta correcta de traceroute no garantiza la conectividad para las aplicaciones, ya que un firewall puede permitir paquetes ICMP pero no permitir paquetes de otros protocolos.
Los evaluadores de penetración también utilizan Traceroute para recopilar información sobre la infraestructura de la red y los rangos de direcciones IP en torno a un host determinado.
También se puede usar al descargar datos, y si hay varios espejos disponibles para el mismo dato, se puede rastrear cada espejo para tener una idea de qué espejo sería el más rápido de usar.
Orígenes
La página del manual de traceroute indica que el programa traceroute original fue escrito por Van Jacobson en 1987 a partir de una sugerencia de Steve Deering, con sugerencias o correcciones particularmente convincentes de C. Philip Wood, Tim Seaver y Ken Adelman. El autor del programa ping, Mike Muuss, afirma en su sitio web que traceroute se escribió utilizando el soporte ICMP del kernel que había codificado anteriormente para habilitar sockets ICMP sin procesar cuando escribió el programa ping por primera vez.
Limitaciones
Las limitaciones de Traceroute son bien conocidas y deben tenerse en cuenta al usar la herramienta. Por ejemplo, traceroute no descubre rutas a nivel de enrutador, sino a nivel de interfaz. Otra limitación aparece cuando los enrutadores no responden a las sondas o cuando los enrutadores tienen un límite para las respuestas ICMP. En presencia de equilibrio de carga de tráfico, traceroute puede indicar una ruta que en realidad no existe; para minimizar este problema existe una modificación de traceroute llamada Paris-traceroute, que mantiene el identificador de flujo de las sondas para evitar balanceo de carga.
Contenido relacionado
Ceceo común
XML
KOMPILER