¿Por qué puedo hacer ping a una dirección IP pero no 'trazarla'?


46

Puedo hacer ping a una dirección IP, pero no puedo rastrearla. ¿Cómo podría ser esto?

[USERNAME@HOSTNAME ~]$ ping CENSORED.CENSORED
PING CENSORED.CENSORED (CENSORED) 56(84) bytes of data.
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=1 ttl=49 time=52.8 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=2 ttl=49 time=49.4 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=3 ttl=49 time=49.2 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=4 ttl=49 time=50.4 ms
^C
--- CENSORED.CENSORED ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 49.276/50.494/52.804/1.401 ms
[USERNAME@HOSTNAME ~]$
[USERNAME@HOSTNAME ~]$ traceroute CENSORED.CENSORED
traceroute to CENSORED.CENSORED (CENSORED), 30 hops max, 60 byte packets
 1  CENSORED (CENSORED)  5.733 ms  6.000 ms  5.977 ms
 2  CENSORED (CENSORED)  0.428 ms  0.417 ms  0.393 ms
 3  CENSORED (CENSORED)  1.726 ms  1.718 ms  1.682 ms
 4  CENSORED (CENSORED)  26.699 ms  26.693 ms  26.670 ms
 5  CENSORED (CENSORED)  27.785 ms  27.769 ms  27.746 ms
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[USERNAME@HOSTNAME ~]$

La quinta CENSOREDdirección IP en el traceroute no es la misma que en "ping CENSORED.CENSORED".


¿Cuál es la salida del traceroute?
ChrisF

1
¿Por qué la IP está "censurada"?
Sathyajith Bhat

1
¿por qué la IP está "censurada" ... tal vez porque no es pública? pff
LanceBaynes

8
Supongo que el póster redactó la IP para que no intentemos piratear su máquina.
msw

estas estrellas no significan censuradas, significan que no hubo respuesta
jbu

Respuestas:


42

Intente utilizar un método diferente en su traceroute, por ejemplo TCP SYN o ICMP en lugar del método UDP predeterminado.

Por ejemplo, tenga en cuenta la diferencia entre ICMP y TCP:

x@x:~$ ping -qc4 94.254.2.51
PING 94.254.2.51 (94.254.2.51) 56(84) bytes of data.
--- 94.254.3.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 7.781/7.807/7.836/0.067 ms

x@x:~$ sudo traceroute -I 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.307 ms  1.299 ms  1.432 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  7.166 ms  7.364 ms  7.336 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.251 ms  7.099 ms  7.220 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.059 ms  7.074 ms  7.145 ms
9  h-2-51.A322.priv.bahnhof.se (94.254.2.51)  7.619 ms  7.750 ms  8.070 ms

x@x:~$ sudo traceroute -T 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.621 ms  1.683 ms  1.817 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  8.530 ms  7.861 ms  7.820 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.724 ms  7.539 ms  7.486 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.572 ms  7.537 ms  7.553 ms
9  * * *
10  * * *
11  * * *
12  * * *
13  * * *

2
-T no parece ser un interruptor para OSX. ¿Hay alguna alternativa para usar TCP SYN en OSX?
Manachi

2
@Manachi:brew install tcptraceroute
iolsmit

1
@Manchi: lea la página de manual ...: "traceroute -P TCP <IP>"
benba

23

Traceroute se basa en paquetes ICMP o UDP. Efectivamente hace ping a cada enrutador en el camino entre usted y censurado. Censurado. Aumenta el tiempo de vida (TTL) para cada paquete posterior que envía (de 1 a 30 normalmente) esperando que a medida que cada paquete se envíe con un TTL aumentado desde el último, el siguiente enrutador en la ruta devolverá un código de error .

Si el salto 6 no responde, probablemente esté bloqueando específicamente los mensajes ICMP / UDP. Por lo tanto, Ping funciona porque los enrutadores entre usted y él simplemente le pasan los paquetes ICMP / UDP en lugar de responder a ellos, como lo hacen con un traceroute.


2
En la mayoría de las distribuciones (all?) * Nix, traceroute usa UDP de forma predeterminada, no ICMP.
h0tw1r3

Buen punto, lo enmendaré.
Rhys Gibson

Entonces, ¿todos los enrutadores después de 5 bloquean UDP? ¿Es eso correcto?
LanceBaynes

No lo creo. Alguien más podría tener una mejor explicación, pero creo que el salto 6 no responde y no transmite los paquetes, ya que de lo contrario al menos obtendría una última respuesta de su destino (a menos que esté a más de 30 saltos de distancia).
Rhys Gibson,

1
Pero estoy seguro de que está a menos de 30 saltos de distancia. Entonces la respuesta no es buena. En salto 7,8,9, etc. Tendría respuestas en el traceroute: \
LanceBaynes

12

No vi respuesta a por qué parte de las preguntas.

Se sabe que varios ISP hacen que sus enrutadores sean sigilosos para trazar rutas de dos maneras: o no disminuyen el TTL en los paquetes IP (convirtiéndose en agujeros de gusano IP) o no responden al TTL vencido mientras reenvían ICMP.

La razón es mantener su topología de red interna privada. Eso es todo.

La emisión de correos electrónicos traceroutedesde / hacia múltiples fuentes / destinos revela información sobre la topología de la red, algo que no todos aprecian.


2

Traceroute se basa en mensajes ICMP, que algunos enrutadores pueden estar configurados para no responder.


Ping también es ICMP, no explica la diferencia. Tengo las ventajas de leer otras respuestas que state traceroute también puede usar udp, que no sabía antes.
Rich Homolka

Bueno, una forma de bloquear explícitamente los paquetes ICMP de traceroute es eliminar los ICMP entrantes que son TTL = 1. Tal vez lo están haciendo por alguna razón.
LawrenceC

2

A veces vale la pena usar pingpara obtener información similar a un traceroute:

#!/bin/bash
for TTL in 1 2 3 4 5 6 7 8 9 10 11 12
do
    ping -c 1 -n -t $TTL a.b.c.d
done

Al llamar a ping con un argumento -t $ TTL, a veces puede eludir el firewall y descubrir las direcciones IP y demás enrutadores detrás de los firewalls.


3
Esto es lo mismo que invocar traceroute con el indicador -I, aunque (curiosamente) eso requeriría el estado de superusuario.
Tzarium

1
@Tzarium ping también requiere el estado de superusuario, solo tiene el bit de suid establecido, por lo que lo obtienes de forma gratuita.
itsadok

0

O todos los nodos desde 6 en adelante no responden a los paquetes UDP o el nodo 6 en sí mismo bloquea los paquetes udp. Puede probar los métodos de fllowing, que espero que funcionen en función de qué nodo en el camino a la detinción bloquea ICMP / TCP SYN:

  1. Use ICMP para traceroute: $ sudo traceroute -I

  2. Use TCP syn para traceroute: $ sudo traceroute -T

  3. Si son los saltos los que está excediendo, entonces use cualquiera de los siguientes: $ sudo traceroute -I -m 60

O

$ sudo traceroute -T -m 60

Este último funcionó para mí mientras realizaba un trazado a un ftp en todo el continente.


0

Para usar el comando ping para traceroute en un entorno unix, intente esto:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.