Polecenie traceroute: instalacja, użycie i opcje -n, -I, -T

Środowisko testoweRodzina RHELAlmaLinux 9.8konto rootDebian 12 · traceroute 2.1.2 zwykłe kontoSprawdzono 2026-10-29

Aby sprawdzić przeskok po przeskoku, przez które routery przechodzą pakiety w drodze do celu, użyj polecenia traceroute. Na serwerze AlmaLinux 9.8 traceroute nie był zainstalowany, więc zainstalowano go przez dnf, a na serwerze Debian 12 z traceroute 2.1.2 śledzenie trasy do example.com dotarło do celu na siódmym przeskoku.

Poniższe wyniki pochodzą z serwera Debian 12, ze zwykłego konta, a tylko wyniki rpm i dnf z rozdziału o instalacji pochodzą z serwera AlmaLinux 9.8 (konto root). Nazwę hosta serwera zmieniono na server1, a adresy routerów i celów na trasach zastąpiono adresami przykładowymi (192.0.2.x, 198.51.100.x, 203.0.113.x). Numer wydania zainstalowanego pakietu (wersja główna 2.1 bez zmian) i czas metadanych dnf też są wartościami przykładowymi, a czasy odpowiedzi pozostawiono takie, jak zmierzono.

1️⃣ Instalacja traceroute

  • ↪️ dnf w rodzinie RHEL, apt w rodzinie Debian

To, czy traceroute jest zainstalowany domyślnie, zależy od dystrybucji. Na serwerze AlmaLinux 9.8 uruchomienie zwróciło [traceroute: command not found], a zapytanie przez rpm nie znalazło zainstalowanego pakietu.

rpm -q traceroute
package traceroute is not installed

W rodzinie RHEL instalujesz go przez dnf. Podgląd z [--assumeno] pokazał tylko jeden pakiet do instalacji, traceroute z repozytorium baseos, bez żadnych dodatkowych pakietów.

dnf install --assumeno traceroute
Last metadata expiration check: 0:05:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Operation aborted.

Rozmiar pobierania wyniósł 56k, a rozmiar po instalacji 107k. [--assumeno] odpowiada no na wszystkie pytania, więc nic nie instaluje i kończy się komunikatem [Operation aborted.] (według oficjalnej dokumentacji dnf).

Właściwą instalację wykonano poleceniem [dnf install traceroute], bez [--assumeno].

dnf install traceroute
Last metadata expiration check: 0:20:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Downloading Packages:
traceroute-2.1.0-9.el9.x86_64.rpm               3.6 MB/s |  56 kB     00:00    
--------------------------------------------------------------------------------
Total                                            97 kB/s |  56 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Running scriptlet: traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Verifying        : traceroute-3:2.1.0-9.el9.x86_64                        1/1 

Installed:
  traceroute-3:2.1.0-9.el9.x86_64                                               

Complete!

Pod [Installed:] pojawił się tylko pakiet traceroute, a instalacja zakończyła się komunikatem [Complete!] bez pakietów zależności.

Po instalacji wersję sprawdzono poleceniem [traceroute --version].

traceroute --version
Modern traceroute for Linux, version 2.1.0
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Ścieżka pliku wykonywalnego znaleziona przez [command -v traceroute] to [/usr/bin/traceroute].

W rodzinie Debian instalujesz pakiet traceroute z repozytorium dystrybucji poleceniem [apt install traceroute] (według oficjalnych informacji o pakietach Debiana). Zainstalowaną wersję sprawdzisz przez --version.

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Na serwerze Debian 12 pakiet traceroute był już zainstalowany, a wersja pojawiła się jako [Modern traceroute for Linux] 2.1.2.

2️⃣ Jak używać polecenia traceroute

  • ↪️ Podstawowa postać i czytanie wierszy wyjścia

traceroute przyjmuje nazwę celu lub adres IP i wysyła pakiety z TTL, który zaczyna się od 1 i rośnie o jeden. Pakiet z TTL 1 wygasa na pierwszym routerze, a pakiet z TTL 2 na drugim. Na podstawie odpowiedzi [time exceeded] odsyłanych przez te routery traceroute wypisuje adres i czas w obie strony dla każdego przeskoku (według oficjalnego podręcznika).

Gdy pakiet dotrze do celu, cel odpowiada komunikatem [port unreachable] i śledzenie kończy się na tym przeskoku; jeśli nie dotrze, trwa do maksymalnej liczby przeskoków. Według oficjalnego podręcznika na każdy przeskok wysyłane są trzy pakiety, więc w wierszu widać trzy czasy, a domyślnie sprawdzanych jest do 30 przeskoków.

Dla example.com wypisano same adresy opcją -n i sprawdzono tylko do dziesiątego przeskoku opcją -m 10.

traceroute -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.110 ms  0.083 ms  0.067 ms
 2  192.0.2.2  0.348 ms  0.273 ms  0.263 ms
 3  198.51.100.77  0.426 ms  0.337 ms 198.51.100.13  1.251 ms
 4  198.51.100.49  0.968 ms  1.264 ms 198.51.100.53  1.148 ms
 5  * * *
 6  203.0.113.19  1.631 ms 203.0.113.25  2.549 ms 203.0.113.14  1.543 ms
 7  203.0.113.154  1.544 ms  1.656 ms  1.607 ms

Pierwszy wiersz pokazał nazwę celu, faktycznie użyty adres, maksymalną liczbę przeskoków i rozmiar pakietu 60 bajtów. Na siódmym przeskoku odpowiedział adres celu, więc śledzenie zakończyło się przed dziesiątym przeskokiem, a całe uruchomienie trwało krócej niż sekundę.

WynikZnaczenie
traceroute to example.com (203.0.113.154)Nazwa celu i adres, na który została rozwiązana i na który faktycznie wysłano pakiety
10 hops maxMaksymalna liczba sprawdzanych przeskoków — ustawiana opcją -m, domyślnie 30
60 byte packetsRozmiar wysyłanych pakietów — domyślnie 60 bajtów dla IPv4 i 80 bajtów dla IPv6 (według oficjalnego podręcznika)
1Numer przeskoku — wartość TTL nadana temu pakietowi
192.0.2.1Adres routera, który odpowiedział na tym przeskoku
0.110 ms 0.083 ms 0.067 msCzasy w obie strony trzech pakietów wysłanych na jeden przeskok
198.51.100.77 … 198.51.100.13Wiersz z dwoma adresami, bo na tym samym przeskoku na różne pakiety odpowiedziały różne routery
* * *Żaden z trzech pakietów nie dostał odpowiedzi na czas — każda gwiazdka to jeden pakiet
!H · !N · !P · !XZnacznik nieosiągalności po czasie — host, sieć lub protokół nieosiągalne, zakaz administracyjny (według oficjalnego podręcznika)

Trzeci i czwarty przeskok pokazały dwa adresy w jednym wierszu, a szósty przeskok trzy. Gdy na trzy pakiety wysłane na przeskok odpowiadają różne routery, traceroute wypisuje kolejno wszystkie adresy, które odpowiedziały, zgodnie z oficjalnym podręcznikiem.

Bez -n traceroute zamienia odpowiadające adresy na nazwy hostów.

traceroute localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  server1 (127.0.0.1)  0.068 ms  0.048 ms  0.028 ms

Po uruchomieniu na localhost w kolumnie przeskoku pojawiła się nazwa hosta serwera Debian 12, a w nawiasie adres 127.0.0.1.

3️⃣ Opcje traceroute

  • ↪️ -n, -q, -m oraz sposoby wysyłania -I, -T

--help w traceroute 2.1.2 wymienia 34 opcje. Spośród nich na zwykłym koncie serwera Debian 12 sprawdzono -n, -q i -m, które zmieniają wyjście, oraz -I i -T, które zmieniają wysyłane pakiety.

[traceroute -n] wypisuje same adresy IP, bez zamiany na nazwy hostów. Z -n na tym samym localhost w kolumnie przeskoku został tylko 127.0.0.1.

traceroute -n localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.073 ms  0.075 ms  0.025 ms

-q ustawia liczbę pakietów wysyłanych na przeskok, domyślnie 3. Przy -q 1 pojawił się jeden czas, a przy -q 5 pięć.

traceroute -q 1 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.096 ms
traceroute -q 5 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.083 ms  0.028 ms  0.024 ms  0.022 ms  0.022 ms

-m zmienia maksymalną liczbę sprawdzanych przeskoków. Wartość 256 została odrzucona komunikatem [max hops cannot be more than 255].

traceroute -m 256 -n 127.0.0.1
max hops cannot be more than 255

Domyślnie pakiety są wysyłane przez UDP. -I wysyła je jako ICMP ECHO, a -T jako TCP SYN (domyślnie port 80). Te dwie opcje służą do ponownego sprawdzenia innym typem pakietu trasy, która filtruje UDP. Na zwykłym koncie obie opcje zostawiły komunikat o braku uprawnień i zakończyły się kodem wyjścia 1.

traceroute -I -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted
traceroute -T -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted

Oficjalny podręcznik wymienia metodę domyślną i -U (stały port docelowy 53) jako metody dozwolone dla zwykłych kont. -I działa na zwykłym koncie tylko wtedy, gdy ustawienie jądra ping_group_range dopuszcza grupę tego konta.

cat /proc/sys/net/ipv4/ping_group_range
1	0

Wartość na serwerze Debian 12 to [1 0], co według dokumentacji jądra Linuksa nie dopuszcza żadnej grupy. -T niezależnie od tego ustawienia nie należy do metod dozwolonych dla zwykłych kont, więc obie opcje uruchamiaj z konta z uprawnieniami root.

📌 Główne opcje: wyniki z tego artykułu

OpcjaZadanieWynik w tym artykule
-nWypisuje same adresy IP, bez zamiany na nazwy hostówNa localhost w kolumnie przeskoku został tylko 127.0.0.1
-qUstawia liczbę pakietów na przeskok (domyślnie 3)-q 1 pokazuje jeden czas, -q 5 pięć
-mUstawia maksymalną liczbę sprawdzanych przeskoków (domyślnie 30)Przy -m 10 example.com zakończył się na siódmym przeskoku, -m 256 odrzucono komunikatem [max hops cannot be more than 255]
-IWysyła pakiety jako ICMP ECHONa zwykłym koncie komunikat o braku uprawnień i kod wyjścia 1
-TWysyła pakiety jako TCP SYN (domyślnie port 80)Na zwykłym koncie komunikat o braku uprawnień i kod wyjścia 1
-UWysyła przez UDP ze stałym portem docelowym 53example.com pokazał * * * od siódmego do dziesiątego przeskoku, a adres celu się nie pojawił

📎 Pozostałe opcje: według oficjalnego podręcznika

OpcjaZadanie
-wUstawia maksymalny czas oczekiwania na odpowiedź (domyślnie 5 sekund)
-pUstawia port (port początkowy dla UDP, stały port docelowy dla TCP, początkowy numer sekwencyjny dla ICMP)
-fUstawia początkowy TTL (domyślnie 1)
-NUstawia liczbę pakietów wysyłanych jednocześnie (domyślnie 16, zmniejsz przy routerach ograniczających tempo odpowiedzi)
-sZmienia adres źródłowy na adres innego interfejsu serwera
-iUstawia interfejs sieciowy, którym wychodzą pakiety (domyślnie według tablicy routingu)
-4Wysyła tylko przez IPv4 (domyślnie IPv4, gdy nazwa zwraca adresy IPv4 i IPv6)
-6Wysyła tylko przez IPv6

🔲 Symulator polecenia traceroute

W symulatorze poniżej możesz skrócić trasę do example.com opcją -m albo wpisać dla 127.0.0.1 i localhost opcje -n, -q, -f (przeskok początkowy) oraz wymagające uprawnień -I i -T.

Symulator polecenia traceroutetraceroute 2.1.2
[root@server work]#
Działa tylko w twojej przeglądarce i nie wysyła prawdziwych pakietów. Klawiszami ↑↓ przywołasz wcześniejsze polecenia.

4️⃣ Przeskoki bez odpowiedzi w traceroute

  • ↪️ Wiersze * * * i zapory sieciowe

Nawet jeśli możesz zmienić sposób wysyłania, przeskok bez odpowiedzi pozostaje jako [* * *]. Według oficjalnego podręcznika każda gwiazdka to jeden pakiet bez odpowiedzi na czas, a oczekiwanie trwa najwyżej 5 sekund.

Widząc * * * na przeskoku pośrednim, łatwo uznać, że trasa w tym miejscu się urywa. Na trasie do example.com wysłanej metodą domyślną tylko piąty przeskok miał * * *, ale pakiety minęły ten przeskok, przeszły przez szósty i dotarły do celu na siódmym.

-U wysyła ze stałym portem docelowym 53. Po wysłaniu pakietów do tego samego example.com z -U na szóstym przeskoku odpowiedział router przed celem, a potem * * * trwało od siódmego do dziesiątego przeskoku i adres celu się nie pojawił.

traceroute -U -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.176 ms  0.096 ms  0.661 ms
 2  * * *
 3  198.51.100.13  0.622 ms  0.586 ms  0.562 ms
 4  198.51.100.49  0.898 ms  1.314 ms 198.51.100.53  1.159 ms
 5  * * *
 6  203.0.113.9  3.773 ms 203.0.113.27  3.275 ms 203.0.113.14  8.973 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *

Oficjalny podręcznik wyjaśnia, że przy -U program po stronie celu zwykle nie odpowiada, więc ostatniego przeskoku nie widać. Na trasie, na której zapora sieciowa filtruje porty UDP traceroute lub ICMP ECHO, zza tej zapory też nie przychodzą odpowiedzi i trwa tylko * * *.

Gdzie pojawia się * * *Jak to czytaćPonowne sprawdzenie
Jeden przeskok pośredniBrak odpowiedzi z tego przeskoku — jeśli dalsze przeskoki odpowiadają, pakiety go minęłyZostaw to i czytaj dalsze przeskoki
Przed celem aż do -mCel lub zapora sieciowa przed nim filtruje ten pakiet lub port (według oficjalnego podręcznika)Metoda domyślna / -T (root) / [-T -p port]
Przeskoki zmieniające się przy każdym uruchomieniuGdy router ogranicza tempo odpowiedzi ICMP, części odpowiedzi może brakować (według oficjalnego podręcznika)[-N 1] · [-w 5]

Jeśli śledzenie zatrzymało się przed celem, zmień sposób wysyłania i sprawdź ponownie. Oficjalny podręcznik przedstawia -T jako metodę stworzoną do przechodzenia przez zapory sieciowe. Dla celu z wyraźnie otwartym portem, takiego jak serwer poczty, po wskazaniu tego portu, jak w [-T -p 25], pakiety mogą dotrzeć nawet wtedy, gdy -I nie dociera.

* na przeskoku pośrednim może się też zmieniać zależnie od sposobu wysyłania lub uruchomienia. Drugi przeskok odpowiedział przy metodzie domyślnej, ale przy -U pokazał * * *. Oficjalny podręcznik podaje, że gdy router ogranicza tempo odpowiedzi ICMP, części odpowiedzi może brakować, i radzi zmniejszyć liczbę pakietów wysyłanych jednocześnie przez [-N 1]. traceroute skraca też oczekiwanie na podstawie otrzymanych już czasów odpowiedzi; jeśli przez to * pojawia się zbyt wcześnie, podaj jeden czas oczekiwania, jak w [-w 5], aby wyłączyć to obliczanie (według oficjalnego podręcznika).

5️⃣ tracepath zamiast traceroute

  • ↪️ Na serwerach, gdzie instalacja jest trudna

Na serwerze, na którym nie możesz instalować pakietów, tę samą trasę sprawdzisz poleceniem tracepath. Serwer AlmaLinux 9.8 nie miał traceroute, ale miał tracepath w pakiecie iputils 20210202. Serwer Debian 12 natomiast nie miał tracepath. Według oficjalnego podręcznika tracepath działa bez uprawnień root, ale ma mniej opcji i wysyła tylko UDP. Dlatego gdy chcesz zmienić sposób wysyłania przez -I lub -T albo wysłać kilka pakietów na przeskok przez -q, aby je porównać, zainstaluj i używaj traceroute.

🔢 FAQ & polecane treści

Nie, kod wyjścia tego nie pokazuje. Wynosił 0 zarówno wtedy, gdy metoda domyślna dotarła do example.com na siódmym przeskoku, jak i wtedy, gdy -U nie dotarło do celu do dziesiątego przeskoku. Błędne opcje, wartości -m spoza zakresu i nieudane rozwiązywanie nazw zakończyły się kodem 2, a -I i -T na zwykłym koncie kodem 1. Kod wyjścia rozróżnia tylko błędy wykonania, więc to, czy cel został osiągnięty, sprawdzisz po tym, czy w ostatnim wierszu jest adres celu.

Według dokumentacji Microsoftu tracert w Windows wysyła ICMP Echo Request, zwiększając TTL, a traceroute w Linuksie domyślnie wysyła pakiety UDP (według oficjalnego podręcznika). Aby w Linuksie sprawdzić tą samą metodą ICMP co tracert, dodaj -I.

Gdy ustawisz pierwszy TTL opcją -f, wyjście zacznie się od tego przeskoku. Według oficjalnego podręcznika wartość domyślna to 1, a -f 2 dla 127.0.0.1 sprawiło, że numery przeskoków zaczęły się od 2. Gdy maksymalny przeskok jest mniejszy niż początkowy, jak przy -m 0, polecenie zostało odrzucone komunikatem [first hop out of range].

ℹ️ 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 5   +   8   =