Skip to main content

Jak korzystać z polecenia traceroute w systemie Linux

Konsola w sieci - polecenia CMD Windows do zarządzania połączeniami sieciowymi (Może 2024)

Konsola w sieci - polecenia CMD Windows do zarządzania połączeniami sieciowymi (Może 2024)
Anonim

Komenda traceroute jest używana w systemie Linux do mapowania podróży, którą pakiet informacji podejmuje od źródła do miejsca docelowego. Jednym z zastosowań dla traceroute jest zlokalizowanie, gdy utrata danych występuje w sieci, co może oznaczać węzeł, który jest wyłączony.

Ponieważ każdy przeskok w rekordzie odzwierciedla nowy serwer lub router między pierwotnym komputerem PC a zamierzonym celem, przeglądanie wyników skanowania traceroute pozwala również zidentyfikować punkty zwolnienia, które mogą niekorzystnie wpłynąć na ruch w sieci.

Jak to działa

Ocena konkretnej trasy, którą podąża ruch sieciowy (lub znajdowanie niewłaściwej bramy, która odrzuca twoje pakiety), przedstawia kilka problemów związanych z rozwiązywaniem problemów. Traceroute używa protokołu IP czas żyć pole, aby uzyskać odpowiedź ICMP TIME_EXCEEDED z każdej bramy wzdłuż ścieżki do hosta docelowego.

Jedynym parametrem, który musisz uwzględnić po uruchomieniu polecenia traceroute, jest nazwa hosta lub adres IP miejsca docelowego.

Składnia i przełączniki Traceroute

traceroute -dFInrvx -fa first_ttl -sol przejście -ja spotykam -m max_ttl -p Port -q nqueries -s src_addr -t tos -w czas oczekiwania -z pausemsecs gospodarz packetlen

Podczas gdy powyższe jest, w jaki sposób polecenie traceroute musi zostać zapisane, aby pracować w wierszu poleceń, wydajność lub wynik polecenia można zmienić, określając jeden lub więcej opcjonalnych przełączników.

  • -fa: Ustaw początkowy czas życia używany w pierwszym wychodzącym pakiecie sondy.
  • -FA: Ustaw bit "nie fragmentuj".
  • -re: Włącz debugowanie na poziomie gniazd.
  • -sol: Określ luźną bramę trasy źródłowej (maksimum 8).
  • -ja: Określ interfejs sieciowy, aby uzyskać źródłowy adres IP wychodzących pakietów sond. Zwykle jest to przydatne tylko dla hosta wieloadresowego. (Zobacz-s flagę w inny sposób.)
  • -JA: Użyj datagramów ICMP ECHO zamiast UDP.
  • -m: Ustaw maksymalny czas życia (maksymalna liczba przeskoków) używany w wychodzących pakietach sondujących. Wartość domyślna to 30 przeskoków (to samo ustawienie domyślne dla połączeń TCP).
  • -n: Drukuj adresy przeskoków numerycznie, a nie symbolicznie i numerycznie (zapisuje wyszukiwanie nazw adresów serwerów nazw dla każdej bramy znalezionej na ścieżce).
  • -p: Ustaw podstawowy numer portu UDP używany w sondach (wartość domyślna to 33434). Traceroute ma nadzieję, że nic nie będzie nasłuchiwało na portach UDP baza do baza + nhops - 1 na hoście docelowym (tak, że zostanie zwrócony komunikat ICMP PORT_UNREACHABLE, aby zakończyć śledzenie trasy). Jeśli coś nasłuchuje na porcie w zakresie domyślnym, tej opcji można użyć do wybrania nieużywanego zakresu portów.
  • -r: Pomiń normalne tabele routingu i wyślij bezpośrednio do hosta w podłączonej sieci. Jeśli host nie znajduje się w bezpośrednio podłączonej sieci, zwracany jest błąd. Opcji tej można użyć do wysyłania polecenia ping do lokalnego hosta za pośrednictwem interfejsu, który nie ma trasy przez niego (na przykład po zrzuceniu interfejsu przez kierowane (8C)).
  • -s: Użyj następującego adresu IP (który zwykle jest podawany jako numer IP, a nie nazwa hosta) jako adresu źródłowego w wychodzących pakietach sondujących. Na hostach wieloadresowych (tych z więcej niż jednym adresem IP) opcja ta może być używana do wymuszania adresu źródłowego na coś innego niż adres IP interfejsu, do którego wysyłany jest pakiet sondujący. Jeśli adres IP nie jest adresem interfejsu tego urządzenia, zostanie zwrócony błąd i nic nie zostanie wysłane. (Zobacz-ja flagę w inny sposób.)
  • -t: Ustaw typ usługi w pakietach sondujących do następnej wartości (domyślnie zero). Wartość musi być dziesiętną liczbą całkowitą z zakresu od 0 do 255. Ta opcja może być używana do sprawdzenia, czy różne typy usług powodują różne ścieżki. (Jeśli nie używasz 4.4bsd, może to być akademickie, ponieważ normalne usługi sieciowe, takie jak telnet i ftp, nie pozwalają ci sterować TOS.) Nie wszystkie wartości TOS są legalne lub znaczące - patrz specyfikacja IP dla definicji. Przydatnymi wartościami są prawdopodobnie `-t 16 "(małe opóźnienie) i"-t 8 "(wysoka przepustowość).
  • -v: Gadatliwe wyjście. Odebrano odebrane pakiety ICMP inne niż TIME_EXCEEDED i UNREACHABLE.
  • -w: Ustaw czas (w sekundach) na oczekiwanie na odpowiedź na sondę (domyślnie 5 sekund).
  • -x: Przełącz sumy kontrolne IP. Zwykle zapobiega to obliczaniu przez sumeroute sum kontrolnych IP. W niektórych przypadkach system operacyjny może nadpisać części wychodzącego pakietu, ale nie może ponownie przeliczyć sumy kontrolnej; dlatego w niektórych przypadkach domyślnie nie należy obliczyć sum kontrolnych i użyć-x powoduje ich obliczenie. Zwróć uwagę, że sumy kontrolne są zwykle wymagane dla ostatniego przeskoku przy korzystaniu z sond ECHO ICMP (-JA), więc są one zawsze obliczane podczas korzystania z protokołu ICMP.
  • -z: Ustaw czas (w milisekundach) na przerwanie między sondami (domyślnie 0). Niektóre systemy, takie jak Solaris i routery z Cisco, komunikaty icmp limit stawki. Dobra wartość do zastosowania w tym przypadku wynosi 500 (np. 1/2 sekundy).

Interpretacja wyników

Traceroute opisuje ścieżkę, którą pakiet IP podąża do hosta internetowego, uruchamiając pakiety sondy UDP z małym TTL (czas życia), a następnie słuchając odpowiedzi ICMP "przekroczenie czasu" z bramy. Zaczynamy nasze sondy z TTL jednego i zwiększamy o jeden, aż otrzymamy port ICMP "nieosiągalny" (co oznacza, że ​​pakiet dotarł do miejsca docelowego) lub osiągniemy maksymalną wartość prób, która domyślnie wynosi 30 przeskoków i można ją zmienić za pomocą-m flaga.

Po uruchomieniu traceroute wysyła trzy sondy przy każdym ustawieniu TTL, a następnie drukuje linię do konsoli pokazując TTL, adres bramki i czas obiegu każdej sondy. Jeśli odpowiedzi na sondę pochodzą z różnych bramek, adres każdego systemu odpowiadającego drukuje. Jeśli nie ma odpowiedzi w ciągu pięciosekundowego interwału limitu czasu (zmienianego przy pomocy-w flag), dla tej sondy drukowana jest gwiazdka.

Aby uniemożliwić przytknięcie hosta docelowego przez przetwarzanie pakietu sondy UDP, port docelowy jest ustawiony na wartość, która jest mało prawdopodobna do użycia przez to urządzenie. Jeśli sieć lub usługa w miejscu docelowym korzysta z tego portu, zmień wartość za pomocą-p flaga.

Przykładowe użycie i dane wyjściowe zwrócą wyniki podobne do tego przykładu:

jaka 71% traceroute nis.nsf.net. traceroute do nis.nsf.net (35.1.1.48), 30 hops max, 38 bajtów pakiet 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128,32. 216.1) 39 ms 39 ms 19 ms 3 lilac- dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn -nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms 6 128.32.197,4 (128.32.197.4) 40 ms 59 ms 59 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 8 129.140. 70.13 (129.140.70.13) 99 ms 99 ms 80 ms 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 11 nic.merit.edu (35,1 1, 48) 239 ms 239 ms 239 ms

Zwróć uwagę, że druga i trzecia linia są takie same. Wynik ten odnosi się do błędnego jądra systemu drugiego skoku-lbl-csam.arpa, który przekazuje pakiety o zerowym TTL (błąd w rozproszonej wersji 4.3 BSD). Musisz zgadnąć, jaką ścieżkę obierają pakiety, ponieważ NSFNet (129.140) nie dostarcza translacji adresów na nazwy dla swoich NSS.

Bardziej interesującym przykładem jest:

jaka 72% traceroute allspice.lcs.mit.edu. traceroute do allspice.lcs.mit.edu (18.26.0.115), 30 przeskoków max 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac- dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 .Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197,4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 ( 129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * * 16 * * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18,26 .0,115) 339 ms 279 ms 279 ms

Zwróć uwagę, że bramki 12, 14, 15, 16 i 17 przeskoków nie wysyłają komunikatów ICMP "przekroczenie czasu" lub wysyłają je z TTL zbyt małym, aby nas dosięgnąć. Wiersze od 14 do 17 uruchamiają kod bramy MIT C, który nie wysyła komunikatów "przekroczony czas".

Cicha bramka 12 w powyższym przykładzie może być wynikiem błędu w kodzie sieciowym 4. 23 BSD i jego pochodnych: Maszyny z kodem 4.3 i wcześniejszą wysyłają komunikat niedostępny za pomocą tego, co TTL pozostaje w pierwotnym datagramie. Ponieważ dla bramek pozostały czas TTL wynosi zero, "przekroczenie czasu" ICMP gwarantuje, że do nas nie dotrze. Zachowanie tego błędu jest nieco bardziej interesujące, gdy pojawi się w systemie docelowym:

1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1 ) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms 6 csgw. Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 rip.Berkeley.EDU (128.32.131.22) 59 ms! 39 ms! 39 ms!

Zauważ, że istnieje 12 "bramek" (13 to miejsce docelowe), a ostatnia połowa z nich nie istnieje. To, co się naprawdę dzieje, to nazwa serwera rozerwać (Sun-3 z systemem Sun OS 3.5) używa TTL z naszego nadchodzącego datagramu jako TTL w odpowiedzi ICMP. Tak więc odpowiedź zostanie przekroczona na ścieżce powrotu (bez powiadomienia wysłanego do kogokolwiek, ponieważ ICMP nie są wysyłane dla ICMP) dopóki nie sondujemy z TTL, który jest co najmniej dwa razy dłuższy od długości ścieżki - innymi słowy, rip to naprawdę tylko siedem wyskakuje.

Odpowiedź, która powraca z TTL 1, jest wskazówką, że ten problem istnieje. Traceroute wypisuje "!" po czasie, gdy TTL jest mniejszy lub równy 1. Ponieważ dostawcy wysyłają dużo przestarzałych programów (DEC's Ultrix, Sun 3.x) lub niestandardowych (HPUX), należy spodziewać się częstego występowania tego problemu i zachować ostrożność wybierając wskaż host twoich sond.

Inne możliwe adnotacje po tym czasie! H, ! N, lub! P (host, sieć lub protokół nieosiągalny),! S (trasa źródłowa nieudana),!FA- (wymagana fragmentacja - wyświetlana jest wartość MTU Discovery RFC1191),! X (komunikacja zabroniona administracyjnie),! V (naruszenie priorytetu hosta),!DO (odcięcie pierwszeństwa w działaniu), lub! (Kod ICMP nieosiągalny). Kody te są zdefiniowane przez RFC1812, który zastępuje RFC1716. Jeśli prawie wszystkie sondy spowodują jakiegoś nieosiągalnego hosta, traceroute zrezygnuje i zakończy działanie.

Ten program jest przeznaczony do użytku w testowaniu sieci, pomiarach i zarządzaniu. Powinien być używany przede wszystkim do ręcznej izolacji usterek. Z powodu obciążenia, jakie może nałożyć na sieć, nie należy używać traceroute podczas normalnych operacji lub z zautomatyzowanych skryptów.