Tracerout
Traceroute to narzędzie diagnostyczne, które ujawnia ukrytą geografię Internetu. Wpisz jedno polecenie, a otrzymasz listę wszystkich routerów, przez które przechodzą Twoje pakiety w drodze do miejsca docelowego. Działa dzięki mało znanej funkcji protokołu IP — polu Time To Live — i od trzydziestu lat wykrywa problemy z siecią.
Poniżej znajduje się pełna treść artykułu w języku angielskim.
Traceroute ujawnia sekwencję przeskoków między Tobą a miejscem docelowym. Każda linia na wyjściu to jeden router; czas podróży w obie strony informuje o opóźnieniu tego routera. Gdy coś w Internecie działa wolno lub jest uszkodzone, zwykle pierwszym narzędziem od razu po wyjęciu z pudełka jest traceroute.
Jak to działa: sztuczka TTL
Każdy pakiet IP ma pole Time To Live (TTL), które pierwotnie miało zapobiegać ciągłemu krążeniu pakietów w pętlach routingu. Każdy router zmniejsza TTL o jeden. Kiedy TTL osiągnie zero, router odrzuca pakiet i odsyła do źródła komunikat ICMP „Time Exceeded”.
Traceroute wykorzystuje tę opcję:
- Wyślij pakiet do miejsca docelowego z TTL=1. Pierwszy router zmniejsza go do 0, odrzuca, odpowiada „Time Exceeded” – objawiając się jako przeskok 1.
- Send TTL=2. Pierwszy router zmniejsza się do 1 i dalej; drugi router zmniejsza się do 0, spada, odpowiada — ujawniając przeskok 2.
- Kontynuuj inkrementację, aż dotrzesz do miejsca docelowego, które odpowie czymś innym (port nieosiągalny lub rzeczywista odpowiedź aplikacji).
Odpowiedź miejsca docelowego jest taka, jak traceroute wie, że ma się zatrzymać. Domyślnie trzy sondy na przeskok, dlatego w każdej linii widoczne są trzy pomiary RTT.
Trzy typy sond
Różne implementacje funkcji Traroute wysyłają różne rodzaje sond:
- UDP traceroute (klasyczny Unix): wysyła pakiety UDP do wysokiego portu liczby. Miejsce docelowe odpowiada komunikatem „port nieosiągalny”. Domyślnie w systemie Linux/macOS.
- ICMP traceroute (Windows tracirt): wysyła pakiety żądania echa ICMP. Odbiorca odpowiada odpowiedzią echa. Lepiej zachowuje się w przypadku niektórych zapór ogniowych.
- TCP traceroute: wysyła TCP SYN do określonego portu (zwykle 80 lub 443). Przydatne, gdy miejsce docelowe odrzuca UDP i ICMP, ale akceptuje TCP na znanym porcie.
Właściwe narzędzie zależy od tego, co odrzucają zapory ogniowe na ścieżce. tcptraceroute często kończy się sukcesem tam, gdzie zawodzi traceroute.
Odczyt wyniku
A typowy wiersz:
5 ae1.cr1.fra4.de.example.net (172.16.50.1) 18,234 ms 18,012 ms 17,998 msNumer przeskoku, nazwa routera i adres IP, następnie trzy pomiary RTT. Gwiazdki * * * oznaczają, że router nie odpowiedział — albo porzucił sondę, odpowiedzi ICMP z ograniczoną szybkością, albo został skonfigurowany tak, aby się nie identyfikował. Gwiazdki są normalne i niekoniecznie oznaczają problem; wiele routerów szkieletowych celowo nie odpowiada na polecenie traceroute.
Co mówią przeskoki
Nazwy DNS routerów są pełne znaczeń. ae1.cr1.fra4.de informuje: agregacja pakietu Ethernet 1, router główny 1, lokalizacja we Frankfurcie 4, Niemcy. Inżynierowie sieciowi mogą odczytać te nazwy jak tablice rejestracyjne i powiedzieć, który operator jest właścicielem ścieżki, w jakim mieście znajduje się pakiet, a nawet jakiego dostawcy sprzętu (Cisco vs Juniper czy Arista) używa operator.
Nieoczekiwany objazd geograficzny — pakiety do miejsca docelowego we Frankfurcie przechodzące przez Singapur — zwykle oznaczają decyzję dotyczącą polityki BGP, a nie fizyczne odcięcie światłowodu. Nieoptymalne trasowanie zdarza się stale i niekoniecznie stanowi problem.
Problem ze ścieżką asymetryczną
Traceroute wyświetla tylko ścieżkę wychodzącą. Ścieżka powrotna może być – i często jest – zupełnie inna, ponieważ każdy system AS wybiera własną trasę wychodzącą. Wysoki RTT w przypadku przeskoku może oznaczać, że łącze jest w tym miejscu wolne lub może oznaczać, że wolne łącze znajduje się na ścieżce powrotnej z tego przeskoku. Bez funkcji Traroute z miejsca docelowego do Ciebie nie możesz tego stwierdzić.
Dlatego „traceroute wygląda dobrze, ale moje opóźnienia są straszne” jest częstą sytuacją. Sonda bada ścieżkę w jednym kierunku na raz.
Nowoczesne alternatywy: narzędzia MTR i narzędzia w stylu mtr
MTR (Moja Traceroute) to ciągła trasa trasowania — pinguje każdy przeskok w pętli i pokazuje statystyki działania: średni RTT, procent strat, jitter. O wiele bardziej przydatny do diagnozowania sporadycznych problemów niż jednorazowe śledzenie trasy. WinMTR w systemie Windows, mtr w systemie Unix, PathPing jako wbudowana alternatywa dla systemu Windows.
Do diagnozowania ścieżki, której nie jesteś właścicielem, serwery RIPE Atlas i lustro obsługiwane przez główne sieci umożliwiają uruchamianie programu Traceroute z odległego punktu obserwacyjnego — nieocenione przy zrozumieniu tras asymetrycznych.
Ograniczenia i dziwactwa
MPLS routery mogą ukrywać przeskoki, nie zmniejszając TTL w chmurze MPLS. Sieci z równoważeniem obciążenia mogą pokazywać różne ścieżki w kolejnych sondach, przez co dane wyjściowe wyglądają na chaotyczne. Ograniczanie szybkości ICMP na zajętych routerach może dawać fałszywe odczyty „powolnych przeskoków”, które nie odzwierciedlają rzeczywistej wydajności płaszczyzny danych. RTT routerów pośrednich mierzy czas do osiągnięcia tego routera przez płaszczyznę sterującą , która jest często wolniejsza niż płaszczyzna danych przez ten sam router. Używaj polecenia traceroute jako wskazówki, a nie metryki.
Często zadawane pytania
- Dlaczego mój traserout trafia w przypadku niektórych przeskoków „* * *”?
- Router istnieje, ale nie odpowiedział na sondę. Typowe przyczyny: ograniczenie szybkości ICMP, zasady zapory sieciowej, które odrzucają odpowiedzi przekraczające TTL lub decyzja operatora o ukryciu routera. Pakiety nadal przepływają; po prostu nie widać tych przeskoków.
- Czy traceroute działa przez VPN?
- Tak, ale śledzenie rozpoczyna się od wyjścia VPN, a nie od Twojej prawdziwej lokalizacji. Kilka pierwszych przeskoków, które zwykle widzisz (twój domowy router, Twój dostawca usług internetowych), zostaje zastąpionych pojedynczym przeskokiem do tunelu VPN. Ślad staje się widokiem sieci dostawcy VPN i jej dalszej ścieżki.
- Dlaczego traceroute pokazuje różne ścieżki za każdym razem, gdy go uruchamiam?
- Wiele dużych sieci równoważy ruch na wielu ścieżkach o jednakowych kosztach, a klucz równoważenia obciążenia zawiera pola pakietów. Różne sondy mieszają się z różnymi ścieżkami i widzisz związek. Narzędzia takie jak Paris-traceroute utrzymują klucz równoważenia obciążenia na stałym poziomie, aby zapewnić stabilną moc wyjściową.
- Co oznacza nagły wzrost opóźnienia przy jednym przeskoku?
- Może to być przeciążone łącze, powolna płaszczyzna sterowania na tym konkretnym routerze (najprawdopodobniej) lub asymetryczna ścieżka zwrotna. Przyjrzyj się kolejnym przeskokom — jeśli ich RTT jest podobny, skok oznacza prawdziwe przeciążenie; jeśli ich RTT spadnie, oznacza to, że płaszczyzna sterująca routera powoli odpowiada.
- Czy istnieje narzędzie łączące funkcję śledzenia trasy i ciągły ping?
- MTR (mtr w systemie Unix, WinMTR w systemie Windows). Pinguje każdy przeskok w pętli i pokazuje bieżące statystyki — średni RTT, procent utraty pakietów, odchylenie standardowe. O wiele bardziej przydatny niż waniliowy traceroute w przypadku sporadycznych problemów.