Dlaczego mogę pingować adres IP, ale nie „śledzić go”?


46

Mogę pingować adres IP, ale nie mogę go śledzić. Jak to może być?

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

Piąty CENSOREDadres IP w traceroute nie jest taki sam jak w „ping CENSORED.CENSORED”.


Jaka jest wydajność traceroute?
ChrisF

1
dlaczego IP jest „cenzurowany”?
Sathyajith Bhat

1
dlaczego IP jest „cenzurowany” ... może dlatego, że nie jest publiczny? pff
LanceBaynes

8
Zakładam, że plakat zredagował adres IP, abyśmy nie próbowali włamać się do jego maszyny.
msw

gwiazdy te nie oznaczają cenzury, oznaczają brak odpowiedzi
jbu 20'17

Odpowiedzi:


42

Spróbuj użyć innej metody w traceroute, na przykład TCP SYN lub ICMP zamiast domyślnej metody UDP.

Na przykład zauważ różnicę między ICMP a 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 nie wydaje się być przełącznikiem dla OSX. Czy istnieje alternatywa dla użycia TCP SYN na OSX?
Manachi

2
@Manachi:brew install tcptraceroute
iolsmit,

1
@Manchi: przeczytaj stronę podręcznika ...: "traceroute -P TCP <IP>"
benba

23

Traceroute opiera się na pakietach ICMP lub UDP. Skutecznie pinguje każdy router na ścieżce między tobą a cenzurą. Cenzura. Zwiększa czas wygaśnięcia (TTL) dla każdego kolejnego wysyłanego pakietu (zwykle od 1 do 30), oczekując, że ponieważ każdy pakiet zostanie wysłany ze zwiększonym czasem TTL od ostatniego, następny router na ścieżce zwróci kod błędu .

Jeśli przeskok 6 nie odpowiada, prawdopodobnie blokuje wiadomości ICMP / UDP. Ping działa więc, ponieważ routery między tobą a nim przesyłają do niego pakiety ICMP / UDP, zamiast na nie odpowiadać, jak to robi w przypadku traceroute.


2
W większości dystrybucji (all?) * Nix traceroute domyślnie używa UDP, a nie ICMP.
h0tw1r3

Dobra uwaga, ulegnie zmianie.
Rhys Gibson

więc wszystkie routery po 5 blokach UDP? czy to jest poprawne?
LanceBaynes

Nie wydaje mi się Ktoś inny może mieć lepsze wytłumaczenie, ale myślę, że przeskok 6 nie odpowiada i nie przekazuje pakietów, ponieważ w przeciwnym razie uzyskałbyś przynajmniej ostatnią odpowiedź z miejsca docelowego (chyba że dzieli Cię więcej niż 30 przeskoków).
Rhys Gibson,

1
Ale jestem pewien, że dzieli go mniej niż 30 przeskoków. Więc odpowiedź nie jest dobra. W przeskokach 7,8,9 itd. Odpowiedziałbym na traceroute: \
LanceBaynes

12

Nie widziałem odpowiedzi na pytanie, dlaczego część pytań.

Znanych jest kilku dostawców usług internetowych, którzy ukrywają swoje routery na traceroute na dwa sposoby: albo nie zmniejszają TTL w pakietach IP (robiąc się tunelami czasoprzestrzennymi IP), albo nie reagują na wygasłe TTL podczas przesyłania dalej ICMP.

Powodem jest utrzymanie prywatnej topologii sieci wewnętrznej. To wszystko.

Wydawanie traceroutes z / do wielu źródeł / miejsc docelowych ujawnia informacje o topologii sieci, co jest czymś, czego nie wszyscy doceniają.


2

Traceroute polega na komunikatach ICMP, na które niektóre routery mogą być skonfigurowane tak, aby nie odpowiadały.


Ping jest również ICMP, nie wyjaśnia różnicy. Mam tę zaletę, że czytam inne odpowiedzi, w których stan traceroute może również używać udp, czego wcześniej nie znałem.
Rich Homolka

Cóż, jednym ze sposobów jawnego blokowania pakietów traceroute ICMP jest upuszczenie przychodzących ICMP o TTL = 1. Może robią to z jakiegoś powodu.
LawrenceC

2

Czasami warto użyć, pingaby uzyskać informacje podobne do 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

Wywołując polecenie ping z argumentem -t $ TTL, można czasem wymknąć się zaporze ogniowej i znaleźć adresy IP itp. Routerów za zaporami ogniowymi.


3
Jest to to samo, co wywołanie traceroute z flagą -I, chociaż (co dziwne) wymagałoby to statusu administratora.
Tzarium

1
@Tzarium ping wymaga również statusu superużytkownika, ma tylko ustawiony bit suid, więc dostajesz go za darmo.
itsadok

0

Albo wszystkie węzły od 6 nie reagują na pakiety UDP, albo sam węzeł 6 blokuje pakiety udp. Możesz wypróbować metody fllowing, które, mam nadzieję, zadziałają w zależności od tego, który węzeł na ścieżce do bloków detekcji ICMP / TCP SYN:

  1. Użyj ICMP do traceroute: $ sudo traceroute -I

  2. Użyj TCP syn do traceroute: $ sudo traceroute -T

  3. Jeśli to chmiel przekracza, użyj jednej z następujących opcji: $ sudo traceroute -I -m 60

LUB

$ sudo traceroute -T -m 60

Ten ostatni działał dla mnie podczas śledzenia trasy do ftp na całym kontynencie.


0

Aby użyć polecenia ping do traceroute w środowisku unix, spróbuj tego:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.