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.