Skip to main content

Ako používať príkaz traceroute v systéme Linux

Anonim

Príkaz traceroute sa používa v systéme Linux na mapovanie cesty, ktorú balík informácií prevezme od svojho zdroja až po miesto určenia. Jedno použitie pre traceroute je nájsť, keď dôjde k strate dát v celej sieti, čo by mohlo znamenať uzol, ktorý je nadol.

Pretože každý skok v zázname odráža nový server alebo smerovač medzi pôvodným počítačom a zamýšľaným cieľom, preskúmanie výsledkov vyhľadávania traceroute tiež umožňuje identifikovať pomalé body, ktoré môžu nepriaznivo ovplyvniť sieťovú prevádzku.

Ako to funguje

Vyhodnotenie konkrétnej trasy, ktorú sleduje sieťová prevádzka (alebo nájdenie nesprávnej brány, ktorá vyradí vaše pakety) predstavuje niekoľko problémov pri riešení problémov. Traceroute používa protokol IP čas žiť pole vyžadovať odpoveď ICMP TIME_EXCEEDED od každej brány pozdĺž cesty k cieľovému hostiteľovi.

Jediným parametrom, ktorý musíte zahrnúť pri spustení príkazu traceroute, je názov hostiteľa alebo IP adresa cieľa.

Traceroute Syntax a prepínače

traceroute -dFInrvx -f first_ttl -g brána -i čelím -m max_ttl -p prístav -q nqueries -s src_addr -t tos -w waittime -z pausemsecs hostiteľ packetlen

Zatiaľ čo je vyššie uvedené, ako musí byť napísaný príkaz traceroute, aby mohol pracovať v príkazovom riadku, výkon alebo výstup príkazu možno zmeniť zadaním jedného alebo viacerých voliteľných prepínačov.

  • -f: Nastavte počiatočný čas potrebný na používanie v prvom odchádzajúcom sondovom pakte.
  • -F: Nastavte bit "nezlomiť".
  • -d: Povoliť ladenie úrovne soketu.
  • -g: Zadajte bránu voľnej zdrojovej trasy (maximum 8).
  • -i: Určte sieťové rozhranie na získanie zdrojovej adresy IP pre odchádzajúce sondové pakety. Toto je zvyčajne užitočné iba na hostiteľovi s viacerými hostiteľmi. (Pozri-s označte ďalším spôsobom, ako to urobiť.)
  • -I: Použite ECMP ECHO namiesto UDP datagramov.
  • -m: Nastavte maximálny časový úsek (maximálny počet chmeľu) použitý v paketoch odchádzajúcich sond. Predvolená hodnota je 30 chmeľov (rovnaké predvolené používanie pre pripojenia TCP).
  • -n: Tlačiť adresy chmeľu skôr ako symbolicky a číselne (ukladá vyhľadávanie názvov adresárov na meno pre každú bránu nachádzajúcu sa na ceste).
  • -p: Nastavte základné číslo portu UDP používané v sondách (štandardne je 33434). Traceroute dúfa, že na portoch UDP nie je počúvanie základňa na báza + nhops - 1 na cieľovom hostiteľovi (takže sa vráti správa ICMP PORT_UNREACHABLE na ukončenie trasovania trasy). Ak sa na portu v predvolenom rozsahu počúva niečo, môžete túto voľbu použiť na výber nepoužívaného rozsahu portov.
  • -r: Vynechajte bežné smerovacie tabuľky a posielajte priamo hostiteľovi na pripojenú sieť. Ak hostiteľ nie je pripojený priamo k sieti, vráti sa chyba. Táto voľba môže byť použitá na ping lokálneho hostiteľa cez rozhranie, ktoré cez ne nemá žiadnu trasu (napr. Po prepustení rozhrania smerované (8C)).
  • -s: Použite nasledujúcu adresu IP (ktorá je zvyčajne uvedená ako IP adresa, nie názov hostiteľa) ako zdrojovú adresu v odchádzajúcich sondách. Na hostiteľoch s viacerými hostiteľmi (s viacerými IP adresami) sa táto možnosť môže použiť na to, aby sa zdrojová adresa stala niečím iným ako je IP adresa rozhrania, na ktoré je vyslaný paket sondy. Ak adresa IP nie je jedným z adries rozhrania tohto zariadenia, vráti sa chyba a nič sa neodošle. (Pozri-i označte ďalším spôsobom, ako to urobiť.)
  • -t: Nastaviť typ-of-service v sondách na nasledujúcu hodnotu (štandardná nula). Hodnota musí byť desatinné celé číslo v rozmedzí od 0 do 255. Táto možnosť sa môže použiť na zistenie, či rôzne typy služieb vedú k rôznym cestám. (Ak nepoužívate program 4.4bsd, môže to byť akademický, keďže bežné sieťové služby ako telnet a ftp nenechajú ovládať TOS.) Nie všetky hodnoty TOS sú legálne alebo zmysluplné - pozrite si špecifikácie IP. Užitočné hodnoty sú pravdepodobne `-t 16 '(nízke oneskorenie) a `-t 8 ' (veľký prietok).
  • -v: Podrobný výstup. Prijaté pakety ICMP iné ako TIME_EXCEEDED a UNREACHABLEs sú uvedené.
  • -w: Nastavte čas (v sekundách) na čakanie na odpoveď na sondu (predvolené 5 sekúnd).
  • -X: Prepínajte kontrolné súčty IP. Zvyčajne to zabraňuje traceroute pri výpočte kontrolných súčtov IP. V niektorých prípadoch operačný systém môže prepísať časti odchádzajúceho paketu, ale nie prepočítať kontrolný súčet; preto je v niektorých prípadoch nesplácaním nevypočítať kontrolné sumy a používať-X spôsobuje ich výpočet. Upozorňujeme, že kontrolné súčety sú zvyčajne potrebné pre posledný hop, keď používate sondy ICMP ECHO (-I), takže sa vždy vypočítavajú pri používaní protokolu ICMP.
  • -z: Nastavte čas (v milisekundách) na prerušenie medzi sondami (predvolené 0). Niektoré systémy, ako napríklad Solaris a smerovače od spoločnosti Cisco, oznamujú správy o obmedzení rýchlosti. Dobrou hodnotou, ktorú je možné použiť, je 500 (napr. 1/2 sekundy).

Interpretácia výsledkov

Traceroute načrtáva cestu IP paketu na internetový hostiteľ spustením UDP sondových paketov s malým TTL (čas na živobytie) a počúvaním ICMP "prekročenej doby" odpovede z brány. Začneme sondami s TTL jednej a zvýšime o jednu, kým sa nám nedostane ICMP "port nedosiahnuteľný" (čo znamená, že sa paket dostal na miesto určenia), alebo hit maximálnu hodnotu pokusov, ktorá je predvolená na 30 chmeľ a môže byť zmenená-m flag.

Keď traceroute spustí, pošle tri sondy pri každom nastavení TTL a potom vytlačí riadok na konzolu zobrazujúcu TTL, adresu brány a čas zaokrúhlenia každej sondy. Ak odpoveď sondy pochádza z rôznych brán, vytlačí sa adresa každého odpovedajúceho systému. Ak nedôjde k žiadnej odozve v intervale časového limitu piatich sekúnd (zmenený s-w flag) sa pre danú sondu vytlačí hviezdička.

Aby sa zabránilo tomu, že cieľový hostiteľ bude zahltený spracovaním paketov s protokolom UDP, cieľový port bude nastavený na hodnotu, ktorá sa pravdepodobne nepoužije týmto zariadením. Ak sieť alebo služba na cieľovom portu používa tento port, zmeňte hodnotu pomocou-p flag.

Použitím vzorky a výstupom sa vrátia podobné výsledky ako v tomto príklade:

yak 71% traceroute nis.nsf.net. traceroute na nis.nsf.net (35.1.1.48), 30 chmeľových max, 38 paketov 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 (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šimnite si, že druhý a tretí riadok sú rovnaké. Tento výsledok sa vzťahuje na buggy jadro na druhom chmeľovom systéme lbl-csam.arpa, ktoré dopredu prenáša pakety s nulovým TTL (chyba v distribuovanej verzii 4.3 BSD). Musíte odhadnúť, akú cestu balíky preberajú, pretože NSFNet (129.140) neposkytuje pre svoje NSS preklady z adresy na meno.

Zaujímavým príkladom je:

yak 72% traceroute allspice.lcs.mit.edu. (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1), 30 hopov 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

Upozorňujeme, že brány na 12, 14, 15, 16 a 17 chmeľoch neposielajú správy ICMP o "prekročenej dobe" alebo ich posielajú s TTL príliš malým na to, aby sa k nám dostali. Riadky 14 až 17 používajú kód brány MIT C, ktorý neposiela správy "prekročené časom".

Tichá brána 12 vo vyššie uvedenom príklade môže byť výsledkom chyby v 4. 23 BSD sieťovom kóde a jeho derivátoch: Stroje, ktoré majú kód 4.3 a staršie, posielajú neprístupnú správu s použitím ľubovoľného TTL zostávajúceho v pôvodnom dátovom agregáte. Pretože pre brány zostávajúci TTL je nulový, ICMP "čas prekročený" je zaručený, že nám to nevráti. Chovanie tejto chyby je o niečo zaujímavejšie, keď sa objaví na cieľovom systéme:

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) pani ! 39 ms! 39 ms!

Všimnite si, že existuje 12 "brán" (13 je konečný cieľ) a posledná polovica z nich chýba. Čo sa naozaj deje, je server s názvom roztrhnutiu (Sun-3 so systémom Sun OS 3.5) používa TTL z nášho príchodu datagramu ako TTL vo svojej odpovedi ICMP. Takže odpoveď sa vyprší časom na spiatočnej ceste (bez upozornenia odoslaného komukoľvek, pretože ICMP nie sú posielané do ICMP), až kým nebudeme sondy s TTL, ktoré sú aspoň dvojnásobkom dĺžky cesty - inými slovami, rip je naozaj len sedem chmeľ preč.

Odpoveď, ktorá sa vracia s TTL 1, je kľúčom k tomuto problému. Traceroute vytlačí "!" po čase, ak je TTL menší alebo rovný 1. Pretože dodávatelia dodávajú veľa zastaralého (DECtrix Ultrix, Sun 3.x) alebo neštandardného (HPUX) softvéru, očakávajú, že tento problém budú často pozorovať a že sa postarajú o výber cieľového hostiteľa vašich sond.

Ďalšie možné poznámky po uplynutí času! H, ! N, aleboP! (hostiteľ, sieť alebo protokol nedosiahnuteľný),! S (zdrojová cesta zlyhala),! F- (je potrebná fragmentácia - zobrazí sa hodnota MTC Discovery cesty RFC1191),!X (komunikácia je administratívne zakázaná),! V (porušenie priorít hostiteľa),! C (účinnosť obmedzenia prednosti), alebo! (Nedostupný kód ICMP). Tieto kódy sú definované normou RFC1812, ktorá nahrádza RFC1716. Ak takmer všetky sondy vyústili do nejakého druhu nedosiahnuteľného hostiteľa, traceroute sa vzdal a skončil.

Tento program je určený na použitie pri testovaní, meraní a správe siete. Mal by sa používať predovšetkým na ručnú izoláciu porúch. Z dôvodu zaťaženia, ktoré by mohol zaviesť do siete, je nerozumné používať traceroute počas bežných operácií alebo z automatizovaných skriptov.