Variantes de traceroute de Network Path
La mayoría de los sistemas operativos modernos incluyen una herramienta integrada traceroute
. Por ejemplo, Linux y macOS utilizan el comando traceroute
, mientras que Windows utiliza tracert
. Sin embargo, puedes observar diferentes resultados de estos comandos incluso cuando se ejecutan en la misma red. En este artículo se explican las razones de estas diferencias.
Todas las herramientas de traceroute realizan en general el mismo proceso: envían paquetes con un TTL que crece progresivamente (también conocido como límite de salto), para obtener información sobre cada salto a lo largo de la ruta. Sin embargo, difieren en el tipo de paquete que envían. Hay tres protocolos principales para traceroutes: ICMP, UDP y TCP. traceroute
en Linux y macOS utilizan UDP por defecto, mientras que tracert
en Windows utiliza ICMP. Para ver la lista completa de traceroutes compatibles, consulta la matriz de compatibilidad.
Variante | Soporte de Datadog | Traceroute equivalente | ICMP | | traceroute -I |
UDP | | traceroute |
TCP SYN | | tcptraceroute |
TCP SACK | | Herramientas de terceros |
Normalmente, los responsables oficiales de los paquetes ponen a disposición de los usuarios traceroute
y tcptraceroute
, pero solo traceroute
se instala por defecto.
Variante | Soporte de Datadog | Traceroute equivalente | ICMP | | tracert |
UDP | | Herramientas de terceros |
TCP SYN | | Herramientas de terceros |
TCP SACK | | N/A |
Windows no dispone de herramientas traceroute
de TCP o UDP distribuidas oficialmente. Sin embargo, existen soluciones de terceros como nmap
y tracetcp
.
Variante | Soporte de Datadog | Traceroute equivalente | ICMP | | traceroute -I |
UDP | | traceroute |
TCP SYN | | tcptraceroute (mediante homebrew) |
TCP SACK | | N/A |
Impacto del firewall en las variantes de traceroute
Los firewalls son un factor clave a la hora de elegir qué variante de traceroute utilizar. Por ejemplo, una red podría bloquear todos los paquetes UDP excepto las solicitudes DNS, o un servidor HTTP podría estar configurado para rechazar todo el tráfico entrante (incluidos ICMP y UDP), permitiendo solo conexiones TCP en el puerto 443.
El uso de traceroutes basados en TCP puede ser más efectivo porque coinciden con el protocolo del tráfico normal de la aplicación, aumentando la probabilidad de que los firewalls permitan el paso de los paquetes.
Traceroutes TCP SACK
Aunque los traceroute TCP SYN (sincronización) son útiles, en algunos casos pueden ser bloqueados por los firewalls. Dado que inician conexiones semiabiertas, pueden ser malinterpretadas como avalanchas SYN o escaneos de puertos. Por el contrario, los traceroutes SACK (Reconocimiento selectivo) operan después de que se haya establecido una conexión TCP completa. Utilizan el reconocimiento selectivo para pedir al objetivo que acuse recibo de los paquetes sin requerir la transmisión real de datos.
Los traceroutes SACK sí envían paquetes con datos, pero introducen una brecha deliberada que activa el bloqueo de encabezado de línea, impidiendo que los datos lleguen a la capa de aplicación.
Datadog actualmente solo admite traceroutes TCP SACK en Linux.
Traceroutes ICMP
Todos los traceroutes se basan en paquetes “ICMP TTL Exceeded” (Internet Control Message Protocol Time to Live) para crear una ruta de red. Esto a menudo causa confusión con respecto a lo que define un traceroute ICMP, ya que todas las variantes de traceroute reciben respuestas ICMP. La diferencia clave radica en qué paquetes el traceroute está enviando, no recibiendo.
Un traceroute ICMP envía específicamente paquetes ICMP Echo Request, el mismo tipo utilizado por el comando ping
. Si el TTL (Time to Live) de un paquete es demasiado bajo, un enrutador en la ruta responde con un mensaje ICMP Time Exceeded. En el último salto, la Echo Request llega al destino, que responde con una ICMP Echo Response.
Referencias adicionales
Más enlaces, artículos y documentación útiles: