TRACEROUTE(8)

NAME
traceroute - vypíše cestu k zadanému počítači

SYNOPSIS
traceroute [ -dFInrvx ] [ -f první ttl ] [ -g brána ] [ -i iface ]
[ -m max ttl ] [ -p port ] [ -q nqueries ]
[ -s src_addr ] [ -t tos ] [ -w čekací čas ]
host [ délka paketu ]

DESCRIPTION
Internet je velké komplexní seskupení síťového hardware, spojeného dohromady branami (routery). Zjišťování cesty, po které pakety chodí (nebo nalezení brány, která odmítá vaše pakety) může být obtížné. Traceroute využívá možnosti položky TTL (Time To Live) v hlavičce IP datagramu a pokouší se vyvolat u každé brány na cestě k cíli odezvu ICMP TIME_EXCEEDED (tj. hlášení o chybě, resp. o vypršení TTL).

Jediný povinný parametr je jméno nebo IP adresa cílového počítače. Standardní délka datagramu je 40 bytů, ale dá se zvýšit udáním jiné hodnoty (v bytech) za adresou cíle.

Další možné parametry:

-f  Nastavení počáteční hodnoty TTL pro první vysílaný datagram.

-F  Nastav příznak "Don't fragment".

-d  Zapni ladění na úrovni socketu.

-g  Přímá specifikace routerů na cestě (max 8).

-i  Určení síťového rozhraní, ze kterého budou datagramy vysílány (tj. určení zdrojové IP adresy). Lze použít pouze na počítači s více síťovými rozhraními (viz také parametr -s).

-I  Místo UDP datagramů použij datagramy ICMP ECHO.

-m  Nastavení maximálního TTL používaného v odcházejících datagramech. Standardně je použita hodnota 30 (stejně jako u TCP spojení).

-n  Adresy bran jsou vypisovány čísly, není prováděn převod na DNS jména (používá se pro urychlení výstupu nebo pokud DNS nefunguje).

-p  Nastavení čísla UDP portu používaného pro traceroute (standardně je 33434). Traceroute předpokládá, že na cílových UDP portech od čísla port do čísla port + počet_hopů - 1 na trase k cíli nic nenaslouchá (takže se zpět vrátí zpráv ICMP PORT_UNREACHABLE). Pokud na některém z portů naslouchá nějaká aplikace, lze tímto parametrem určit počátek nepoužívaného rozsahu portů.

-q  Počet vyslaných datagramů pro každou hodnotu TTL (tj. pro každou bránu).

-r  Přeskoč normální routovací tabulky a vysílej přímo na připojené sítě. Pokud cíl v přímo připojené síti neleží, je vrácena chyba. Tento parametr může být použit pro pinknutí na localhost přes rozhraní, přes které nevede žádná cesta (například, poté co bylo rozhraní vypnuto pomocí routed (8C)).

-s  Použij následující IP adresu (zadanou jako číslo nebo jako jméno) jako zdrojové adresy pro odcházející datagramy. Na počítačích s více síťovými rozhraními (tj. s více než jednou IP adresou), může být tento parametr použit k nastavení jiné zdrojové IP, než jaká je na odesílajícím síťovém rozhraní. Pokud IP adresa nepatří mezi adresy rozhraní tohoto počítače, je vrácena chyba a nic se nevyšle (viz také parametr -i).

-t  Nastavení TOS (Type-Of-Service) v odesílaných paketech (standardně nula). Číslo musí být celé v rozsahu od 0 do 255. Tento parametr lze použít pro zjištění, zda různé typy služeb jsou směrovány různými cestami (pokud máte 4.4bsd, je to jen akademické, protože u normálních síťových službách jako telnet a ftp není TOS možné nastavit... Ne všechny hodnoty jsou legální nebo významné - (viz specifikaci IP). Použitelné hodnoty jsou: `-t 16' (krátká doba odezvy) a `-t 8' (vysoký průtok).

-v  Rozšířený výstup. Jsou vypsány jiné příchozí datagramy, než ICMP TIME_EXCEEDED a UNREACHABLE.

-w  Čas (v sekundách) čekání pro odezvu na vyslané datagramy (standardně 5 sec.).

-x  Přepínání kontrolních součtů. Obvykle jsou kontrolní součty tímto parametrem vypnuty. V některých případech může operační systém přepsat části odcházejících datagramů, ale nepřepočítat kontrolní součet (tj. v některých případech se standardně kontrolní součty nepočítají a použití tohoto parametru způsobí jejich počítání). Nezapomeňte že kontrolní součty jsou obvykle potřeba pro poslední přeskok když se používá ICMP ECHO. (-I).

Tento program se pokouší zobrazit cestu, kterou vykoná IP datagram k cílovému počítači tak, že vysílá záměrně UDP datagramu s malými hodnotami TTL (Time To Live) a pak čeká, zda přijde od brány (routeru) ICMP zpráva "Čas vypršel" (Time Exceeded). Začíná se s vysláním datagramu s TTL nastaveným na hodnotu 1 a pak se TTL postupně zvyšuje, dokud není přijat datagram se ICMP zprávou "Port Unreachable" (což znamená, že jsme u cíle) nebo pokud se dosáhne maximální hodnoty TTL (která je standardně 30 skoků a může být změněna pomocí parametru -m). Pro každou hodnotu TTL jsou vyslány tři datagramy (lze změnit pomocí parametru -q) a pak je vypsán řádek s hodnotou TTL, jménem brány a dobami odezvy každého vyslaného datagramu. Přijdou-i odpovědi z různých bran, jsou všechny vypsány. Pokud nepřijde žádná odezva do pěti vteřin (lze změnit pomocí parametru -w) je vypsán znak "*".

Je potřeba, aby cílový počítač nezpracovával UDP výzvy, a tak je cílový port nastaven na nepravděpodobnou hodnotu (pokud nějaký program na cílovém počítači tento port používá, můžete ho změnit pomocí parametru -p).

Příklad použití a následného výstupu:
    [yak 71]% traceroute nis.nsf.net.
    traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
     1  helios.ee.lbl.gov (128.3.112.1)  19 ms  19 ms  0 ms
     2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
     3  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
     4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  39 ms
     5  ccn-nerif22.Berkeley.EDU (128.32.168.22)  39 ms  39 ms  39 ms
     6  128.32.197.4 (128.32.197.4)  40 ms  59 ms  59 ms
     7  131.119.2.5 (131.119.2.5)  59 ms  59 ms  59 ms
     8  129.140.70.13 (129.140.70.13)  99 ms  99 ms  80 ms
     9  129.140.71.6 (129.140.71.6)  139 ms  239 ms  319 ms
    10  129.140.81.7 (129.140.81.7)  220 ms  199 ms  199 ms
    11  nic.merit.edu (35.1.1.48)  239 ms  239 ms  239 ms
Všimněte si, že řádky 2 a 3 obsahují stejná jména i IP adresy počítačů, což způsobuje chybné 4.3 BSD jádro na druhém přeskoku (lbl-csam.arpa), které přeposílá datagramy s nulovým TTL. Ve spodní části nejsou uvedeny jména počítačů, protože NFSNet (129.140) nemá v DNS zavedeny příslušné reverzní záznamy.

Další příklad:
    [yak 72]% traceroute allspice.lcs.mit.edu.
    traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hops max
     1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
     2  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  19 ms  19 ms
     3  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  19 ms
     4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  19 ms  39 ms  39 ms
     5  ccn-nerif22.Berkeley.EDU (128.32.168.22)  20 ms  39 ms  39 ms
     6  128.32.197.4 (128.32.197.4)  59 ms  119 ms  39 ms
     7  131.119.2.5 (131.119.2.5)  59 ms  59 ms  39 ms
     8  129.140.70.13 (129.140.70.13)  80 ms  79 ms  99 ms
     9  129.140.71.6 (129.140.71.6)  139 ms  139 ms  159 ms
    10  129.140.81.7 (129.140.81.7)  199 ms  180 ms  300 ms
    11  129.140.72.17 (129.140.72.17)  300 ms  239 ms  239 ms
    12  * * *
    13  128.121.54.72 (128.121.54.72)  259 ms  499 ms  279 ms
    14  * * *
    15  * * *
    16  * * *
    17  * * *
    18  ALLSPICE.LCS.MIT.EDU (18.26.0.115)  339 ms  279 ms  279 ms
Brány 12, 14, 15, 16 a 17 neposílají ICMP zprávy "Time Exceeded" nebo je posílají s příliš malou hodnotou TTL a proto se k nám nedostanou.

Ztichlá brána 12 může být způsobena chybou v síťovém kódu 4.[23] BSD (a jeho odvozeniny): 4.x (x <= 3) posílají odpověď s použitím TTL, které bylo v příchozím datagramu, proto odpověď nedojde. Tato chyba se projeví zajímavěji, pokud ji má cílový počítač:
     1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
     2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  39 ms
     3  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  39 ms  19 ms
     4  ccngw-ner-cc.Berkeley.EDU (128.32.136.23)  39 ms  40 ms  19 ms
     5  ccn-nerif35.Berkeley.EDU (128.32.168.35)  39 ms  39 ms  39 ms
     6  csgw.Berkeley.EDU (128.32.133.254)  39 ms  59 ms  39 ms
     7  * * *
     8  * * *
     9  * * *
    10  * * *
    11  * * *
    12  * * *
    13  rip.Berkeley.EDU (128.32.131.22)  59 ms !  39 ms !  39 ms !
Ve výstupu je vidět 12 bran (routerů), třináctý je cíl a přesně druhá polovina odpovědí chybí. Způsobuje to chyba na počítači rip (Sun-3 se systémem Sun OS3.5), který používá TTL v dotazech jako TTL pro ICMP odpovědi. Proto odpověď dojde až v okamžiku, kdy je TTL větší, než dvojnásobek délky zpáteční trasy. Počítač rip je vzdálen skutečně jen sedm hopů. Další možné poznámky za údajem o času jsou: !H, !N, nebo !P (cíl, síť nebo protokol nedosažitelné), !S nebo !F (zdrojová cesta chybná nebo je potřebná fragmentace - žádná z těchto chyb by se neměla nikdy objevit a příslušná brána je v tom případě vadná), !X (komunikace zakázána administrátory), nebo !<N> (ICMP nedostupné, kód N). Pokud téměř všechny výzvy končí hlášeními o nedosažitelnosti, traceroute se ukončí.

Tento program je určen pro testovaní, měření a management sítí. Primárně by měl sloužit pro izolaci chyb. Protože traceroute může síť zatížit, není moudré ho používat během normálních operací a z automatických skriptů.

VIZ TAKÉ
pathchar(8), netstat(1), ping(8)

AUTOR
Implementoval Van Jacobson podle návrhu Steve Deeringa. Ladily tisíce lidí, zahrnuty částečné opravy a návrhy od: C. Philip Wood, Tim Seaver and Ken Adelman.

Současné verze programu jsou k dispozici na anonymním ftp:

    ftp://ftp.ee.lbl.gov/traceroute.tar.Z

CHYBY
Prosím posílejte chyby na adresu traceroute@ee.lbl.gov.

PŘEKLAD
Martin Dostál (martin.dostal@pslib.cz), úpravy textu Milan Keršláger (kerslage@linx.cz).