¿Traceroute utiliza UDP o ICMP o ambos?

24

Cuando hago un seguimiento en el dominio www.google.com desde mi computadora portátil, ¿estoy usando icmp o udp?
Pensé que era icmp tipo 11, pero mientras buscaba algo más, encontré reglas donde se usaba icmp tipo 30 y vi reglas donde se usaba udp.
¿Alguien puede explicarme cómo funciona?
Estoy trabajando en un firewall (iptables) para un servidor virtual dedicado.

Kris
fuente

Respuestas:

26

El tipo de paquete que se envía varía según la implementación. De manera predeterminada, Windows tracertusa ICMP y tanto Mac OS X como Linux tracerouteusan UDP. No tengo máquinas BSD o Solaris ni ningún otro sistema operativo disponible para verificar, pero la página del manual para la versión de Mac OS X menciona que su procedencia es BSD 4.3.

Las versiones de Mac y Linux que tengo ofrecen la posibilidad de elegir una variedad de protocolos diferentes, incluidos los paquetes ICMP, TCP, UDP y GRE. Se pueden especificar otros protocolos por su nombre o número, pero traceroute no sabe nada sobre cómo funcionan otros protocolos. Simplemente los envía ciegamente.

También pueden cambiar la carga útil y los puertos de origen y destino para evitar firewalls o descubrir qué enrutador a lo largo de la ruta deja caer paquetes de cierto tamaño.

Todas las versiones de traceroute se basan en respuestas ICMP tipo 11 (Tiempo excedido) de cada salto a lo largo de la ruta. Si su firewall está bloqueando las respuestas ICMP tipo 11, traceroute no funcionará. Estos paquetes son entrantes, no salientes.

El ICMP tipo 30 está específicamente designado para traceroute y está etiquetado como "Solicitud de información". No he podido encontrar ningún lugar donde realmente se use esto. La página de manual para las versiones de Mac OS X y Linux dice que -Ienviará ICMP tipo 8 (solicitud de eco). Wikipedia dice que Windows tracerttambién usa solicitudes de eco ICMP. ICMP tipo 30 o tipo 8 son paquetes salientes, no entrantes.

El ICMP tipo 0 (respuesta de eco) puede volver como el último paquete cuando el TTL es exactamente igual al número de saltos. Traceroute sabrá que ha terminado cuando reciba uno de estos. Este es un paquete entrante.

Los paquetes TCP SYN provocarán un RSTpaquete o un SYN ACKpaquete en respuesta cuando lleguen a su destino. Si recibe un SYN ACKpaquete, es cortés seguir con un RSTpaquete para no dejar una conexión entreabierta en el servidor.

Es posible obtener respuestas ICMP tipo 3 código 4 en lugar de respuestas ICMP tipo 11 si envía un paquete grande con el conjunto de indicadores "No fragmentar", sin embargo, es probable que esto solo le permita encontrar el salto con la MTU más pequeña . Normalmente solo obtendrá este tipo de respuesta de un salto a lo largo de la ruta. No todos ellos.

Ladadadada
fuente
8

Traceroute tradicional utiliza UDP en puertos de incremento para cada salto.

Puede usar cualquier tipo de paquete para implementarlo: ICMP, TCP SYN, etc. Todo lo que necesita es que el paquete IP caduque y usted es dorado.

Varias implementaciones, como MacOS, ofrecen soporte para múltiples tipos de traceroute, así como modos que no incrementan los puertos, etc., para evitar las restricciones del firewall.

Daniel Pittman
fuente
77
El puerto UDP predeterminado en la implementación tipo Unix es de 33434 a 33534. Las implementaciones de ICMP utilizan una "solicitud de eco" (tipo 8).
Ouki