Perché posso eseguire il ping di un indirizzo IP ma non "traceroute"?


46

Posso eseguire il ping di un indirizzo IP, ma non riesco a rintracciarlo. Come può essere?

[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 ~]$

Il quinto CENSOREDindirizzo IP nel traceroute non è lo stesso del "ping CENSORED.CENSORED".


Qual è l'output del traceroute?
— ChrisF,

1
perché l'IP è "censurato"?
— Sathyajith Bhat

1
perché l'IP è "censurato" ... forse perché non è pubblico ?? pff
— LanceBaynes,

8
Presumo che il poster abbia redatto l'IP in modo da non tentare di hackerare la sua macchina.
— msw,

queste stelle non significano censura, significano che non c'è stata risposta
— jbu

Risposte:


42

Prova a utilizzare un metodo diverso nel traceroute, ad esempio TCP SYN o ICMP anziché il metodo UDP predefinito.

Ad esempio, nota la differenza tra ICMP e 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 non sembra essere un interruttore per OSX. Esiste un'alternativa all'utilizzo di TCP SYN su OSX?
— Manachi,

2
@Manachi:brew install tcptraceroute
— iolsmit,

1
@Manchi: leggi la manpage ...: "traceroute -P TCP <IP>"
— benba

23

Traceroute si basa su pacchetti ICMP o UDP. Esegue il ping di ogni router sul percorso tra te e censored.censored. Aumenta il Time-To-Live (TTL) per ogni pacchetto successivo che invia (da 1-30 normalmente) aspettandosi che quando ciascun pacchetto viene inviato con un TTL aumentato dall'ultimo, il router successivo nel percorso restituirà un codice di errore .

Se l'hop 6 non risponde, probabilmente sta bloccando specificamente i messaggi ICMP / UDP. Il ping funziona quindi perché i router tra te e il client stanno semplicemente passando attraverso di esso i pacchetti ICMP / UDP anziché rispondervi, come fanno con un traceroute.


2
Nella maggior parte delle distribuzioni (tutte?) * Nix, traceroute utilizza UDP per impostazione predefinita, non ICMP.
— h0tw1r3,

Buon punto, modificherà.
— Rhys Gibson,

quindi tutti i router dopo 5 blocchi UDP? è corretto?
— LanceBaynes,

Io non la penso così. Qualcun altro potrebbe avere una spiegazione migliore, ma penso che l'hop 6 non risponda e non stia trasmettendo i pacchetti, altrimenti altrimenti otterresti almeno un'ultima risposta dalla tua destinazione (a meno che non sia a più di 30 luppoli di distanza).
— Rhys Gibson

1
Ma sono sicuro che sono meno di 30 luppoli di distanza. Quindi la risposta non è buona. A hop 7,8,9, ecc. Avrei risposte nel traceroute: \
— LanceBaynes

12

Non ho visto nessuna risposta al perché parte delle domande.

Diversi ISP sono noti per rendere i loro router invisibili a traceroute in due modi: o non diminuiscono il TTL nei pacchetti IP (rendendosi essi stessi wormhole IP) o non rispondono al TTL scaduto mentre continuano a inoltrare ICMP.

Il motivo è mantenere privata la topologia della rete interna. È tutto.

L'emissione tracerouteda / verso più fonti / destinazioni rivela informazioni sulla topologia della rete, che è qualcosa che non tutti apprezzano.


2

Traceroute si basa sui messaggi ICMP, ai quali alcuni router potrebbero essere configurati per non rispondere.


Anche il ping è ICMP, non spiega la differenza. Ho i vantaggi di leggere altre risposte che State traceroute può usare anche udp, cosa che non conoscevo prima.
— Rich Homolka,

Bene, un modo per bloccare esplicitamente i pacchetti ICMP traceroute è quello di eliminare gli ICMP in entrata che sono TTL = 1. Forse lo stanno facendo per qualche motivo.
— LawrenceC,

2

A volte vale la pena usare pingper ottenere informazioni simili a 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

Chiamando ping con un argomento -t $ TTL, a volte è possibile eludere il firewall e scoprire gli indirizzi IP e così via dei router dietro i firewall.


3
Ciò equivale a invocare traceroute con il flag -I, sebbene (stranamente) richiederebbe lo stato di superutente.
— Tzarium,

1
@Tzarium ping richiede anche lo stato di superutente, ha solo il bit di suid impostato, quindi lo ottieni gratuitamente.
— entrato il

0

O tutti i nodi dalla 6 in poi non rispondono ai pacchetti UDP o il nodo 6 stesso blocca i pacchetti udp. Puoi provare i metodi fllowing, che spero funzioneranno in base a quale nodo nel percorso di blocchi di detenzione ICMP / TCP SYN:

  1. Usa ICMP per traceroute: $ sudo traceroute -I

  2. Usa TCP syn per traceroute: $ sudo traceroute -T

  3. Se è il luppolo che sta superando, utilizzare uno dei seguenti: $ sudo traceroute -I -m 60

O

$ sudo traceroute -T -m 60

Quest'ultimo ha funzionato per me tracciando un ftp in tutto il continente.


0

Per utilizzare il comando ping per traceroute in ambiente unix, provare questo:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.