co oznacza „***”, gdy traceroute

54

to wynik mojego traceroute

traceroute 211.140.5.120

 1  141.1.31.2 (111.1.31.2)  0.397 ms  0.380 ms  0.366 ms
 2  141.1.28.38 (111.1.28.38)  3.999 ms  3.971 ms  3.982 ms
 3  142.11.124.193 (112.11.124.133)  1.315 ms  1.533 ms  1.455 ms
 4   (201.141.0.261)  2.615 ms  2.749 ms  2.572 ms
 5   (201.141.0.82)  2.705 ms  2.564 ms  2.680 ms
 6   (201.118.231.14)  5.375 ms  5.126 ms  5.252 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Chcę wiedzieć, co oznacza *** i czy wynik oznacza, że ​​naprawdę więcej niż 30 przeskoków między moim hostem a serwerem docelowym?

Larry
źródło

Odpowiedzi:

45

Wszystkie implementacje traceroute polegają na wysyłaniu pakietów ICMP (typ 11) do nadawcy.

Ten program próbuje prześledzić trasę, uruchamiając pakiety sondy UDP z niewielkim ttl (czasem życia), a następnie nasłuchując odpowiedzi „przekroczenia czasu” ICMP przez bramkę. Zaczyna sondować od ttl jednego i zwiększa się o jeden, aż otrzymamy ICMP „port nieosiągalny” (co oznacza, że ​​dotarliśmy do „hosta”) lub osiągamy maksimum (domyślnie 30 przeskoków i można je zmienić za pomocą flagi -m ). Trzy sondy (zmiana z flagą -q) są wysyłane przy każdym ustawieniu ttl i drukowana jest linia pokazująca ttl, adres bramki i czas podróży w obie strony dla każdej sondy (czyli trzy *). Jeśli nie ma odpowiedzi w ciągu 5 sekund. limit czasu (zmieniony flagą -w), dla tej sondy drukowane jest „*”.

Więc w twoim przypadku możemy stwierdzić, że otrzymaliśmy odpowiedź tylko do 201.118.231.14. Następnie węzły nie reagują na pakiety ICMP (typ 11) do przeskoku 30, który jest maksymalnym czasem do przeżycia (maksymalna liczba przeskoków). Możesz zwiększyć maksymalny czas życia używając flagi -m.

Sachin Divekar
źródło
34

Traceoute wymaga odpowiedzi od serwera docelowego i każdego z pośrednich przeskoków, aby utworzyć dane wyjściowe. Jeśli router nie wygeneruje Time-to-live exceededodpowiedzi, traceroute nie będzie wiedział nic o tym skoku. Skok wyjściowy * * *oznacza, że ​​router w tym skoku nie reaguje na typ pakietu, którego używałeś dla traceroute (domyślnie jest to UDP w systemie Unix-podobnym i ICMP w systemie Windows).

Jeśli używasz tej samej wersji traceroute, którą masz, możesz spróbować użyć -eopcji, aby ominąć zapory ogniowe oraz -Popcji użycia pakietów ICMP, TCP lub GRE zamiast UDP. Możesz także spróbować określić konkretny port, który prawdopodobnie nie będzie filtrowany (np. 80 lub 25), używając tej -popcji.

Mogą istnieć inne opcje, które pomogą ci odzyskać odpowiedź. Sprawdź stronę man dla traceroute .

Aby odpowiedzieć na drugą część pytania, nie, ten traceroute nie oznacza, że ​​między tobą a serwerem docelowym jest dokładnie 30 przeskoków. Traceroute „poddaje się” po pewnej liczbie przeskoków. Odbywa się to poprzez ograniczenie maksymalnej wartości TTL w pakietach, która domyślnie w Linuksie wynosi 30. Możesz to zmienić za pomocą -mopcji. Może być więcej lub mniej chmielu, ale ponieważ żaden z nich po 6. nie odpowiada, po prostu nie wiemy.

Ladadadada
źródło
2
Dodajmy: Zasadniczo, jeśli z jakiegokolwiek powodu chmiel 30 wrócił z odpowiedzią; wiedzielibyśmy, że mamy co najmniej 30 chmielu. (Ignorując wszelkie oszustwa)
user606723,