Esta guía le enseñará a usar MTR (My Traceroute) y Traceroute para diagnosticar problemas de conectividad de red, identificar puntos de latencia y analizar la calidad de su conexión.
📋 Requisitos previos
- Un servidor VPS con acceso root o sudo
- Una conexión SSH activa
- Ubuntu/Debian (los comandos están adaptados a estas distribuciones)
🔧 Instalación
Instalar Traceroute (herramienta básica)
Bash# On Ubuntu/Debian sudo apt update sudo apt install traceroute -y
Instalar MTR (herramienta avanzada)
MTR combina las funcionalidades de ping y traceroute en una sola herramienta potente.
Bash1# On Ubuntu/Debian 2sudo apt update 3sudo apt install mtr-tiny -y 4 5# For the full version with graphical interface (optional) 6sudo apt install mtr -y
Verificar la instalación
Bash1# Verify that traceroute is installed 2traceroute --version 3 4# Verify that MTR is installed 5mtr --version
🛠️ Uso de Traceroute
Comando básico
Bash1# Traceroute to a destination 2traceroute google.com 3 4# Traceroute to an IP 5traceroute 8.8.8.8 6 7# Limit the number of hops (default 30) 8traceroute -m 20 google.com 9 10# Specify timeout in seconds 11traceroute -w 5 google.com
Opciones útiles
Bash1# Use UDP (default) 2traceroute -U google.com 3 4# Use TCP (more reliable) 5traceroute -T google.com 6 7# Use ICMP (like ping) 8traceroute -I google.com 9 10# Don't resolve DNS names (faster) 11traceroute -n google.com
Ejemplo de salida
traceroute to google.com (142.250.185.14), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 0.123 ms 0.089 ms 0.067 ms
2 192.168.1.1 (192.168.1.1) 5.234 ms 5.189 ms 5.145 ms
3 * * *
4 8.8.8.8 (8.8.8.8) 12.456 ms 12.389 ms 12.334 ms
...
🚀 Uso de MTR (Recomendado)
MTR es más potente porque envía paquetes de forma continua y calcula estadísticas en tiempo real.
Comando básico
Bash1# MTR in interactive mode (recommended) 2mtr google.com 3 4# MTR with report (non-interactive) 5mtr --report google.com 6 7# MTR with 10 test packets 8mtr --report --report-cycles 10 google.com 9 10# MTR to an IP 11mtr --report 8.8.8.8
Opciones avanzadas
Bash1# Specify the number of packets to send 2mtr --report --report-cycles 50 google.com 3 4# Use TCP instead of ICMP 5mtr --tcp --port 80 google.com 6 7# Use UDP 8mtr --udp --port 53 8.8.8.8 9 10# Don't resolve DNS names 11mtr --no-dns google.com 12 13# Interval between packets (in seconds) 14mtr --interval 2 google.com 15 16# Packet size (in bytes) 17mtr --psize 64 google.com
Modo interactivo de MTR
Cuando lanza mtr sin la opción --report, entra en modo interactivo:
- d : Mostrar/ocultar estadísticas detalladas
- n : Activar/desactivar modo DNS (resolución de nombres)
- r : Restablecer estadísticas
- s : Cambiar tamaño de paquete
- j : Cambiar intervalo entre paquetes
- q : Salir de MTR
📊 Interpretación de resultados
Latencia normal
- < 50 ms : Excelente, red local o muy cercana
- 50-100 ms : Buena, conexión regional
- 100-200 ms : Aceptable, conexión intercontinental
- > 200 ms : Alta, puede causar problemas
Pérdida de paquetes
- 0% : Perfecta
- < 1% : Normal para una conexión a Internet
- 1-5% : Aceptable pero puede causar problemas
- > 5% : Problemática, requiere investigación
Significado de los asteriscos (*)
En traceroute, un * significa:
- Un solo * en lugar de un tiempo : El router no respondió a ese paquete concreto
- Tres * consecutivos : El router no respondió en absoluto (timeout o filtro de firewall)
🎯 Casos de uso
Diagnosticar latencia alta
Bash1# Test to Google DNS 2mtr --report --report-cycles 30 8.8.8.8 3 4# Test to Cloudflare DNS 5mtr --report --report-cycles 30 1.1.1.1 6 7# Identify the problematic hop 8mtr --report --report-cycles 50 your-domain.com
Diagnosticar pérdida de paquetes
Bash1# Test with TCP to bypass ICMP filters 2mtr --tcp --port 443 --report --report-cycles 50 google.com 3 4# Test to a specific server 5mtr --report --report-cycles 100 your-server.com
Prueba desde su VPS hacia su ubicación
Bash1# Test to your public IP address 2# Get your public IP first 3curl ifconfig.me 4 5# Then test from your VPS 6mtr --report --report-cycles 30 YOUR_PUBLIC_IP
🔍 Solución de problemas frecuentes
Problema: latencia alta en un salto concreto
Si ve latencia alta en un salto intermedio:
Bash# Test with different protocols mtr --tcp --port 443 --report google.com mtr --udp --port 53 --report 8.8.8.8 mtr --report google.com
Importante: La latencia alta en un salto intermedio puede ser normal si ese router no responde rápidamente a las solicitudes de diagnóstico, pero la latencia final sigue siendo buena.
Problema: pérdida de paquetes significativa
Si ve una pérdida de paquetes elevada:
Bash1# Test with more packets to confirm 2mtr --report --report-cycles 100 destination.com 3 4# Test with TCP if ICMP is filtered 5mtr --tcp --port 80 --report --report-cycles 50 destination.com
Advertencia: Si la pérdida de paquetes aparece en todos los saltos, el problema probablemente está en su VPS o en su conexión local. Si aparece solo en un salto concreto, el problema está en la red entre su VPS y el destino.
Problema: timeouts repetidos
Bash1# Increase timeout 2mtr --timeout 10 --report destination.com 3 4# Test with different protocols 5mtr --tcp --port 443 --timeout 10 --report destination.com
📝 Comandos útiles
Script de diagnóstico completo
Cree un script para probar varios destinos:
Bash1#!/bin/bash 2echo "=== MTR Test to Google DNS ===" 3mtr --report --report-cycles 30 8.8.8.8 4 5echo -e "\n=== MTR Test to Cloudflare DNS ===" 6mtr --report --report-cycles 30 1.1.1.1 7 8echo -e "\n=== MTR Test to your domain ===" 9mtr --report --report-cycles 30 your-domain.com
Guardar resultados
Bash1# Save report to a file 2mtr --report --report-cycles 30 google.com > mtr-report-$(date +%Y%m%d).txt 3 4# With CSV format 5mtr --report --report-cycles 30 --csv google.com > mtr-report.csv
✅ Buenas prácticas
- Use MTR en lugar de traceroute: MTR ofrece estadísticas más completas
- Pruebe varios destinos: compare resultados con distintos servidores
- Ejecute varias pruebas: las redes pueden variar; ejecute pruebas en distintos momentos
- Use TCP si ICMP está filtrado: algunos routers filtran ICMP pero no TCP
- Interprete los resultados correctamente: la latencia alta en un salto intermedio no siempre es un problema si la latencia final es buena
🆘 Solución de problemas
MTR no se muestra correctamente
Bash1# If MTR doesn't work in interactive mode, use report mode 2mtr --report destination.com 3 4# Check MTR version 5mtr --version
Error "mtr: command not found"
Bash1# Reinstall MTR 2sudo apt update 3sudo apt install mtr-tiny -y 4 5# Or install the full version 6sudo apt install mtr -y
Todos los resultados muestran asteriscos
Si todos los saltos muestran *, puede significar:
Bash1# Your firewall is blocking ICMP 2# Test with TCP instead 3mtr --tcp --port 443 --report destination.com 4 5# Check firewall rules 6sudo ufw status 7sudo iptables -L
📚 Recursos adicionales
❓ Preguntas frecuentes
P: ¿Cuál es la diferencia entre Traceroute y MTR?
R: Traceroute envía unos pocos paquetes y muestra los resultados. MTR envía paquetes de forma continua y calcula estadísticas en tiempo real, lo cual es más útil para el diagnóstico.
P: ¿Por qué algunos saltos muestran asteriscos?
R: Significa que el router no respondió. Puede deberse a un filtro de firewall, la configuración del router o simplemente a que el router no responde a solicitudes de diagnóstico.
P: ¿Debo preocuparme por la latencia alta en un salto intermedio?
R: No necesariamente. Si la latencia final al destino es buena, la latencia alta en un salto intermedio puede ser normal. Lo que realmente importa es la latencia final.
P: ¿Cómo interpreto la pérdida de paquetes en MTR?
R: Una pérdida de paquetes < 1% es normal. Entre 1-5%, es aceptable pero puede causar problemas. Por encima del 5%, es problemática y requiere investigación.