Jak korzystać z polecenia traceroute w systemie Linux

Możesz użyć polecenia traceroute systemu Linux, aby wykryć powolny etap podróży pakietu sieciowego i rozwiązać problemy z powolnymi połączeniami sieciowymi. Pokażemy Ci, jak to zrobić!

Jak działa traceroute

Kiedy doceniasz działanie traceroute, znacznie ułatwia to zrozumienie wyników. Im bardziej skomplikowana trasa a pakiet sieciowy do celu, tym trudniej jest określić, gdzie mogą wystąpić spowolnienia.

Mała organizacja sieć lokalna (LAN) może być stosunkowo proste. Prawdopodobnie będzie miał co najmniej jeden serwer i router lub dwa. Złożoność wzrasta na sieć rozległa (WAN), który komunikuje się między różnymi lokalizacjami lub przez Internet. Twój pakiet sieciowy napotyka następnie (i jest przekazywany i trasowany przez) wiele sprzętu, takiego jak routery i bramy.

Nagłówki metadanych w pakietach danych opisują ich długość, skąd pochodzą, dokąd zmierza, używany protokół i tak dalej. Specyfikacja protokołu definiuje nagłówek. Jeśli potrafisz zidentyfikować protokół, możesz określić początek i koniec każdego pola w nagłówku i przeczytać metadane.

traceroute używa TCP / IP zestaw protokołów i wysyła Protokół datagramów użytkownika pakiety. Nagłówek zawiera Czas żyć (TTL), które zawiera ośmiobitową liczbę całkowitą. Pomimo tego, co sugeruje nazwa, reprezentuje liczbę, a nie czas trwania.

Pakiet jest przesyłany od początku do miejsca przeznaczenia przez router. Za każdym razem, gdy pakiet dociera do routera, zmniejsza wartość licznika TTL. Jeśli wartość TTL kiedykolwiek osiągnie jeden, router, który odbiera pakiet, zmniejsza tę wartość i zauważa, że ​​wynosi ona teraz zero. Pakiet jest następnie odrzucany i nie jest przekazywany do następnego przeskoku w podróży, ponieważ „upłynął limit czasu”.

Router wysyła plik Protokół kontroli wiadomości internetowych (ICMP) Przekroczony czas wiadomość z powrotem do źródła pakietu, aby poinformować go, że upłynął limit czasu pakietu. Komunikat Przekroczony czas zawiera oryginalny nagłówek i pierwsze 64 bity danych oryginalnego pakietu. Jest to zdefiniowane na szóstej stronie Prośba o komentarz 792.

Tak więc, jeśli traceroute wyśle ​​pakiet, a następnie ustawi wartość TTL na jeden, pakiet dotrze tylko do pierwszego routera, zanim zostanie odrzucony. Otrzyma z routera komunikat o przekroczeniu czasu ICMP i może zarejestrować czas potrzebny na podróż w obie strony.

Następnie powtarza ćwiczenie z TTL ustawionym na 2, które zakończy się niepowodzeniem po dwóch skokach. traceroute zwiększa TTL do trzech i próbuje ponownie. Ten proces jest powtarzany do momentu osiągnięcia celu lub przetestowania maksymalnej liczby przeskoków (domyślnie 30).

Niektóre routery nie grają dobrze

Niektóre routery mają błędy. Próbują przekazywać pakiety z TTL równym zero, zamiast je odrzucać i zgłaszać komunikat o przekroczeniu czasu ICMP.

Według Cisconiektórzy dostawcy usług internetowych (ISP) ograniczają liczbę komunikatów ICMP, które przekazują ich routery.

Niektóre urządzenia są skonfigurowane tak, aby nigdy nie wysyłać pakietów ICMP. Często ma to na celu zapewnienie, że urządzenie nie zostanie nieświadomie zmuszone do udziału w rozproszona odmowa usługi, jak atak smerfa.

traceroute ma domyślny limit czasu dla odpowiedzi wynoszący pięć sekund. Jeśli nie otrzyma odpowiedzi w ciągu tych pięciu sekund, próba zostaje przerwana. Oznacza to, że odpowiedzi z bardzo wolnych routerów są ignorowane.

Instalowanie traceroute

traceroute był już zainstalowany w Fedorze 31, ale musi być zainstalowany w Manjaro 18.1 i Ubuntu 18.04. Aby zainstalować traceroute na Manjaro, użyj następującego polecenia:

sudo pacman -Sy traceroute

Plik

Aby zainstalować traceroute w systemie Ubuntu, użyj następującego polecenia:

sudo apt-get install traceroute

Plik

Korzystanie z traceroute

Jak omówiliśmy powyżej, celem traceroute jest wywołanie odpowiedzi z routera przy każdym przeskoku z komputera do miejsca docelowego. Niektórzy mogą mieć wąskie usta i nic nie zdradzą, podczas gdy inni prawdopodobnie bez skrupułów rozlewają fasolę.

Jako przykład uruchomimy traceroute do Zamek Blarney strona internetowa w Irlandii, ojczyzna słynnych Kamień z Blarney. Legenda głosi, że jeśli pocałujesz Kamień z Blarney, zostaniesz pobłogosławiony „darem gadki”. Miejmy nadzieję, że routery, które napotkamy po drodze, są odpowiednio gadatliwe.

Wpisujemy następujące polecenie:

traceroute www.blarneycastle.ie

Plik

Pierwsza linia zawiera następujące informacje:

Miejsce docelowe i jego adres IP.
Liczba chmielów, które traceroute spróbuje przed rezygnacją.
Rozmiar wysyłanych pakietów UDP.

Wszystkie pozostałe wiersze zawierają informacje o jednym z przeskoków. Zanim jednak zagłębimy się w szczegóły, widzimy, że między naszym komputerem a witryną Blarney Castle jest 11 przeskoków. Hop 11 mówi nam również, że dotarliśmy do celu.

Format każdej linii przeskoków jest następujący:

Nazwa urządzenia lub, jeśli urządzenie się nie identyfikuje, adres IP.
Adres IP.
Czas potrzebny na podróż w obie strony dla każdego z trzech testów. Jeśli jest tutaj gwiazdka, oznacza to, że nie było odpowiedzi na ten test. Jeśli urządzenie w ogóle nie odpowiada, zobaczysz trzy gwiazdki i brak nazwy urządzenia ani adresu IP.

Przyjrzyjmy się, co mamy poniżej:

Przeskok 1: Pierwszy port wywołania (gra słów nie jest przeznaczony) to router DrayTek Vigor w sieci lokalnej. W ten sposób nasze pakiety UDP opuszczają sieć lokalną i trafiają do Internetu.
Przeskok 2: To urządzenie nie odpowiedziało. Być może został skonfigurowany tak, aby nigdy nie wysyłać pakietów ICMP. A może zareagował, ale był zbyt wolny, więc traceroute upłynął.
Przeskok 3: urządzenie odpowiedziało, ale nie otrzymaliśmy jego nazwy, tylko adres IP. Zauważ, że w tym wierszu znajduje się gwiazdka, co oznacza, że ​​nie otrzymaliśmy odpowiedzi na wszystkie trzy żądania. Może to oznaczać utratę pakietów.
Chmury 4 i 5: Więcej anonimowych przeskoków.
Przeskok 6: Jest tu dużo tekstu, ponieważ inne zdalne urządzenie obsługiwało każde z naszych trzech żądań UDP. Wydrukowano (dość długie) nazwy i adresy IP dla każdego urządzenia. Może się to zdarzyć, gdy napotkasz „gęsto zaludnioną” sieć, w której jest dużo sprzętu do obsługi dużego ruchu. Ten przeskok dotyczy jednego z największych dostawców usług internetowych w Wielkiej Brytanii. Byłby więc małym cudem, gdyby ten sam zdalny sprzęt obsługiwał nasze trzy żądania połączenia.
Przeskok 7: To jest przeskok, który wykonały nasze pakiety UDP, gdy opuszczały sieć dostawcy usług internetowych.
Przeskok 8: Ponownie otrzymujemy adres IP, ale nie nazwę urządzenia. Wszystkie trzy testy zakończyły się pomyślnie.
Przeskoki 9 i 10: dwa kolejne anonimowe przeskoki.
Przeskok 11: Dotarliśmy na stronę internetową zamku Blarney. Zamek znajduje się w Cork w Irlandii, ale według Geolokalizacja adresu IP, witryna znajduje się w Londynie.

Więc to była mieszana torba. Niektóre urządzenia grały w piłkę, inne odpowiedziały, ale nie podały nam swoich nazw, a inne pozostały całkowicie anonimowe.

Jednak dotarliśmy do celu, wiemy, że jest od niego 11 przeskoków, a czas podróży w obie strony wynosił 13,773 i 14,715 milisekund.

Ukrywanie nazw urządzeń

Jak widzieliśmy, czasami dołączanie nazw urządzeń prowadzi do zagraconego wyświetlacza. Aby ułatwić przeglądanie danych, możesz użyć opcji -n (bez mapowania).

Aby to zrobić na naszym przykładzie, wpisujemy:

traceroute -n blarneycastle.ie

Plik

Ułatwia to wybranie dużych liczb dla czasów w obie strony, które mogą wskazywać na wąskie gardło.

Hop 3 zaczyna wyglądać trochę podejrzanie. Ostatnim razem odpowiedziała tylko dwukrotnie, a tym razem tylko raz. W tym scenariuszu jest to oczywiście poza naszą kontrolą.

Jeśli jednak badałeś swoją sieć firmową, warto byłoby zagłębić się nieco głębiej w ten węzeł.

Ustawianie wartości limitu czasu traceroute

Być może, jeśli wydłużymy domyślny limit czasu (pięć sekund), otrzymamy więcej odpowiedzi. Aby to zrobić, użyjemy opcji -w (czas oczekiwania), aby zmienić ją na siedem sekund. (Zauważ, że jest to liczba zmiennoprzecinkowa).

Wpisujemy następujące polecenie:

traceroute -w 7.0 blarneycastle.ie

Plik

Nie miało to większego znaczenia, więc odpowiedzi prawdopodobnie wygasają. Prawdopodobnie anonimowe chmiele są celowo utajniane.

Ustawianie liczby testów

Domyślnie traceroute wysyła trzy pakiety UDP do każdego przeskoku. Możemy użyć opcji -q (liczba zapytań), aby dostosować to w górę lub w dół.

Aby przyspieszyć test traceroute, wpisujemy następujące polecenie, aby zmniejszyć liczbę wysyłanych przez nas pakietów sondujących UDP do jednego:

traceroute -q 1 blarneycastle.ie

Plik

Powoduje to wysłanie pojedynczej sondy do każdego przeskoku.

Ustawianie początkowej wartości TTL

Możemy ustawić początkową wartość TTL na coś innego niż jeden i pominąć niektóre przeskoki. Zwykle wartości TTL są ustawiane na jeden dla pierwszego zestawu testów, dwa dla następnego zestawu testów i tak dalej. Jeśli ustawimy ją na pięć, pierwszy test będzie próbował przeskoczyć pięć i pominąć przeskoki od jednego do czterech.

Ponieważ wiemy, że witryna internetowa Blarney Castle to 11 przeskoków z tego komputera, wpisujemy następujące polecenie, aby przejść bezpośrednio do przeskoku 11:

traceroute -f 11 blarneycastle.ie

Plik

Daje nam to ładny, skondensowany raport o stanie połączenia z celem.

Bądź rozważny

traceroute to doskonałe narzędzie do badania routingu sieciowego, sprawdzania szybkości połączeń lub identyfikowania wąskich gardeł. Windows ma również polecenie tracert, które działa podobnie.

Nie chcesz jednak bombardować nieznanych urządzeń torrentami pakietów UDP i uważać na włączenie traceroute do skryptów lub zadań bez nadzoru.

Traceroute obciążenia, które może umieścić w sieci, może niekorzystnie wpłynąć na jej wydajność. Jeśli nie jesteś w sytuacji typu napraw teraz, możesz chcieć używać go poza normalnymi godzinami pracy.