Traceroute: odkrywanie ścieżek sieciowych
Wprowadzenie
Traceroute jest jednym z podstawowych narzędzi diagnostycznych używanych przez administratorów IT do analizy ścieżek, którymi pakiety danych przemieszczają się przez sieci (zarówno lokalne, jak i Internet). To narzędzie pozwala śledzić trasę pakietów od źródła do celu, pokazując każdy węzeł (router) po drodze oraz czas potrzebny do jego osiągnięcia. W tym artykule przyjrzę się temu, jak działa traceroute.
Jak działa traceroute?
Podstawowa koncepcja
Traceroute wykorzystuje protokół IP i mechanizm TTL (Time To Live) do odkrywania ścieżek sieciowych. Zasada działania jest następująca:
- Narzędzie wysyła serię pakietów (domyślnie używając protokołu UDP, ICMP lub TCP) do hosta docelowego.
- Każdy pakiet ma przypisaną wartość TTL, która określa maksymalną liczbę przeskoków, jakie może wykonać, zanim zostanie odrzucony.
- Traceroute zaczyna od wysłania pakietu z TTL=1, a następnie stopniowo zwiększa tę wartość dla kolejnych pakietów.
- Gdy router otrzymuje pakiet, zmniejsza wartość TTL o 1. Jeśli TTL osiągnie 0, router odrzuca pakiet i zwraca do nadawcy komunikat ICMP "Time Exceeded" (Przekroczony czas).
- Traceroute mierzy czas między wysłaniem pakietu a otrzymaniem odpowiedzi ICMP, co określa opóźnienie do tego routera.
- Narzędzie kontynuuje wysyłanie pakietów z rosnącymi wartościami TTL, aż osiągnie host docelowy lub przekroczy maksymalną liczbę przeskoków.
Typy implementacji
Traceroute może używać różnych protokołów do działania:
- UDP (tradycyjna implementacja Unix/Linux): Wysyła pakiety UDP na prawdopodobnie nieużywane porty docelowe. Gdy pakiet dotrze do celu, serwer docelowy odpowiada komunikatem ICMP "Port Unreachable" (Port nieosiągalny).
- ICMP: Wykorzystuje pakiety Echo Request (ping) z rosnącym TTL.
- TCP: Wykorzystuje pakiety TCP, co może być przydatne w sieciach, w których pakiety UDP/ICMP są filtrowane przez zapory sieciowe.
Interpretacja wyników
Typowe wyniki traceroute zawierają:
- Numer przeskoku
- Adresy IP routerów (a czasem ich nazwy DNS)
- Czasy odpowiedzi (RTT - Round Trip Time) dla każdego routera (zwykle pokazywane są trzy próby)
- Gwiazdki (*) wskazujące brak odpowiedzi (z powodu filtrowania, przeciążenia itp.)
Nowoczesne implementacje
Współczesne implementacje traceroute w Linuksie, takie jak te w pakiecie iputils
, oferują dodatkowe funkcje:
- Równoległe sondowanie - Wysyłanie pakietów do wielu przeskoków jednocześnie dla szybszych wyników
- Wyszukiwanie ścieżki AS - Pokazywanie numeru systemu autonomicznego (AS) dla każdego przeskoku
- Wykrywanie MTU - Wykrywanie maksymalnej jednostki transmisji wzdłuż trasy
Przykłady użycia traceroute
Podstawowe użycie jest bardzo proste:
Przykładowy wynik:
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 _gateway (192.168.1.1) 2.162 ms 2.187 ms 2.324 ms
2 192.168.100.1 (192.168.100.1) 12.644 ms 12.862 ms 13.030 ms
3 host-72-174-144-1.broadband.pl (72.174.144.1) 14.221 ms 14.371 ms 14.516 ms
4 ae21-0.icr01.waw04.atlas.cogentco.com (149.14.58.133) 15.578 ms 15.689 ms 19.404 ms
5 be3035.ccr21.ham01.atlas.cogentco.com (154.54.38.205) 32.141 ms 32.247 ms 32.352 ms
6 be3037.ccr21.ams03.atlas.cogentco.com (154.54.56.93) 35.170 ms 35.289 ms 35.400 ms
7 * * *
8 * * *
9 93.184.216.34 (93.184.216.34) 88.305 ms 88.410 ms 88.510 ms
Inne funkcje traceroute
Równoległe sondowanie
Przykładowy wynik:
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 _gateway (192.168.1.1) 1.923 ms
2 192.168.100.1 (192.168.100.1) 10.552 ms
3 host-72-174-144-1.broadband.pl (72.174.144.1) 12.411 ms
4 ae21-0.icr01.waw04.atlas.cogentco.com (149.14.58.133) 14.563 ms
5 be3035.ccr21.ham01.atlas.cogentco.com (154.54.38.205) 30.984 ms
6 be3037.ccr21.ams03.atlas.cogentco.com (154.54.56.93) 33.847 ms
7 *
8 *
9 93.184.216.34 (93.184.216.34) 87.219 ms
Wyszukiwanie ścieżki AS
Przykładowy wynik:
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 _gateway (192.168.1.1) [*] 2.015 ms 2.133 ms 2.255 ms
2 192.168.100.1 (192.168.100.1) [*] 10.763 ms 10.971 ms 11.140 ms
3 host-72-174-144-1.broadband.pl (72.174.144.1) [AS12741] 12.538 ms 12.714 ms 12.880 ms
4 ae21-0.icr01.waw04.atlas.cogentco.com (149.14.58.133) [AS174] 14.723 ms 14.859 ms 15.002 ms
5 be3035.ccr21.ham01.atlas.cogentco.com (154.54.38.205) [AS174] 31.239 ms 31.352 ms 31.465 ms
6 be3037.ccr21.ams03.atlas.cogentco.com (154.54.56.93) [AS174] 34.140 ms 34.259 ms 34.370 ms
7 * * *
8 * * *
9 93.184.216.34 (93.184.216.34) [AS15133] 87.497 ms 87.615 ms 87.728 ms
Wykrywanie MTU
Czym jest MTU ?
MTU (Maximum Transmission Unit) to maksymalny rozmiar pakietu (w bajtach), który może być przesyłany przez interfejs sieciowy bez fragmentacji. Dla Ethernetu standardowe MTU wynosi 1500 bajtów.
Dlaczego to jest ważne:
- Wydajność – Zbyt małe MTU oznacza więcej pakietów dla tej samej ilości danych → więcej nagłówków → większe obciążenie CPU i sieci.
- Fragmentacja – Jeśli pakiet jest większy niż MTU, zostanie podzielony (sfragmentowany), co może:
- zwiększyć opóźnienia,
- prowadzić do błędów transmisji, gdy jeden fragment zostanie utracony.
- Problemy z Path MTU – Jeśli na drodze znajduje się urządzenie z mniejszym MTU, a bit
DF
(Don't Fragment - Nie fragmentuj) jest ustawiony, pakiet może nigdy nie dotrzeć - Tunelowanie/VPN – często zmniejszają efektywne MTU (np. IPsec dodaje nagłówki), co należy wziąć pod uwagę.
Jak sprawdzić i ustawić MTU:
Standard dla wszystkich dystrybucji. W systemach typu RHEL zazwyczaj używamy nmcli
/nmtui
lub ethtool
Przykładowy wynik:
1?: [LOCALHOST] pmtu 1500
1: _gateway 1.849ms
1: _gateway 1.755ms
2: 192.168.100.1 11.079ms
3: host-72-174-144-1.broadband.pl 12.755ms
4: ae21-0.icr01.waw04.atlas.cogentco.com 14.903ms asymm 5
5: be3035.ccr21.ham01.atlas.cogentco.com 31.577ms asymm 6
6: be3037.ccr21.ams03.atlas.cogentco.com 34.455ms asymm 7
7: no reply
8: no reply
9: example.com 87.890ms reached
Resume: pmtu 1500 hops 9 back 58
Co oznacza asymm N
?
Co oznacza asymm N
?
asymm
w wyniku traceroute
wskazuje, że ścieżka powrotna pakietu różni się od ścieżki wychodzącej - oznacza to, że jest asymetryczna.
asymm 5
oznacza, że pakiet wraca przez pięć różnych przeskoków w porównaniu ze ścieżką wychodzącą.- Może to wpływać na diagnostykę - np. różne opóźnienia w zależności od kierunku.
traceroute
opiera się na odpowiedziach ICMP TTL Exceeded (lub innych, w zależności od opcji), więc otrzymuje informacje tylko z jednej strony ścieżki.
Dlaczego występuje asymetria:
- Różne ścieżki routingu (np. BGP w zależności od kierunku).
- Równoważenie obciążenia - niektóre routery używają ECMP (Equal Cost Multi Path).
- Polityki ISP - np. preferowanie tańszych tras w jednym kierunku.
Kiedy ma to znaczenie:
- Diagnostyka problemów (utrata pakietów może dotyczyć tylko jednej ścieżki).
- Pomiar opóźnień nie odzwierciedla całej trasy.
- Tunelowanie/VPN - np. różne MTU w zależności od ścieżki może prowadzić do fragmentacji w jednym kierunku, ale nie w drugim.
Alternatywnie:
Podsumowanie
Traceroute jest potężnym narzędziem diagnostycznym, które pozwala nam zobaczyć, jak pakiety danych są przesyłane między sieciami. Analiza kodu traceroute może pokazać, jak elegancko wykorzystuje on podstawowe protokoły internetowe (IP, UDP, ICMP) do mapowania złożonych tras sieciowych.