Příkaz traceroute se používá v Linuxu k mapování cesty, kterou se paket informací zaváží od svého zdroje k cíli. Jedno použití pro traceroute je najít, když ztráta dat nastane v celé síti, což by mohlo znamenat uzel, který je dolů.
Protože každý skok v záznamu odráží nový server nebo směrovač mezi původním počítačem a zamýšleným cílem, kontrola výsledků kontroly traceroute také umožňuje identifikovat pomalé body, které mohou nepříznivě ovlivnit síťovou komunikaci.
Jak to funguje
Vyhodnocení specifické cesty, kterou síťový provoz navazuje (nebo hledání špatné brány, která odkládá vaše pakety), představuje několik problémů s řešením problémů. Traceroute používá protokol IP čas žít pole vyžadovat odpověď ICMP TIME_EXCEEDED z každé brány podél cesty k cílovému hostiteli.
Jediný parametr, který musíte zahrnout při spuštění příkazu traceroute, je název hostitele nebo adresa IP cílového adresáře.
Traceroute Syntax a přepínače

traceroute -dFInrvx -F first_ttl -G brána -i čelím -m max_ttl -p přístav -q nqueries -s src_addr -t tos -w čekací doba -z pausemsecs hostitel packetlen
Zatímco výše je to, jak má být příkaz traceroute napsán, aby mohl pracovat v příkazovém řádku, může být výkon nebo výstup příkazu změněn zadáním jednoho nebo více volitelných přepínačů.
- -F: Nastavte počáteční časový úsek použitý v prvním odchozím sondě.
- -F: Nastavte bit "nerozdělovat".
- -d: Povolit ladění úrovně soketu.
- -G: Určete bránu volné zdrojové cesty (maximálně 8).
- -i: Určete síťové rozhraní pro získání zdrojové adresy IP pro odchozí datové pakety. To je obvykle užitečné pouze u hostitele s více hostiteli. (Viz-s příznak pro jiný způsob, jak to udělat.)
- -I: Použijte ICMP ECHO namísto UDP datagramu.
- -m: Nastavte maximální časový limit (max. Počet chmele) použitý v odchozích sondách. Výchozí hodnota je 30 chmelů (stejné platí pro připojení TCP).
- -n: Tiskněte adresy hopu číselně, nikoliv symbolicky a číselně (ukládá vyhledávací adresu jmenného adresáře na název každé brány nalezené na cestě).
- -p: Nastavte základní číslo portu UDP použitého v sondách (výchozí hodnota je 33434). Traceroute doufá, že na portu UDP není nasloucháno nic báze na základna + nhops - 1 v cílovém hostiteli (tak se vrátí zpráva ICMP PORT_UNREACHABLE, která ukončí trasování trasy). Pokud se na portu ve výchozím rozsahu naslouchá něco, lze tuto volbu použít k výběru nepoužívaného rozsahu portů.
- -r: Obejdejte běžné směrovací tabulky a odesílejte přímo hostitelům na připojené síti. Pokud hostitel není na přímo připojené síti, vrátí se chyba. Tato volba může být použita pro ping lokálního hostitele přes rozhraní, které nemá cestu přes něj (např. Po propuštění rozhraní směrován (8C)).
- -s: Použijte následující adresu IP (která je obvykle zadána jako číslo IP, nikoliv název hostitele) jako zdrojová adresa v odchozích sondách. U hostitelů s více adresami (s více adresami IP) může být tato možnost použita k tomu, aby se zdrojová adresa stala jinou než je adresa IP rozhraní, na které je odeslán sondový paket. Pokud adresa IP není adresami rozhraní tohoto stroje, vrátí se chyba a nic není odesláno. (Viz-i příznak pro jiný způsob, jak to udělat.)
- -t: Nastav typ služby v sondě paketů na následující hodnotu (výchozí nula). Hodnota musí být desetinné celé číslo v rozmezí 0 až 255. Tato možnost může být použita k zjištění, zda různé typy služeb v různých cestách. (Pokud neběžíte 4.4bsd, může to být akademické, protože běžné síťové služby, jako je telnet a ftp, vám neumožňují ovládat TOS.) Ne všechny hodnoty TOS jsou legální nebo smysluplné - podívejte se na specifikaci IP. Užitečné hodnoty jsou pravděpodobně `-t 16 '(nízké zpoždění) a `-t 8 '(vysoká propustnost).
- -proti: Podrobný výstup. Přijaté pakety ICMP jiné než TIME_EXCEEDED a UNREACHABLEs jsou uvedeny.
- -w: Nastavte čas (v sekundách) počkat na odpověď na sondu (výchozí 5 sekund).
- -X: Přepínejte kontrolní součet IP. Normálně to brání traceroute při výpočtu kontrolních součtů IP. V některých případech operační systém může přepsat části odchozího paketu, ale přepočítat kontrolní součet; proto je v některých případech výchozím faktorem nevypočítat kontrolní součet a používat-X způsobuje jejich výpočet. Všimněte si, že kontrolní součet je obvykle požadován pro poslední hop při použití sond ICMP ECHO (-I), takže jsou vždy vypočítávány při použití protokolu ICMP.
- -z: Nastavte čas (v milisekundách) pro pauzu mezi sondami (výchozí 0). Některé systémy, jako je Solaris a směrovače od společnosti Cisco, umožňují zasílání zpráv o rychlosti. Dobrou hodnotou, kterou lze použít, je 500 (např. 1/2 sekundy).
Interpretace výsledků
Traceroute načrtává cestu, kterou IP paket sleduje na internetovém hostiteli spuštěním paketů UDP sondou s malým TTL (čas k životu) a posloucháním ICMP "překročení doby" odpovědi z brány. Začínáme sondami s TTL jednoho a zvýšíme o jeden, dokud nedosáhneme ICMP "port nedosažitelný" (což znamená, že paket dorazí na místo určení) nebo zasáhne max. Počet pokusů, které se definují na 30 chmelů a lze je změnit-m vlajka.
Při spuštění traceroute odešle tři sondy při každém nastavení TTL a poté vytiskne linku na konzolu, která zobrazuje adresu TTL, adresu brány a dobu zpětného odběru každé sondy. Pokud odpovědi sondy pocházejí z různých bran, vytiskne se adresa každého reagujícího systému. Není-li během pětisekundového časového intervalu odpověď (změněno pomocí příkazu-w flag) je pro tuto sondu vytištěna hvězdička.
Chcete-li zabránit tomu, aby byl cílový hostitel přeplněn zpracováním paketů s protokolem UDP, je cílový port nastaven na hodnotu, kterou je pravděpodobně toto zařízení nepoužíváno. Pokud síť nebo služba v cílovém portu používá tento port, změňte hodnotu pomocí-p vlajka.
Ukázka použití a výstupu vrátí výsledky podobné tomuto příkladu:
yak 71% traceroute nis.nsf.net. traceroute do nis.nsf.net (35.1.1.48), 30 chmelů max, 38 paketů 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 (129.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 druhý a třetí řádky jsou stejné. Tento výsledek se týká chybového jádra druhého chmelového systému lbl-csam.arpa, který předává pakety s nulovým TTL (chyba v distribuované verzi 4.3 BSD). Musíte odhadnout, jakou cestu pakety dělají cross-country protože NSFNet (129.140) neposkytuje překlady adresy k jménům pro své NSSes.
Zajímavějším příkladem je:
yak 72% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 chmelů 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
Vezměte na vědomí, že brány na 12, 14, 15, 16 a 17 schodech buď neposílají zprávy ICMP o "překročené době", nebo je posílají s TTL příliš malým, než se k nám dostanou. Řádky 14 až 17 spouštějí kód brány MIT C, který neposílá zprávy o překročení času.
Tichá brána 12 ve výše uvedeném příkladu může být výsledkem chyby v síti 4. 23 BSD síťový kód a jeho deriváty: Stroje pracující s kódem 4.3 a dřívějším posílají nedosažitelnou zprávu s použitím jakéhokoli TTL zůstane v původním datagramu. Vzhledem k tomu, že pro brány je zbývající TTL nula, ICMP "čas překročen" je zaručeno, že nám to nevrátí. Chování této chyby je poněkud zajímavější, když se objeví na cílovém systému:
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 slečna ! 39 ms! 39 ms!
Všimněte si, že existuje 12 "bran" (13 je konečný cíl) a poslední polovina z nich chybí. Co se opravdu děje, je server pojmenovaný rip (Sun-3 s operačním systémem Sun OS 3.5) využívá TTL z našeho datagramu jako TTL ve své odpovědi ICMP. Takže odpověď se vyprší časem na zpáteční cestě (aniž by bylo zasláno oznámení ICMP pro ICMP), dokud nebudeme zkoušet s TTL, která je alespoň dvojnásobkem délky cesty - jinými slovy, rip je opravdu jen sedm chmele pryč.
Odpověď, která se vrací s TTL 1, je známkou, že tento problém existuje. Traceroute vytiskne "!" po uplynutí doby, kdy je hodnota TTL menší nebo rovna 1. Jelikož dodavatelé dopravují hodně zastaralého (DEC ™ Ultrix, Sun 3.x) nebo neštandardního (HPUX) software, očekávejte, že se tento problém setkáte často a pečlivě vybíráte cílového hostitele vašich sond.
Další možné poznámky po uplynutí doby! H, ! N, nebo! P (hostitel, síť nebo protokol nedosažitelný),! S (zdrojová cesta se nezdařila),!F- (potřebná fragmentace - zobrazí se hodnota MTC Discovery cesty RFC1191),!X (komunikace je administrativně zakázána),!PROTI (porušení priorit hostitele),!C (přednostní mezní hodnota) nebo! (Nedostupný kód ICMP). Tyto kódy jsou definovány RFC1812, který nahrazuje RFC1716. Pokud téměř všechny sondy vyústí v nějaký nedosažitelný hostitel, traceroute se vzdá a vyjede.
Tento program je určen pro testování, měření a správu sítí. Měla by být použita především pro manuální izolaci poruch. Vzhledem k zatížení, které by mohlo v síti uložit, není rozumné používat traceroute při normálních operacích nebo automatických skriptech.




