Polecenie traceroute: instalacja, użycie i opcje -n, -I, -T
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
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 traceroutepackage traceroute is not installedW 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 tracerouteLast 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 tracerouteLast 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 --versionModern 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 --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterNa 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
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.comtraceroute 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 msPierwszy 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ę.
| Wynik | Znaczenie |
|---|---|
| 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 max | Maksymalna liczba sprawdzanych przeskoków — ustawiana opcją -m, domyślnie 30 |
| 60 byte packets | Rozmiar wysyłanych pakietów — domyślnie 60 bajtów dla IPv4 i 80 bajtów dla IPv6 (według oficjalnego podręcznika) |
| 1 | Numer przeskoku — wartość TTL nadana temu pakietowi |
| 192.0.2.1 | Adres routera, który odpowiedział na tym przeskoku |
| 0.110 ms 0.083 ms 0.067 ms | Czasy w obie strony trzech pakietów wysłanych na jeden przeskok |
| 198.51.100.77 … 198.51.100.13 | Wiersz 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 · !X | Znacznik 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 localhosttraceroute 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 msPo 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
--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 localhosttraceroute 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.1traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
1 127.0.0.1 0.096 mstraceroute -q 5 -n 127.0.0.1traceroute 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.1max hops cannot be more than 255Domyś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.1You do not have enough privileges to use this traceroute method.
socket: Operation not permittedtraceroute -T -n 127.0.0.1You do not have enough privileges to use this traceroute method.
socket: Operation not permittedOficjalny 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_range1 0Wartość 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
| Opcja | Zadanie | Wynik w tym artykule |
|---|---|---|
| -n | Wypisuje same adresy IP, bez zamiany na nazwy hostów | Na localhost w kolumnie przeskoku został tylko 127.0.0.1 |
| -q | Ustawia liczbę pakietów na przeskok (domyślnie 3) | -q 1 pokazuje jeden czas, -q 5 pięć |
| -m | Ustawia 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] |
| -I | Wysyła pakiety jako ICMP ECHO | Na zwykłym koncie komunikat o braku uprawnień i kod wyjścia 1 |
| -T | Wysyła pakiety jako TCP SYN (domyślnie port 80) | Na zwykłym koncie komunikat o braku uprawnień i kod wyjścia 1 |
| -U | Wysyła przez UDP ze stałym portem docelowym 53 | example.com pokazał * * * od siódmego do dziesiątego przeskoku, a adres celu się nie pojawił |
📎 Pozostałe opcje: według oficjalnego podręcznika
| Opcja | Zadanie |
|---|---|
| -w | Ustawia maksymalny czas oczekiwania na odpowiedź (domyślnie 5 sekund) |
| -p | Ustawia port (port początkowy dla UDP, stały port docelowy dla TCP, początkowy numer sekwencyjny dla ICMP) |
| -f | Ustawia początkowy TTL (domyślnie 1) |
| -N | Ustawia liczbę pakietów wysyłanych jednocześnie (domyślnie 16, zmniejsz przy routerach ograniczających tempo odpowiedzi) |
| -s | Zmienia adres źródłowy na adres innego interfejsu serwera |
| -i | Ustawia interfejs sieciowy, którym wychodzą pakiety (domyślnie według tablicy routingu) |
| -4 | Wysyła tylko przez IPv4 (domyślnie IPv4, gdy nazwa zwraca adresy IPv4 i IPv6) |
| -6 | Wysył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.
4️⃣ Przeskoki bez odpowiedzi w traceroute
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.comtraceroute 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średni | Brak odpowiedzi z tego przeskoku — jeśli dalsze przeskoki odpowiadają, pakiety go minęły | Zostaw to i czytaj dalsze przeskoki |
| Przed celem aż do -m | Cel 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 uruchomieniu | Gdy 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 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
Sieć · Konfiguracja
[Linux] Polecenie ip: zarządzanie interfejsami sieciowymi i ustawieniami
Polecenie ip sprawdza i zarządza stanem interfejsów sieciowych, adresami IP i tablicą routingu.
Zapora · Ubuntu
[Ubuntu] Konfiguracja zapory UFW w Ubuntu
Konfiguracja włączająca UFW, domyślną zaporę Ubuntu, oraz sprawdzanie jej stanu i reguł.
Sieć · DNS
Polecenie host w Linuksie | polecenie do zapytań DNS
Polecenie host odpytuje DNS, zamieniając nazwy hostów na adresy IP i adresy IP na nazwy hostów.
ℹ️ 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.