Puedes usar linux traceroute
para detectar el tramo lento del viaje de un paquete de red y solucionar problemas de conexiones de red lentas. ¡Te mostraremos cómo!
¿De qué vamos a hablar?
Cómo funciona traceroute
Cuando aprecias cómo traceroute
funciona, hace que la comprensión de los resultados sea mucho más fácil. Cuanto más complicada sea la ruta a paquete de red tiene que tardar en llegar a su destino, cuanto más difícil es identificar dónde podrían estar ocurriendo las desaceleraciones.
Una pequeña organización red de área local (LAN) puede ser relativamente simple. Probablemente tendrá al menos un servidor y un enrutador o dos. La complejidad aumenta en un red de área amplia (WAN) que se comunica entre diferentes ubicaciones o a través de Internet. Su paquete de red luego encuentra (y es reenviado y enrutado por) una gran cantidad de hardware, como enrutadores y Gateways.
Los encabezados de los metadatos en los paquetes de datos describen su longitud, de dónde provienen, a dónde van, el protocolo que está utilizando, etc. La especificación del protocolo define el encabezado. Si puede identificar el protocolo, puede determinar el inicio y el final de cada campo en el encabezado y leer los metadatos.
traceroute
utiliza el TCP/IP conjunto de protocolos, y envía Protocolo de datagramas de usuario Paquetes. El encabezado contiene el Tiempo de vivir (TTL), que contiene un valor entero de ocho bits. A pesar de lo que su nombre sugiere, representa un conteo, no una duración.
Un paquete viaja desde su origen hasta su destino a través de un router. Cada vez que el paquete llega a un router, disminuye el contador TTL. Si el valor TTL alguna vez alcanza uno, el enrutador que recibe el paquete disminuye el valor y nota que ahora es cero. El paquete se descarta y no se reenvía al siguiente salto de su viaje porque se ha “cronometrado”.
El router envía un Protocolo de control de mensajes de Internet (ICMP) Tiempo excedido mensaje de vuelta al origen del paquete para hacerle saber que el paquete se ha quedo fuera de tiempo. El mensaje Tiempo excedido contiene el encabezado original y los primeros 64 bits de los datos del paquete original. Esto se define en la página seis de Solicitud de comentarios 792.
Entonces, si traceroute
envía un paquete, pero luego establece el valor TTL en uno, el paquete solo llegará hasta el primer enrutador antes de que se descarte. Recibirá un mensaje de tiempo excedido ICMP del enrutador y puede registrar el tiempo que tardó el viaje de ida y vuelta.
Luego repite el ejercicio con TTL establecido en 2, que fallará después de dos saltos. traceroute
aumenta el TTL a tres y vuelve a intentarlo. Este proceso se repite hasta que se alcanza el destino o se prueba el número máximo de saltos (30, de forma predeterminada).
Algunos routers no funcionan bien
Algunos routers tienen bugs. Intentan reenviar paquetes con un TTL de cero en lugar de descartarlos y generar un mensaje de tiempo excedido ICMP.
Según Cisco, algunos proveedores de servicios de Internet (ISP) limitan la velocidad del número de mensajes ICMP que transmiten sus routers.
Algunos dispositivos están configurados para nunca enviar paquetes ICMP. Esto es a menudo para garantizar que el dispositivo no pueda ser coaccionado involuntariamente para participar en un denegación de servicio distribuida, como un ataque pitufo.
traceroute
tiene un tiempo de espera predeterminado para las respuestas de cinco segundos. Si no recibe una respuesta dentro de esos cinco segundos, el intento se abandona. Esto significa que las respuestas de los routers muy lentos son ignoradas.
Instalación de traceroute
traceroute
ya estaba instalado en Fedora 31 pero tiene que estar instalado en Manjaro 18.1 y Ubuntu 18.04. Para instalar traceroute
en Manjaro use el siguiente comando:
sudo pacman -Sy traceroute
Para instalar traceroute
en Ubuntu, use el siguiente comando:
sudo apt-get install traceroute
Uso de traceroute
Como cubrimos anteriormente, traceroute's
El propósito es obtener una respuesta del enrutador en cada salto desde su computadora hasta el destino. Algunos pueden tener los labios apretados y no regalar nada, mientras que otros probablemente derramarán los frijoles sin reparos.
Como ejemplo, ejecutaremos un traceroute
al Castillo de Blarney sitio web en Irlanda, hogar de los famosos Piedra de Blarney. La leyenda dice que si besas la Piedra blarney serás bendecido con el “regalo del gab”. Esperemos que los routers que encontramos en el camino sean convenientemente garrulosos.
Escribimos el siguiente comando:
traceroute www.blarneycastle.ie
La primera línea nos da la siguiente información:
- El destino ay su dirección IP.
- El número de lúpulos
traceroute
lo intentará antes de darse por vencido. - El tamaño de los paquetes UDP que estamos enviando.
Todas las demás líneas contienen información sobre uno de los lúpulos. Sin embargo, antes de profundizar en los detalles, podemos ver que hay 11 saltos entre nuestra computadora y el sitio web de Blarney Castle. Hop 11 también nos dice que llegamos a nuestro destino.
El formato de cada línea de salto es el siguiente:
- El nombre del dispositivo o, si el dispositivo no se identifica, la dirección IP.
- La dirección IP.
- El tiempo que tomó ida y vuelta para cada una de las tres pruebas. Si hay un asterisco aquí, significa que no hubo una respuesta para esa prueba. Si el dispositivo no responde en absoluto, verá tres asteriscos y ningún nombre de dispositivo o dirección IP.
Repasemos lo que tenemos a continuación:
- Salto 1: El primer puerto de llamada (sin juego de palabras) es el Router DrayTek Vigor en la red local. Así es como nuestros paquetes UDP salen de la red local y se ponen en Internet.
- Salto 2: Este dispositivo no respondió. Tal vez se configuró para nunca enviar paquetes ICMP. O tal vez respondió pero fue demasiado lento, así que
traceroute
tiempo de salida. - Salto 3: Un dispositivo respondió, pero no obtuvimos su nombre, solo la dirección IP. Tenga en cuenta que hay un asterisco en esta línea, lo que significa que no obtuvimos una respuesta a las tres solicitudes. Esto podría indicar pérdida de paquetes.
- Lúpulo 4 y 5: Más saltos anónimos.
- Salto 6: Hay mucho texto aquí porque un dispositivo remoto diferente manejó cada una de nuestras tres solicitudes UDP. Se imprimieron los nombres (bastante largos) y las direcciones IP de cada dispositivo. Esto puede suceder cuando se encuentra con una red “ricamente poblada” en la que hay mucho hardware para manejar grandes volúmenes de tráfico. Este salto se encuentra dentro de uno de los ISP más grandes del Reino Unido. Por lo tanto, sería un milagro menor si la misma pieza de hardware remoto manejara nuestras tres solicitudes de conexión.
- Salto 7: Este es el salto que nuestros paquetes UDP hicieron cuando salieron de la red de ISP.
- Salto 8: Una vez más, obtenemos una dirección IP pero no el nombre del dispositivo. Las tres pruebas regresaron con éxito.
- Lúpulo 9 y 10: Dos saltos anónimos más.
- Salto 11: Hemos llegado al sitio web del Castillo de Blarney. El castillo está en Cork, Irlanda, pero, según Geolocalización de direcciones IP, el sitio web está en Londres.
Entonces, fue una bolsa mixta. Algunos dispositivos jugaron a la pelota, algunos respondieron pero no nos dijeron sus nombres, y otros permanecieron completamente anónimos.
Sin embargo, llegamos al destino, sabemos que está a 11 saltos de distancia, y el tiempo de ida y vuelta para el viaje fue de 13.773 y 14.715 milisegundos.
Ocultar nombres de dispositivos
Como hemos visto, a veces incluir nombres de dispositivos conduce a una pantalla desordenada. Para que sea más fácil ver los datos, puede utilizar el -n
(sin mapeo) opción.
Para hacer esto con nuestro ejemplo, escribimos lo siguiente:
traceroute -n blarneycastle.ie
Esto hace que sea más fácil elegir grandes números para los tiempos de ida y vuelta que podrían indicar un cuello de botella.
Hop 3 está empezando a parecer un poco sospechoso. La última vez, solo respondió dos veces, y esta vez, solo respondió una vez. En este escenario, está fuera de nuestro control, por supuesto.
Sin embargo, si estuviera investigando su red corporativa, valdría la pena profundizar un poco más en ese nodo.
Establecer el valor de tiempo de espera de traceroute
Quizás si extendemos el período de tiempo de espera predeterminado (cinco segundos), obtendremos más respuestas. Para ello, utilizaremos el -w
(tiempo de espera) opción para cambiarlo a siete segundos. (Tenga en cuenta que este es un número de coma flotante).
Escribimos el siguiente comando:
traceroute -w 7.0 blarneycastle.ie
Eso no hizo mucha diferencia, por lo que las respuestas probablemente se estén agotando. Es probable que los saltos anónimos estén siendo deliberadamente secretos.
Establecer el número de pruebas
De forma predeterminada, traceroute
envía tres paquetes UDP a cada salto. Podemos utilizar el -q
(número de consultas) opción para ajustar esto hacia arriba o hacia abajo.
Para acelerar el traceroute
test, escribimos lo siguiente para reducir el número de paquetes de sonda UDP que enviamos a uno:
traceroute -q 1 blarneycastle.ie
Esto envía una sola sonda a cada salto.
Establecer el valor TTL inicial
Podemos establecer el valor inicial de TTL en algo que no sea uno, y omitir algunos saltos. Por lo general, los valores TTL se establecen en uno para el primer conjunto de pruebas, dos para el siguiente conjunto de pruebas, etc. Si lo establecemos en cinco, la primera prueba intentará llegar a saltar cinco y omitir saltos del uno al cuatro.
Porque sabemos que el sitio web del Castillo de Blarney es 11 hops desde esta computadora, escribimos lo siguiente para ir directamente al salto 11:
traceroute -f 11 blarneycastle.ie
Eso nos da un informe agradable y condensado sobre el estado de la conexión con el destino.
Sé considerado
traceroute
es una gran herramienta para investigar el enrutamiento de la red, verificar las velocidades de conexión o identificar cuellos de botella. Windows también tiene un tracert
que funciona de manera similar.
Sin embargo, no desea bombardear dispositivos desconocidos con torrentes de paquetes UDP, y tenga cuidado de incluir traceroute
en scripts o trabajos desatendidos.
La carga traceroute
puede colocarse en una red puede afectar negativamente su rendimiento. A menos que se encuentre en una situación de solución ahora, es posible que desee usarlo fuera del horario comercial normal.