¿Por qué traceroute muestra muchas direcciones IP para el mismo salto?

14

Aquí está la ruta de mi casa a sina.com.cn.

 traceroute -n   sina.com.cn
traceroute to sina.com.cn (202.108.33.60), 30 hops max, 60 byte packets
 1  192.168.31.1  0.476 ms  0.587 ms  0.695 ms
 2  140.0.5.1  2.557 ms  2.699 ms  3.065 ms
 3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms
 4  * 221.11.156.18  26.480 ms 221.11.165.233  22.950 ms
 5  219.158.9.97  14.176 ms * 219.158.19.149  21.472 ms
 6  219.158.9.97  18.142 ms 219.158.8.81  44.856 ms  52.539 ms
 7  124.65.194.190  53.162 ms 219.158.8.81  50.614 ms 124.65.194.190  47.266 ms
 8  124.65.194.190  50.760 ms 61.148.143.26  49.351 ms  53.515 ms
 9  210.74.176.138  43.056 ms  43.286 ms 61.148.143.26  53.712 ms
10  202.108.33.60  46.385 ms 210.74.176.138  42.896 ms  46.931 ms

192.168.31.1 es el enrutador de mi casa.
140.0.5.1 es mi IP pública que proporciona el ISP.

curl  ifconfig.me
140.0.5.1 

En la tercera línea, dice

3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms

¿Por qué hay dos direcciones IP 221.11.155.65 y 221.11.165? Qué significa eso?

¿Salta el paquete de 140.0.5.1 a 221.11.155.65, luego salta de 221.11.155.65 a 221.11.165?

tembloroso
fuente
Una aclaración Si el ISP le ha dado una dirección IP, no debe aparecer en los comandos de traceroute que ejecuta. Y si tuviera que hacer un trazado de ruta a la dirección IP, aparecería como el salto 1. Lo más probable es que no tenga ninguna dirección IP y 140.0.5.1sea ​​algún tipo de CGN que se comporte de una manera un poco inusual.
kasperd

Respuestas:

4

Lo que hace traceroute es usar los campos de opción, ya que envía paquetes de protocolo de mensajes de control de Internet (icmp). Cada puerta de enlace o punto de enrutamiento en la red lee los paquetes en una interfaz, decide a dónde deben ir y los escribe en otra interfaz. Esa interfaz está presumiblemente más cerca del destino. Mientras el enrutador reenvía el paquete, también realiza modificaciones en el encabezado del paquete. Reduce el "tiempo de vida" o el campo de conteo de saltos en uno. Cada puerta de enlace en la ruta del paquete hacia el destino disminuye este campo.

Cuando el campo de conteo de saltos cae a cero, muchos enrutadores enviarán un mensaje icmp que indica dónde se cayó el paquete. Para encontrar qué dirección IP está a una distancia específica, traceroute enviará paquetes con las opciones de tiempo de vida y me dará una respuesta cuando se agote el tiempo. los mensajes con conteo de saltos comenzando en 1 y aumentando gradualmente cada uno devolverá la dirección IP de enrutadores progresivamente más distantes. Debido a que traceroute hace esto varias veces, va a recuperar (si tiene una red muy conectada, como es Internet) múltiples respuestas en algunos de los aspectos. Puede darse el caso de que una puerta de enlace particular responda a diferentes cantidades de distancia porque la ruta a esa puerta de enlace pasó por diferentes saltos.

AncianoAyuda
fuente
11

Lo que traceroutele damos aquí como información es que tiene al menos 2 rutas para llegar a su destino desde el enrutador:

           IP adresses                 Internet operator

           140.0.5.1                   Firstmedia - Indonesia
             /    \
            /      \
221.11.155.65      221.11.165.9        China Unicom - China

Esta es una situación normal para un gran operador de Internet: tener muchas rutas para resistir los incidentes normales en Internet.

La -aopción de traceroutepuede ayudarlo a identificar a qué operador pertenece cada dirección IP.

Aquí hay un ejemplo de un árbol más grande de rutas que puede obtener incluso desde su teléfono móvil a través de una herramienta de red como el servidor http://ping.eu/traceroute/ : traceroute a 140.0.5.1

dan
fuente
No, una opción para mi traceroute en debian9.
Scrapy
traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate, ...] [-i dispositivo] [-m max_ttl] [-p puerto] [-s src_addr] [-q nqueries] [-N squeries] [ -t tos] [-l etiqueta_flujo] [-w tiempos de espera] [-z sendwait] [-UL] [-D] [-P proto] [--sport = puerto] [-M método] [-O mod_options] [ --mtu] [--back] host [paquete_len]
scrapy
Estaba usando el FreeBSD aquí.
dan
8

Del traceroute(8)manual en OpenBSD:

Se -q envían tres sondas (el número exacto se puede cambiar usando la opción) y se imprime una línea que muestra el límite TTL o de salto, la dirección de la puerta de enlace y el tiempo de ida y vuelta de cada sonda. Si las respuestas de la sonda provienen de diferentes puertas de enlace, se imprimirá la dirección de cada sistema de respuesta.

El manual de Linux tendrá una redacción similar.

Las múltiples direcciones IP que ve son las puertas de enlace que responden a las sondas individuales en límites de salto específicos.

En su caso, las tres sondas dieron como resultado respuestas que, en el límite de salto 3, volvieron a usted desde las puertas de enlace al 221.11.155.65 y al 221.11.165.9.

Entonces, la respuesta es: No, el paquete no salta entre los dos hosts enumerados en esa línea, se envían tres sondas y toman dos rutas diferentes desde 140.0.5.1.

Kusalananda
fuente
1
@RuiFRibeiro He aclarado mi respuesta para responder la pregunta explícita que se hace.
Kusalananda
De hecho, lo confirmé, al menos en Debian traceroute tiene la misma redacción.
Rui F Ribeiro