Polecenie tracepath: sprawdzanie przeskoków i MTU ścieżki zamiast traceroute
Na serwerze Linux polecenie tracepath pozwala bez uprawnień root sprawdzić trasę (przeskoki), którą pakiety pokonują do celu, oraz MTU ścieżki. Na serwerze AlmaLinux 9 bez zainstalowanego traceroute ograniczyliśmy liczbę przeskoków do 10 i sprawdziliśmy trasę do example.com: do czwartego przeskoku widać było czasy odpowiedzi i MTU ścieżki 1500, a sześć kolejnych przeskoków nie odpowiedziało.
Poniższe wyniki pochodzą z serwera AlmaLinux 9.8 (konto root), a wersję traceroute i stan pakietu sprawdzono na serwerze Debian 12 (zwykłe konto). Adresy IPv6 pierwszego przeskoku i routerów pośrednich zastąpiono przykładowymi adresami do dokumentacji, a czasy odpowiedzi i wartości pmtu pozostawiono bez zmian.
1️⃣ Jak używać polecenia tracepath
tracepath przyjmuje jedną nazwę lub adres IP celu, wysyła pakiety UDP i wypisuje przeskoki, które odpowiedziały, po jednym wierszu w kolejności TTL. Domyślna maksymalna liczba przeskoków to 30 i można ją zmienić opcją -m.
Dla example.com dodaliśmy -m 10, aby sprawdzić trasę tylko do dziesiątego przeskoku.
tracepath -n -m 10 example.com 1?: [LOCALHOST] 0.006ms pmtu 9001
1: fe80::1%eth0 0.077ms pmtu 1500
1: 2001:db8:a::5b 2.627ms asymm 8
2: 2001:db8:a::52 1.473ms asymm 12
3: 2001:db8:b::1e 19.653ms asymm 9
4: 2001:db8:c:: 3.642ms asymm 11
5: no reply
6: no reply
7: no reply
8: no reply
9: no reply
10: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500 Ten serwer wysłał pakiety na adres IPv6 example.com i do czwartego przeskoku pojawiały się czasy odpowiedzi. Od piątego przeskoku powtarzało się no reply, więc nie pojawił się wiersz reached oznaczający dotarcie do celu w dziesięciu przeskokach, a całość trwała około 18 sekund.
Uruchomione dla tego samego celu bez -m polecenie nie zakończyło się w ciągu 30 sekund. Na trasach z wieloma nieodpowiadającymi przeskokami zmniejsza się opcją -m liczbę sprawdzanych przeskoków.
Wersję zainstalowanego tracepath sprawdza się opcją -V; na tym serwerze tracepath to iputils 20210202.
tracepath -Vtracepath from iputils 202102022️⃣ Jak czytać wyniki tracepath
Każdy wiersz wyniku pokazuje kolejno numer przeskoku, adres, który odpowiedział, i czas w obie strony. Tam, gdzie zmienia się MTU ścieżki, pojawia się pmtu, a gdy trasa tam i z powrotem ma różną liczbę przeskoków, pojawia się asymm. Oto co sprawdzać w każdym wierszu.
| Wynik | Znaczenie |
|---|---|
| 1?: | Pole numeru przeskoku — ? pojawia się przy numerze szacowanym, gdy z odpowiedzi nie udało się uzyskać TTL |
| [LOCALHOST] | Wiersz samego serwera, zanim pakiet wyjdzie do sieci |
| 0.077ms | Czas w obie strony do tego przeskoku |
| pmtu 1500 | MTU ścieżki (bajty) zmienione w tym miejscu — pojawia się tylko przy zmianie |
| asymm 8 | Różnica liczby przeskoków między trasą tam i z powrotem — oficjalny podręcznik podaje, że to wartość niewiarygodna |
| no reply | Przeskok, który nie odpowiedział na pakiet wysłany z tym TTL |
| reached | Wiersz, w którym osiągnięto cel |
| Too many hops | Zatrzymuje się po sprawdzeniu liczby przeskoków ustawionej opcją -m |
| Resume: pmtu … hops … back … | MTU całej ścieżki, liczba przeskoków do celu i szacowana liczba przeskoków powrotnych |
W wynikach dla example.com pmtu w pierwszym wierszu [LOCALHOST] wynosiło 9001 i zmieniło się na 1500 na pierwszym przeskoku. Wiersz TTL 1 pojawiający się dwa razy z innym tylko adresem to również układ z przykładu w oficjalnym podręczniku. Podręcznik wyjaśnia, że jeśli pierwszy pakiet zostanie odrzucony na pierwszym przeskoku z powodu MTU ścieżki, ten sam wiersz TTL pojawi się jeszcze raz.
Po dotarciu do celu na końcu wiersza pojawia się reached, a ostatni wiersz Resume pokazuje liczbę przeskoków do celu. Przy wysyłaniu na 127.0.0.1 reached pojawiło się po jednym przeskoku, a wiersz Resume miał postać [pmtu 65535 hops 1 back 1].
tracepath -n 127.0.0.1 1: 127.0.0.1 0.047ms reached
Resume: pmtu 65535 hops 1 back 1 Trasa, która kończy się komunikatem Too many hops bez reached, nie otrzymała odpowiedzi od celu w ramach przeskoków ustawionych opcją -m. Trasa do example.com również nie miała reached do dziesięciu przeskoków, więc w wierszu Resume zostało tylko pmtu, bez liczby przeskoków.
3️⃣ Opcje tracepath
tracepath ma tylko osiem opcji: -4, -6, -n, -b, -l, -m, -p i -V, a uruchomiony bez celu wypisuje tę listę jako sposób użycia. Bez opcji zamienia adresy, które odpowiedziały, na nazwy; przy wysyłaniu na localhost w polu przeskoku pojawiło się localhost.
tracepath localhost 1?: [LOCALHOST] 0.003ms pmtu 65536
1: localhost 0.048ms reached
1: localhost 0.030ms reached
Resume: pmtu 65536 hops 1 back 1 [tracepath -n] wypisuje tylko adresy IP, bez zamiany na nazwy. Po dodaniu -n dla tego samego localhost pole przeskoku zmieniło się na adres IPv6 ::1, a trasa do example.com uruchomiona z -n również pokazała w tym polu tylko adresy.
tracepath -n localhost 1?: [LOCALHOST] 0.005ms pmtu 65536
1: ::1 0.039ms reached
1: ::1 0.010ms reached
Resume: pmtu 65536 hops 1 back 1 -b wypisuje nazwę i adres razem. Po dodaniu -b dla 127.0.0.1 adres pojawił się w nawiasie za nazwą: [localhost (127.0.0.1)].
tracepath -b 127.0.0.1 1: localhost (127.0.0.1) 0.050ms reached
Resume: pmtu 65535 hops 1 back 1 -m to opcja ustawiająca maksymalną liczbę sprawdzanych przeskoków; przyjmowała wartości od 0 do 255. Po dodaniu -m 0 od razu pojawiły się tylko wiersze Too many hops i Resume, bez wierszy przeskoków, a wartość 256 została odrzucona komunikatem [out of range].
tracepath -m 0 127.0.0.1 Too many hops: pmtu 65535
Resume: pmtu 65535 -l to długość pierwszego wysyłanego pakietu; domyślnie 65535 bajtów dla IPv4 i 128000 bajtów dla IPv6. Po dodaniu -l 1500 dla 127.0.0.1 pmtu w wierszu Resume zmieniło się z 65535 na 1500.
tracepath -l 1500 -n 127.0.0.1 1: 127.0.0.1 0.028ms reached
Resume: pmtu 1500 hops 1 back 1 -p to opcja ustawiająca pierwszy docelowy port UDP. Wynik z -p 33434 dla 127.0.0.1 był taki sam jak bez tej opcji.
| Opcja | Kopiuj | Opis |
|---|---|---|
| -n | Wypisuje tylko adresy IP, bez zamiany na nazwy | |
| -b | Wypisuje nazwę i adres razem | |
| -mprzeskoki | Ustawia maksymalną liczbę sprawdzanych przeskoków, domyślnie 30 | |
| -ldługość | Ustawia długość pierwszego pakietu, domyślnie IPv4 65535, IPv6 128000 | |
| -V | Wypisuje wersję i kończy działanie |
| Opcja | Kopiuj | Opis |
|---|---|---|
| -4 | Wysyła tylko na adresy IPv4 | |
| -6 | Wysyła tylko na adresy IPv6 | |
| -pPort | Ustawia pierwszy docelowy port UDP |
4️⃣ Różnice między tracepath a traceroute
Na serwerach, na których nie da się zainstalować traceroute, trasę sprawdza się poleceniem tracepath zamiast traceroute. Na sprawdzanym serwerze AlmaLinux 9.8 nie było pakietu traceroute, natomiast tracepath jest częścią pakietu iputils, więc działało bez osobnej instalacji.
rpm -q traceroutepackage traceroute is not installedNa serwerze Debian 12 było odwrotnie: traceroute 2.1.2 był zainstalowany, a pakiet iputils-tracepath zawierający tracepath nie był.
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterapt-cache policy iputils-tracepathiputils-tracepath:
Installed: (none)
Candidate: 3:20221126-1+deb12u1Jak pokazują te dwa serwery, dostępne polecenia zależą od dystrybucji, dlatego najpierw sprawdź, które z nich jest na serwerze, z którym masz połączenie. tracepath nie wymaga uprawnień root i działa na każdym koncie, które może wysyłać pakiety UDP. Plik wykonywalny tracepath na serwerze AlmaLinux 9.8 również miał uprawnienia rwxr-xr-x, bez dodatkowych uprawnień (capability).
| Pozycja | tracepath | traceroute |
|---|---|---|
| Serwer AlmaLinux 9.8 | W pakiecie iputils, działa od razu | Niezainstalowany |
| Serwer Debian 12 | Pakiet iputils-tracepath niezainstalowany | traceroute 2.1.2 zainstalowany |
| Wysyłane pakiety | UDP | Domyślnie UDP, -I dla ICMP, -T dla TCP |
| Wynik na przeskok | Jeden wiersz | Domyślnie trzy wysyłki, trzy czasy (zmiana opcją -q) |
| Liczba opcji | Osiem: -4 -6 -n -b -l -m -p -V | Ponad 20 na samym pierwszym ekranie --help |
Jeśli trzeba sprawdzić trasę przez ICMP lub TCP albo wysyłać kilka razy na przeskok, aby porównać czasy, trzeba zainstalować i używać polecenia traceroute. Na serwerach, gdzie instalacja jest trudna lub gdzie trzeba zobaczyć także MTU ścieżki, lepiej sprawdzi się tracepath.
🔲 Symulator polecenia tracepath
W symulatorze poniżej można ponownie obejrzeć trasę do example.com, zmieniając tylko liczbę przeskoków, albo samodzielnie wpisać -n, -b, -m i -l dla localhost i 127.0.0.1, aby porównać różnice.
🔢 FAQ & polecane treści
Zapora
Instalacja FirewallD w Linuksie i konfiguracja demona
Instalacja i ustawienia demona FirewallD, który zarządza regułami zapory za pomocą stref i usług.
Sieć · Konfiguracja
Polecenie netstat i polecenie ifconfig w Linuksie
Polecenia netstat i ifconfig, które pokazują otwarte porty, stany połączeń i informacje o interfejsach sieciowych.
Sieć · DNS
polecenie nslookup
Polecenie nslookup, które pyta serwer DNS, na jaki adres IP rozwiązuje się nazwa domeny.
ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.