Saltar al contenido
🛠️ToolsShed

Traceroute Reference

Referencia completa de comando traceroute para Linux, macOS y Windows.

Comando

traceroute <host>

Banderas

BanderaDescripción
-nDo not resolve hostnames (faster)
-m <hops>Set maximum hops (default: 30)
-w <sec>Wait time per probe (default: 5s)
-q <n>Number of probes per hop (default: 3)
-IUse ICMP ECHO instead of UDP
-TUse TCP SYN (requires root)
-p <port>Destination port for UDP/TCP
-i <iface>Use specified network interface
-s <src>Use specified source address
-4 / -6Force IPv4 or IPv6

Ejemplos

traceroute google.com

Basic traceroute to a host

traceroute -n 8.8.8.8

Traceroute without DNS resolution

traceroute -m 15 example.com

Limit to 15 hops maximum

traceroute -I google.com

Use ICMP instead of UDP

sudo traceroute -T -p 80 example.com

TCP traceroute on port 80

Cómo funciona

Traceroute asigna la ruta de red desde tu computadora al host de destino. Envía paquetes con valores TTL (Tiempo de Vida) crecientes y registra la respuesta de cada enrutador, mostrando la dirección IP y el tiempo de respuesta en cada salto. Esto ayuda a diagnosticar problemas de conectividad de red y comprender las rutas de enrutamiento.

Acerca de esta herramienta

Traceroute es una herramienta de diagnóstico que mapea la ruta de red que recorren los paquetes de datos desde tu computadora hasta un host de destino, mostrando cada salto de router intermedio y el tiempo que tarda en llegar a cada uno. Entender cómo viajan los datos a través de Internet es crucial para administradores de red, desarrolladores y profesionales de TI que necesitan diagnosticar problemas de conectividad, identificar problemas de latencia o entender el comportamiento del enrutamiento. Esta Referencia de Traceroute proporciona una guía de comandos completa para sistemas Linux, macOS y Windows, cubriendo la sintaxis, opciones y ejemplos del mundo real para cada plataforma.

Simplemente busca el comando traceroute para tu sistema operativo y explora las explicaciones detalladas de las opciones disponibles—ya sea que necesites ajustar el tamaño del paquete, cambiar los saltos máximos, establecer números de puerto específicos o configurar valores de tiempo de espera. Ya sea que estés solucionando problemas de una conexión lenta a un servidor remoto, investigando por qué los paquetes se están descartando en un salto particular, o documentando la topología de red para la planificación de infraestructura, esta referencia proporciona orientación práctica sin complejidad innecesaria.

Los profesionales de red, administradores de sistemas, especialistas en ciberseguridad e ingenieros de nube se basan en traceroute como parte de su conjunto de herramientas de diagnóstico. Esta herramienta es esencial para cualquier persona responsable de mantener una conectividad de red confiable, respaldar sistemas de producción o investigar problemas en entornos de red de múltiples saltos.

Preguntas Frecuentes

Implementación de Código

import subprocess
import platform
import re

def traceroute(host: str, max_hops: int = 30) -> list[dict]:
    """Run traceroute and parse output."""
    system = platform.system()
    if system == "Windows":
        cmd = ["tracert", "-h", str(max_hops), host]
    else:
        cmd = ["traceroute", "-m", str(max_hops), host]

    result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
    lines = result.stdout.splitlines()
    hops = []
    for line in lines[1:]:  # skip header
        # Parse hop number and RTT values
        match = re.match(r"\s*(\d+)\s+(.+)", line)
        if match:
            hop_num = int(match.group(1))
            rest = match.group(2)
            times = re.findall(r"([\d.]+)\s*ms", rest)
            hostname = re.search(r"([\w.-]+)\s+\(", rest)
            hops.append({
                "hop": hop_num,
                "host": hostname.group(1) if hostname else "*",
                "times_ms": [float(t) for t in times],
            })
    return hops

hops = traceroute("google.com", max_hops=15)
for hop in hops:
    avg = sum(hop["times_ms"]) / len(hop["times_ms"]) if hop["times_ms"] else None
    avg_str = f"{avg:.1f} ms" if avg else "*"
    print(f"{hop['hop']:2d}  {hop['host']:<40} {avg_str}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.