Puedes utilizar Linux traceroute
comando para detectar el tramo lento del viaje de un paquete de red y arreglar problemas de conexiones de red lentas. ¡Te mostraremos cómo!
Cómo funciona traceroute
Cuando aprecias como traceroute
funciona, facilita mucho la comprensión de los resultados. Cuanto más complicada es la ruta paquete de red tiene que tomar para llegar a su destino, más difícil es identificar dónde podría estar ocurriendo cualquier desaceleración.
Una pequeña organización Red de área local (LAN) podría 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 posteriormente encuentra (y es reenviado y enrutado por) una gran cantidad de hardware, como enrutadores y pasarelas.
Los encabezados de los metadatos de los paquetes de datos describen su longitud, de dónde provienen, adónde van, el protocolo que usan, etc. La especificación del protocolo establece 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 para vivir (TTL), que contiene un valor entero de ocho bits. Pese a lo que sugiere el nombre, representa un recuento, no una duración.
Un paquete viaja desde su origen hasta su destino a través de un enrutador. Cada vez que el paquete llega a un enrutador, disminuye el contador TTL. Si el valor TTL alguna vez llega a uno, el enrutador que recibe el paquete disminuye el valor y nota que ahora es cero. Después, el paquete se descarta y no se reenvía al siguiente salto de su viaje debido a que se ha agotado el tiempo de espera.
El enrutador envía un Protocolo de control de mensajes de Internet (ICMP) Tiempo excedido mensaje de regreso al origen del paquete para informarle que se agotó el tiempo de espera del paquete. El mensaje Tiempo excedido contiene el encabezado original y los primeros 64 bits de los datos del paquete original. Esto se establece en la página seis de Solicitud de comentarios 792.
Por lo tanto si traceroute
envía un paquete, pero posteriormente establece el valor TTL en uno, el paquete solo llegará hasta el primer enrutador antes de ser descartado. Recibirá un mensaje de tiempo ICMP excedido del enrutador y puede registrar el tiempo que tomó el viaje de ida y vuelta.
Después 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 procedimiento se repite hasta que se cumple el destino o se prueba el número máximo de saltos (30, por defecto).
Algunos enrutadores no funcionan bien
Algunos enrutadores disponen errores. Intentan reenviar paquetes con un TTL de cero en lugar de descartarlos y generar un mensaje de tiempo excedido ICMP.
De acuerdo a Cisco, algunos proveedores de servicios de Internet (ISP) limitan la cantidad de mensajes ICMP que transmiten sus enrutadores.
Algunos dispositivos están configurados para no enviar nunca paquetes ICMP. A menudo, esto se hace para garantizar que el dispositivo no pueda ser coaccionado involuntariamente para que participe en una denegación de servicio distribuida, como un ataque de los pitufos.
traceroute
tiene un tiempo de espera predeterminado para respuestas de cinco segundos. Si no recibe una respuesta dentro de esos cinco segundos, se abandona el intento. Esto significa que se ignoran las respuestas de enrutadores muy lentos.
Instalación de traceroute
traceroute
ya estaba instalado en Fedora 31 pero debe instalarse en Manjaro 18.1 y Ubuntu 18.04. Instalar traceroute
en Manjaro use el siguiente comando:
sudo pacman -Sy traceroute
Instalar traceroute
en Ubuntu, use el siguiente comando:
sudo apt-get install traceroute
Usando traceroute
Como cubrimos arriba, traceroute's
El propósito es obtener una respuesta del enrutador en cada salto desde su computadora al destino. Algunos pueden ser callados y no revelar nada, mientras que otros probablemente derramarán los frijoles sin escrúpulos.
Como ejemplo, ejecutaremos un traceroute
al Castillo de Blarney portal web en Irlanda, hogar de los famosos Piedra de Blarney. Cuenta la leyenda que si besas la Piedra de Blarney, serás bendecido con el «don de la palabra». Esperemos que los enrutadores que encontremos en el camino sean lo suficientemente locuaces.
Escribimos el siguiente comando:
traceroute www.blarneycastle.ie
La primera línea nos da la próxima información:
- El destino y su dirección IP.
- El número de saltos
traceroute
Lo intentaré antes de rendirse. - El tamaño de los paquetes UDP que enviamos.
Todas las demás líneas contienen información sobre uno de los saltos. A pesar de esto, antes de profundizar en los detalles, podemos ver que hay 11 saltos entre nuestra computadora y el portal web del Castillo de Blarney. El salto 11 además 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ó el viaje de ida y vuelta para cada una de las tres pruebas. Si hay un asterisco aquí, significa que no hubo respuesta para esa prueba. Si el dispositivo no responde en absoluto, verá tres asteriscos y ningún nombre o dirección IP del dispositivo.
Repasemos lo que tenemos a continuación:
- Salto 1: El primer puerto de escala (sin juego de palabras) es el enrutador DrayTek Vigor en la red local. Así es como nuestros paquetes UDP salen de la red local y se conectan a Internet.
- Salto 2: Este dispositivo no respondió. Tal vez estaba configurado para no enviar nunca paquetes ICMP. O tal vez respondió, pero fue demasiado lento, por lo que
traceroute
desconectado. - 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 la pérdida de paquetes.
- Lúpulo 4 y 5: Saltos más anónimos.
- Salto 6: Aquí hay mucho texto debido a que un dispositivo remoto distinto 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 «muy poblada» en la que hay una gran cantidad de 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 eso, sería un pequeño milagro si la misma pieza de hardware remoto manejara nuestras tres solicitudes de conexión.
- Salto 7: Este es el salto que hicieron nuestros paquetes UDP cuando salieron de la red de los ISP.
- Salto 8: Nuevamente, 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: Llegamos al portal web del Castillo de Blarney. El castillo está en Cork, Irlanda, pero, según Geolocalización de direcciones IP, el portal 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 absolutamente anónimos.
A pesar de esto, llegamos al destino, sabemos que están a 11 saltos de distancia y el tiempo de ida y vuelta para el viaje fue de 13,773 y 14,715 milisegundos.
Esconder nombres de dispositivos
Como hemos visto, a veces la inclusión de nombres de dispositivos conduce a una pantalla desordenada. Para que sea más fácil ver los datos, puede usar 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 números grandes para 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, de todos modos.
A pesar de esto, si estuviera investigando su red corporativa, valdría la pena profundizar un poco más en ese nodo.
Configuración del valor de tiempo de espera de traceroute
Tal vez si ampliamos el tiempo de espera predeterminado (cinco segundos), obtendremos más respuestas. Para hacer esto, usaremos el -w
(tiempo de espera) para cambiarlo a siete segundos. (Tenga en cuenta que este es un número de punto flotante).
Escribimos el siguiente comando:
traceroute -w 7.0 blarneycastle.ie
Eso no supuso una gran diferencia, por lo que es probable que las respuestas se estén agotando. Es probable que los saltos anónimos estén siendo deliberadamente reservados.
Configuración del número de pruebas
Por defecto, traceroute
envía tres paquetes UDP a cada salto. Podemos utilizar el -q
(número de consultas) para ajustar esto hacia arriba o hacia abajo.
Para acelerar el traceroute
prueba, escribimos lo siguiente para reducir el número de paquetes de sondeo UDP que enviamos a uno:
traceroute -q 1 blarneycastle.ie
Esto envía una única sonda a cada salto.
Configuración del valor TTL inicial
Podemos determinar el valor inicial de TTL en algo distinto a uno y omitir algunos saltos. Por lo general, los valores de TTL se establecen en uno para el primer conjunto de pruebas, dos para el siguiente conjunto de pruebas, y así sucesivamente. Si lo configuramos en cinco, la primera prueba intentará llegar al salto cinco y omitir los saltos del uno al cuatro.
Como sabemos que el portal web del Castillo de Blarney está a 11 saltos de esta computadora, escribimos lo siguiente para ir de forma directa al Salto 11:
traceroute -f 11 blarneycastle.ie
Eso nos da un reporte agradable y condensado sobre el estado de la conexión con el destino.
Se 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 además tiene tracert
comando que funciona de manera semejante.
A pesar de esto, 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 colocar en una red puede afectar negativamente a su rendimiento. A menos que se encuentre en una situación de arreglarlo ahora, es factible que desee usarlo fuera del horario comercial normal.