Jak uruchomić Traceroute w systemach Windows, Mac i Linux
A traceroute to narzędzie diagnostyczne sieci, które mapuje dokładną ścieżkę, jaką pakiety IP pokonują od Twojego komputera do docelowego hosta, rejestrując każdy pośredni router (hop) po drodze i mierząc czas podróży w obie strony (RTT) do każdego z nich. Jest to najskuteczniejsze narzędzie do izolowania, czy skok opóźnienia, utrata pakietów lub anomalia routingu pochodzi z Twojej sieci lokalnej, infrastruktury Twojego dostawcy usług internetowych, szkieletu tranzytowego, czy samego serwera docelowego.
Gdy uruchamiasz traceroute, Twój system wysyła serię pakietów sondujących z przyrostowo rosnącymi wartościami TTL (Time To Live). Każdy router, który zmniejsza TTL do zera, zwraca komunikat ICMP „Time Exceeded”, ujawniając swoją tożsamość i czas odpowiedzi. Ten mechanizm sprawia, że traceroute jest zasadniczo różny od prostego `ping` — ujawnia pełną topologię routingu, a nie tylko osiągalność end-to-end.
Jak działa Traceroute od środka
Zrozumienie podstawowych mechanizmów zapobiega błędnej interpretacji wyników — błędowi, który popełniają nawet doświadczeni administratorzy.
- Windows (`tracert`) domyślnie wysyła pakiety ICMP Echo Request.
- Linux i macOS (`traceroute`) domyślnie wysyłają datagramy UDP na porty o wysokich numerach (33434+), choć jest to konfigurowalne.
- Każda sonda jest wysyłana trzy razy na hop, co daje trzy pomiary RTT na linię.
- Router, który ogranicza przepustowość lub odrzuca ICMP/UDP, będzie wyświetlał gwiazdki (`* * *`), ale nie oznacza to koniecznie, że ścieżka za nim jest przerwana.
Ta różnica w zachowaniu między systemami operacyjnymi jest kluczowa: hop, który wydaje się nieresponsywny na Linux, może normalnie odpowiadać na Windows, po prostu dlatego, że ACL routera blokuje UDP, ale zezwala na ICMP.
Jak uruchomić Traceroute na Windows
Krok 1: Otwórz Wiersz poleceń
Naciśnij `Win + R`, wpisz `cmd` i naciśnij Enter. Alternatywnie wyszukaj Wiersz poleceń w menu Start. W środowiskach, gdzie ICMP jest ograniczone, rozważ uruchomienie jako Administrator.
Krok 2: Wykonaj polecenie
“`
tracert example.com
“`
Zastąp `example.com` docelową nazwą domeny lub adresem IP. Windows rozwiązuje nazwę hosta na adres IP przed wysłaniem pierwszej sondy.
Krok 3: Odczytaj wyniki
“`
Tracing route to example.com [93.184.216.34] over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.0.1
2 10 ms 11 ms 10 ms 10.0.0.1
3 15 ms 16 ms 15 ms isp.gateway.net [203.0.113.1]
4 * * * Request timed out.
5 22 ms 21 ms 23 ms core1.backbone.net [198.51.100.5]
“`
Kluczowe opcje `tracert` na Windows
| Flaga | Funkcja |
|---|---|
| — | — |
| `-d` | Pomija odwrotne wyszukiwania DNS, znacznie przyspiesza wyniki |
| `-h <max_hops>` | Ustawia maksymalną liczbę hopów (domyślnie: 30) |
| `-w <timeout>` | Ustawia czas oczekiwania w milisekundach na sondę (domyślnie: 4000 ms) |
| `-4` | Wymusza IPv4 |
| `-6` | Wymusza IPv6 |
Przykład z opcjami:
“`
tracert -d -h 20 -w 2000 example.com
“`
Wskazówka: Na Windows `tracert -d` to najszybszy sposób na uzyskanie wyników, gdy zależy Ci tylko na routingu na poziomie IP, a nie na nazwach hostów. Odwrotne wyszukiwania DNS mogą dodać kilka sekund na hop w przeciążonych sieciach.
Jak uruchomić Traceroute na macOS
Krok 1: Otwórz Terminal
Naciśnij `Command + Space`, wpisz Terminal i naciśnij Enter. Lub przejdź do Aplikacje > Narzędzia > Terminal.
Krok 2: Wykonaj polecenie
“`
traceroute example.com
“`
macOS jest dostarczany z `traceroute` preinstalowanym jako część zestawu narzędzi sieciowych BSD. Nie jest wymagana żadna dodatkowa instalacja.
Krok 3: Odczytaj wyniki
“`
traceroute to example.com (93.184.216.34), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 1.206 ms 0.930 ms 0.799 ms
2 10.0.0.1 (10.0.0.1) 10.123 ms 10.456 ms 10.678 ms
3 isp.gateway.net (203.0.113.1) 15.789 ms 15.012 ms 15.234 ms
“`
Zauważ, że macOS domyślnie używa maksymalnie 64 hopów w porównaniu do 30 w Windows — ma to znaczenie przy śledzeniu ścieżek do geograficznie odległych lub złożonych miejsc docelowych w sieci.
Kluczowe opcje `traceroute` na macOS
| Flaga | Funkcja |
|---|---|
| — | — |
| `-n` | Wyłącza rozwiązywanie nazw hostów, wyświetla tylko surowe adresy IP |
| `-q <nqueries>` | Zmienia liczbę sond na hop (domyślnie: 3) |
| `-m <max_ttl>` | Ustawia maksymalny TTL / liczbę hopów |
| `-w <waittime>` | Limit czasu w sekundach na sondę |
| `-I` | Używa ICMP Echo zamiast UDP (przydatne gdy UDP jest zablokowane) |
| `-T` | Używa sond TCP SYN (wymaga uprawnień root; omija wiele zapór sieciowych) |
Przykład — tryb ICMP do ominięcia filtrowania UDP:
“`
sudo traceroute -I example.com
“`
Przykład — tryb TCP SYN na porcie 80 (najbardziej przyjazny dla zapór sieciowych):
“`
sudo traceroute -T -p 80 example.com
“`
Jak uruchomić Traceroute na Linux
Krok 1: Otwórz Terminal
Naciśnij `Ctrl + Alt + T` lub znajdź terminal w programie uruchamiającym aplikacje.
Krok 2: Zainstaluj `traceroute` jeśli potrzebne
W wielu minimalnych lub serwerowych dystrybucjach Linux `traceroute` nie jest instalowany domyślnie.
Debian / Ubuntu:
“`
sudo apt-get install traceroute
“`
CentOS / RHEL / AlmaLinux / Rocky Linux:
“`
sudo yum install traceroute
“`
Fedora:
“`
sudo dnf install traceroute
“`
Arch Linux:
“`
sudo pacman -S traceroute
“`
Krok 3: Wykonaj polecenie
“`
traceroute example.com
“`
Krok 4: Odczytaj wyniki
“`
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 0.728 ms 0.457 ms 0.373 ms
2 10.0.0.1 (10.0.0.1) 9.862 ms 9.946 ms 10.123 ms
3 isp.gateway.net (203.0.113.1) 14.987 ms 14.123 ms 15.456 ms
“`
Kluczowe opcje `traceroute` na Linux
| Flaga | Funkcja |
|---|---|
| — | — |
| `-n` | Wyłącza odwrotne rozwiązywanie DNS |
| `-I` | Wysyła sondy ICMP Echo (wymaga uprawnień root) |
| `-T` | Wysyła sondy TCP SYN (wymaga uprawnień root) |
| `-U` | Wysyła sondy UDP (domyślne zachowanie) |
| `-p <port>` | Określa port docelowy |
| `-m <max_ttl>` | Maksymalna liczba hopów |
| `-q <nqueries>` | Liczba sond na hop |
| `-A` | Wyświetla numery AS (Autonomous System) obok każdego hopu |
Flaga `-A` jest szczególnie przydatna do diagnozowania problemów z routingiem między AS — pokazuje, który dostawca usług internetowych lub operator sieci jest właścicielem każdego hopu, pozwalając dokładnie wskazać, gdzie przekazanie między operatorami powoduje opóźnienie.
“`
traceroute -A example.com
“`
`mtr` — Lepsza alternatywa na Linux
Do bieżącej lub interaktywnej diagnostyki `mtr` (Matt’s Traceroute) łączy `ping` i `traceroute` w stale odświeżany wyświetlacz. Jest to preferowane narzędzie wśród inżynierów sieciowych do analizy utraty pakietów w czasie rzeczywistym.
“`
sudo apt-get install mtr
mtr example.com
“`
`mtr` gromadzi statystyki w czasie, dzięki czemu sporadyczna utrata pakietów staje się widoczna — coś, czego jednorazowy `traceroute` całkowicie przeoczy.
Porównanie między platformami: tracert vs. traceroute
| Funkcja | Windows (`tracert`) | macOS (`traceroute`) | Linux (`traceroute`) |
|---|---|---|---|
| — | — | — | — |
| Domyślny protokół sondy | ICMP Echo Request | UDP | UDP |
| Domyślna maksymalna liczba hopów | 30 | 64 | 30 |
| Domyślna liczba sond na hop | 3 | 3 | 3 |
| Rozmiar pakietu (domyślny) | 40 bytes | 52 bytes | 60 bytes |
| Tryb ICMP | Domyślny | Flaga `-I` (root) | Flaga `-I` (root) |
| Tryb TCP SYN | Niedostępny natywnie | Flaga `-T` (root) | Flaga `-T` (root) |
| Wyszukiwanie numerów AS | Niedostępne | Niedostępne | Flaga `-A` |
| Obsługa IPv6 | Flaga `-6` | Polecenie `traceroute6` | Flaga `-6` |
| Wbudowany w system operacyjny | Tak | Tak | Często wymaga instalacji |
Rozumienie wyników Traceroute: Techniczne omówienie
Numer hopu
Każda linia reprezentuje jeden router na ścieżce. Hop 1 to prawie zawsze Twoja brama domyślna (router domowy lub przełącznik LAN). Hop 2 to zazwyczaj pierwszy punkt agregacji Twojego dostawcy usług internetowych.
Czasy odpowiedzi (RTT)
Na hop wyświetlane są trzy wartości RTT. Zdrowe wartości zazwyczaj podążają wzorcem stopniowego wzrostu w miarę jak hopy gromadzą odległość geograficzną. Nagły skok o 50+ ms przy konkretnym hopie, który utrzymuje się przez wszystkie kolejne hopy, wskazuje na rzeczywiste wąskie gardło w tym węźle.
Interpretacja `* * *` (gwiazdek)
Gwiazdki oznaczają, że sonda przekroczyła limit czasu — router nie zwrócił odpowiedzi ICMP w oknie oczekiwania. Nie jest to automatycznie problem. Wiele routerów korporacyjnych i węzłów szkieletowych depriorytetyzuje lub po cichu odrzuca pakiety sondujące ICMP/UDP ze względów bezpieczeństwa, jednocześnie normalnie przekazując ruch. Jeśli hopy po gwiazdkach wykazują normalne RTT, ścieżka jest nienaruszona.
Wysokie opóźnienie przy jednym hopie
Jeśli hop 7 pokazuje 200 ms, ale hop 8 pokazuje 25 ms, odczyt 200 ms to prawie na pewno ograniczanie przepustowości ICMP na routerze hopu 7 — nie rzeczywiste wąskie gardło. Router przetwarza sondę z niskim priorytetem, jednocześnie przekazując rzeczywisty ruch z pełną prędkością. Zawsze oceniaj trendy opóźnień na całej ścieżce, a nie poszczególne hopy w izolacji.
Routing asymetryczny
Traceroute mapuje tylko ścieżkę w przód. Pakiety powrotne mogą podążać zupełnie inną trasą. Oznacza to, że zaobserwowany skok opóźnienia może pochodzić ze ścieżki powrotnej, a nie ze ścieżki w przód pokazanej na wynikach. Do pełnej widoczności potrzebne są narzędzia takie jak `traceroute` w obu kierunkach (ze źródła i z miejsca docelowego).
Pętle routingu
Jeśli ten sam adres IP pojawia się przy wielu kolejnych hopach, istnieje pętla routingu. Pakiety są przekazywane między dwoma routerami w nieskończoność, aż TTL wygaśnie. Jest to błąd konfiguracji i spowoduje całkowity brak łączności z tym miejscem docelowym.
Typowe scenariusze Traceroute i ich znaczenie
Scenariusz 1: Wysokie opóźnienie zaczynające się od hopu 2
Pierwszy punkt agregacji Twojego dostawcy usług internetowych jest przeciążony. Jest to poza Twoją kontrolą. Udokumentuj wyniki ze znacznikami czasu i skontaktuj się z dostawcą usług internetowych z dowodami.
Scenariusz 2: Wszystkie hopy po hopie 5 pokazują `* * *`, ale miejsce docelowe odpowiada na ping
Routery nadrzędne miejsca docelowego blokują sondy ICMP. Przełącz się na tryb TCP SYN (`-T -p 443`), aby śledzić przez zapory sieciowe.
Scenariusz 3: Skoki opóźnienia przy hopie zlokalizowanym w nieoczekiwanym kraju
Twój ruch jest kierowany międzynarodowo przed dotarciem do lokalnego miejsca docelowego — anomalia routingu BGP. Jest to powszechne przy błędnie skonfigurowanym anycast lub słabo połączonych dostawcach usług internetowych.
Scenariusz 4: Traceroute kończy się, ale strona internetowa nadal działa wolno
Wąskie gardło może być po stronie serwera: przeciążony CPU, wolna odpowiedź aplikacji lub opóźnienie bazy danych. Traceroute mierzy tylko wydajność warstwy sieciowej. Jeśli hostujesz na VPS i doświadczasz tego problemu, zbadaj wykorzystanie zasobów serwera za pomocą `top`, `htop` lub `vmstat`.
Scenariusz 5: Traceroute nigdy się nie kończy (zatrzymuje się przy konkretnym hopie w nieskończoność)
Zapora sieciowa odrzuca Twoje sondy, a miejsce docelowe jest nieosiągalne. Potwierdź za pomocą `ping` do miejsca docelowego. Jeśli ping również nie działa, host jest wyłączony lub blokuje wszystkie ICMP. Jeśli ping działa, zablokowany jest tylko protokół sondy — zmień protokół.
Traceroute do diagnostyki serwera i hostingu
Traceroute jest niezbędny przy diagnozowaniu problemów z łącznością między Twoją infrastrukturą a użytkownikami końcowymi lub między usługami. Jeśli uruchamiasz aplikacje na Serwerze Dedykowanym, traceroute z wielu geograficznie rozproszonych punktów obserwacyjnych ujawnia, czy opóźnienie jest zlokalizowane w konkretnym regionie lub u dostawcy usług internetowych.
W środowiskach hostingowych zarządzanych przez panel sterowania, śledzenie tras do adresu IP Twojego serwera po stronie klienta pomaga rozróżnić między problemem na poziomie hostingu a problemem z tranzytem sieciowym. Administratorzy używający VPS z cPanel mogą porównywać dane traceroute z dziennikami dostępu po stronie serwera, aby zbudować pełny obraz skargi dotyczącej łączności.
Przy diagnozowaniu błędów dostarczania poczty e-mail lub przekroczeń limitu czasu SMTP, uruchomienie traceroute do adresu IP Twojego serwera pocztowego jest logicznym pierwszym krokiem przed zbadaniem rekordów SPF/DKIM. Jeśli korzystasz z dedykowanej usługi Hostingu Poczty E-mail, pomaga to potwierdzić, czy problem jest na poziomie sieci czy konfiguracji.
W przypadku obciążeń wrażliwych na opóźnienia, takich jak wnioskowanie uczenia maszynowego lub potoki renderowania działające na Hostingu GPU, traceroute pomaga zweryfikować, czy ścieżka sieciowa między Twoim klientem a węzłem GPU jest optymalnie trasowana bez nieoczekiwanych hopów tranzytowych.
Zaawansowane techniki: Traceroute online i rozproszony
Traceroute z jednego punktu pokazuje tylko ścieżkę z Twojego komputera. Do kompleksowej analizy sieci:
- Serwery Looking Glass: Wielu dostawców usług internetowych i IXP obsługuje publiczne serwery looking glass, które pozwalają uruchamiać traceroute z ich krawędzi sieci, ujawniając ścieżkę z perspektywy operatora.
- BGP.tools / RIPE Atlas: Rozproszone platformy pomiarowe, które uruchamiają traceroute z setek globalnych punktów obserwacyjnych jednocześnie, ujawniając regionalne anomalie routingu niewidoczne z jednej lokalizacji.
- PathPing (Windows): Wbudowane narzędzie Windows, które łączy `ping` i `tracert`, uruchamiając ciągłe sondy do każdego hopu i obliczając statystyki utraty pakietów. Uruchom za pomocą: `pathping example.com`
- WinMTR: Graficzny odpowiednik `mtr` dla Windows, zapewniający statystyki utraty pakietów i opóźnień w czasie rzeczywistym dla każdego hopu.
Praktyczna macierz decyzyjna: Które narzędzie wybrać
| Sytuacja | Zalecane narzędzie |
|---|---|
| — | — |
| Szybkie jednorazowe sprawdzenie ścieżki na Windows | `tracert -d target` |
| Szybkie jednorazowe sprawdzenie ścieżki na Linux/macOS | `traceroute -n target` |
| Bieżąca/w czasie rzeczywistym analiza utraty pakietów | `mtr target` |
| Cel za zaporą sieciową blokującą ICMP/UDP | `traceroute -T -p 443 target` (Linux/macOS) |
| Identyfikacja, który dostawca usług internetowych jest właścicielem każdego hopu | `traceroute -A target` (Linux) |
| Diagnozowanie z wielu globalnych lokalizacji | RIPE Atlas lub BGP.tools |
| Statystyki ciągłej utraty pakietów na Windows | `pathping target` |
| Porównywanie ścieżek w przód i w tył | Uruchom traceroute z obu punktów końcowych |
Kluczowe wnioski techniczne
- Zawsze najpierw używaj `-n` lub `-d`, aby wyeliminować opóźnienia rozwiązywania DNS i szybciej uzyskać surowe wyniki.
- Hop pokazujący `* * *` nie wskazuje na przerwaną ścieżkę — oceń hopy, które po nim następują.
- Opóźnienie przy jednym pośrednim hopie to często ograniczanie przepustowości ICMP, a nie rzeczywiste wąskie gardło.
- Zmieniaj protokoły sond (ICMP, UDP, TCP SYN), gdy napotykasz trwałe przekroczenia limitu czasu — zapory sieciowe są selektywne pod względem protokołu.
- Używaj `mtr` zamiast `traceroute` w każdej sesji diagnostycznej dłuższej niż jednorazowe sprawdzenie.
- Traceroute ujawnia tylko ścieżkę w przód. Routing asymetryczny wymaga analizy dwukierunkowej.
- Flaga `-A` w Linux traceroute dodaje adnotację numeru AS, która jest niezbędna do analizy routingu z wieloma dostawcami usług internetowych.
- Dokumentuj wyniki traceroute ze znacznikami czasu przy składaniu zgłoszeń do pomocy technicznej dostawcy usług internetowych — operatorzy wymagają tych danych do badania problemów na poziomie BGP.
Często zadawane pytania
Dlaczego traceroute pokazuje `* * *` dla niektórych hopów, ale miejsce docelowe jest nadal osiągalne?
Routery na ścieżce są skonfigurowane do odrzucania lub ograniczania przepustowości komunikatów ICMP TTL-exceeded, jednocześnie normalnie przekazując ruch. Jest to celowa polityka bezpieczeństwa i wydajności na większości routerów korporacyjnych i klasy operatorskiej. Nie wskazuje to na utratę pakietów na ścieżce danych.
Jaka jest różnica między `tracert` na Windows a `traceroute` na Linux?
Podstawowa różnica to domyślny protokół sondy: `tracert` używa ICMP Echo Requests, podczas gdy Linux/macOS `traceroute` używa datagramów UDP. Oznacza to, że wchodzą w różne interakcje z zaporami sieciowymi i ACL. Linux `traceroute` obsługuje również sondy TCP SYN i wyszukiwanie numerów AS, czego `tracert` nie robi.
Jak uruchomić traceroute przez zaporę sieciową blokującą UDP i ICMP?
Użyj trybu TCP SYN z portem, który jest prawie na pewno otwarty na celu, takim jak port 80 lub 443: `sudo traceroute -T -p 443 example.com`. Sondy TCP SYN przechodzą przez większość stanowych zapór sieciowych, ponieważ przypominają początek legalnego połączenia.
Co oznacza nagły wzrost opóźnienia w traceroute, który utrzymuje się dla wszystkich pozostałych hopów?
Trwały wzrost opóźnienia od konkretnego hopu wskazuje na rzeczywiste wąskie gardło lub przeciążone łącze w tym miejscu ścieżki. Różni się to od skoku przy jednym hopie (który zazwyczaj jest ograniczaniem przepustowości). Trwały wzrost oznacza, że cały ruch jest opóźniany w tym węźle lub na łączu bezpośrednio po nim.
Czy traceroute może diagnozować wolne działanie strony internetowej?
Traceroute diagnozuje tylko opóźnienia na poziomie sieci i problemy z routingiem. Jeśli ścieżka sieciowa wygląda dobrze, ale strona internetowa nadal działa wolno, problem jest po stronie serwera — czas przetwarzania aplikacji, opóźnienie zapytań do bazy danych lub wyczerpanie zasobów. Używaj narzędzi do monitorowania serwera razem z traceroute, aby uzyskać pełną diagnozę.
