Provided by:
manpages-cs_0.17.20080113-1_all 
NAME
traceroute - vypíše cestu, kterou pakety putují k zadanému počítači
SYNTAXE
traceroute [ -dFInrvx ] [ -f prvn_ttl ] [ -g brna ]
[ -i iface ] [ -m max_ttl ] [ -p port ]
[ -q nqueries ] [ -s src_addr ] [ -t tos ]
[ -w ekac_as ] [ -z pauza_msecs ]
host [ dlka_paketu ]
POPIS
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 soketu.
-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). Obvykle se hodí 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 + poet_hop - 1 na trase k cíli nic
nenaslouchá (takže se zpět vrátí zpráva 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ů.
-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 (obvykle zadanou spíše jako číslo
než jako jméno) jako zdrojovou adresu 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 nemáte 4.4bsd, je to jen
akademické, protože u normálních síťových služeb 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 i příchozí datagramy jiné 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).
Takže pokud se používá ICMP, počítají se vždy.
-z Nastaví délku pauzy (v milisekundách) mezi vysíláním datagramů
(výchozí je 0). Některé systémy, jako např. Solaris, a routery,
jako třeba Cisco, omezují icmp zprávy. Vhodná hodnota pro
použití je 500 (tj. 0,5 sekundy).
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 datagramy 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, adresou brány a
dobami odezvy (round trip time) 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 NSFNet (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.
Na branách 14 - 17 běží MIT C Gateway, která zprávy "time exceeded"
neposílá. Bůh ví, co je s 12.
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ů. Odpověď vrácená s TTL 1 je vodítkem, že tento problém
existuje. Traceroute vypíše znak "!" pokaždé, když je TTL <= 1.
Protože je distribuována spousta zastaralého (DEC Ultrix, Sun 3.x) nebo
nestandardního (HPUX) software, je tento problém častý.
Další možné poznámky za údajem o času jsou: !H, !N nebo !P (cíl, síť
nebo protokol nedosažitelné), !S (zdrojová cesta selhala) nebo
!F-<pmtu> (je potřebná fragmentace - zobrazí se hodnota Path MTU
Discovery z RFC1191), !X (komunikace zakázána administrátory), !V
(porušení pořadí cílů), !C (precedence cutoff in effect) nebo !<číslo>
(ICMP nedostupné, kód <číslo>). Tyto jsou definovány v RFC1812 (které
nahrazuje RFC1716). 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 manuální izolaci chyb. Protože traceroute
může síť zatížit, není moudré používat traceroute 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 opravy a návrhy od: C. Philip Wood, Tim Seaver a Ken
Adelman.
Současné verze programu jsou k dispozici na anonymním ftp:
ftp://ftp.ee.lbl.gov/traceroute.tar.gz
CHYBY
Prosím posílejte chyby na adresu traceroute@ee.lbl.gov.