Locked History Actions

Traceroute

traceroute

Linux, BSD


Apibūdinimas

Komanda yra naudojama siekiant nustatyti, kokiu keliu paketas pasiekia savo galutinį tikslą internete. Komanda parodo į tinklo mazgą siunčiamų paketų maršrutą. Galime matyti IP adresus arba mazgų pavadinimus per kuriuos keliauja paketas. Naudojant šią komandą kai kurie kelvedžiai ir ugniasienėmis apsaugoti mazgai gali būti nerodomi. Ši komanda yra naudinga tada, kai norima surasti tinklo blokavimo ar srauto sulėtėjimo tašką. Galima naudoti įvairias parinktis ir, pavyzdžiui, pasirinkti šliuzus (iki 8), kuriais pasiekti galutinį tašką.


Paaiškinimai

Komanda yra naudojama, norint stebėti į tinklo mazgą siunčiamų paketų maršrutą tinkle.

Komandos naudojimo sintaksė

traceroute [-46dFITUnrAV] [-f first_ttl] [-g gate,...] [-i device] [-m max_ttl] [-p port] [-s src_addr] [-q nqueries]
           [-N squeries] [-t tos] [-l flow_label] [-w waittime] [-z sendwait] [-UL] [-P proto] [--sport=port] [-M method]
           [-O mod_options] host [packetlen]

traceroute6 [options]
tracert [options]
tcptraceroute [options]

Čia gate - vartai, device - prietaisas, port - prievadas, first_ttl - pirma egzistavimo laiko trukmė, max_ttl - maksimali egzistavimo laiko trukmė, src_addr - šaltinio adresas, nqueries - užklausos, squeries - užklausos, tos - paslaugos tipas (angl.Type of Service), flow_label - srauto žymė, waittime - laukimo laikas, sendwait - siuntimo laukimas, proto - pirmasis/pradinis, method - metodas, mod_options - režimo pasirinktys, packetlen - paketo ilgis, host - tinklo mazgas, options - pasirinktys, interface - sąsaja.

traceroute6 komanda tolygi komandai traceroute -6
tracert komanda tolygi komandai traceroute -I
tcptraceroute komanda tolygi komandai traceroute -T

Ši komanda seka iš IP tinklo siunčiamus paketus jiems keliaujant į nurodytą tinklo mazgą. Naudojamas IP protokolo egzistavimo laiko trukmės laukas ir bandoma gauti ICMP TIME_EXCEEDED - galiojimo laikas baigėsi atsaką iš kiekvienų vartų (tarptinklinių vartų),esančių pakeliui į tinklo mazgą.

Vienintelis reikalaujamas parametras yra paskirties tinklo mazgo pavadinimas ar IP adresas. Po šio parametro gali eiti tiriamojo paketo, siunčiamo į tiklo mazgą (pagal nutylėjimą 40), dydis. Paketo dydžio keitimą naudojant -F parametrą galima naudoti norint gauti informacijos apie atskirų tinklo tranzitinių ruožų MTU (Dydžio parametras nenaudingas TCP tyrimui).

Ši programa/komanda bando sekti maršrutą, kuriuo būtų siunčiamas IP paketas į kai kuriuos interneto tinklo mazgus paleidžiant tiriamuosius paketus (paketai naudojami tyrimui), turinčius mažą egzistavimo laiko trukmės reikšmę (TTL reikšmę), o tada laukiant ICMP TIME_EXCEEDED - galiojimo laikas baigėsi atsako iš tarptinklinių vartų. Tyrimas pradedamas naudojant TTL su reikšme 1 ir didinant po 1 iki tol, kol gaunamas ICMP pranešimas prievadas nepasiekiamas (arba TCP nustatymas iš naujo - reset), o tai reiškia, kad pasiektas mazgas arba maksimumas (pagal nutylėjimą 30 tranzitinių ruožų).

Trys tiriamieji paketai siunčiami (pagal nutylėjimą) su kiekvieno ttl nustatymu ir atspausdinama eilutė, rodanti ttt reikšmę, tarptinklinių vartų adresą ir kiekvieno tiriamojo paketo kelionės pirmyn ir atgal laiką. Jei tyriamųjų paketų atsakymai gaunami iš skirtingų tarptinklinių vartų, atspausdinamos kiekvienos atsakančios sistemos adresas. Jei per 5 sekundes (pagal nutylėjimą) negaunamas atsakymas, tam tiriamajam paketui atspausdinama "*".

Po kelionės laiko gali būti atspausdinta papildomų komentarų: !H, !N, !P (tinklo mazgas, tinklas arba protokolas nepasiekiamas), !S (šaltinio maršrutas klaidingas), !F (reikalinga fragmentacija), !X (ryšys administratoriaus uždraustas), !V (tinklo mazgo pirmumo pažeidimas ), !C (pirmumo galiojimo nutraukimas neveiksmingas), arba !<num> (ICMP nepasiekiamas kodas <num>). Jeigu beveik visi tyrimų rezultatai nepasiekiami, komandos vykdymas nutraukiamas.

Nenorint, kad paskirties tinklo mazgas apdorotų UDP tiriamuosius paketus, nustatoma netikėtina paskirties prievado reikšmė. Ją galima pakeisti su -p vėliavėle. Tokios problemos nekyla naudojant ICMP arba TCP paketų sekimą (TCP atveju naudojamas pusiau atviras metodas, kuris neleidžia paskirties tinklo mazgo programoms matyti tiriamųjų paketų - tyrimų).

Modernių tinklų aplinkoje ne visada galima naudoti tradicinius maršruto sekimo metodus dėl plačiai naudojamų tarpsegmentinių ekranų. Jie filtruoja netikėtinus UDP prievadus arba net ICMP atsakus - aidus. Norint tai išspręsti, taikomi papildomi maršruto sekimo metodai (įskaitant TCP). Tokie metodai bando naudoti tam tikrą protokolą ir šaltinio ir (arba) paskirties prievadą, kad būtų galima apeiti tarpsegmentinius ekranus (mato tik leidžiamo tinklo seanso tipo pradžioje).

Pasirinktys

       --help
       Spausdinti žinyno informaciją.

       -4, -6
       Priversti IPv4 arba IPv6 sekimo išvedimą. Pagal nutylėjimą komanda bandys išsiaiškinti pavadinimą ir automatiškai pasirinkti atitinkamą protokolą. Jeigu aiškinantis tinklo mazgo pavadinimą, gaunami IPv4 ir IPv6 adresai, komanda naudos IPv4.

       -I
       Naudoti ICMP atsaką tyrimams

       -T
       Naudoti TCP sinchronizavimą tyrimams

       -d
       Įgalinti lizdo lygmens derinimą

       -F
       Nustatyti nefragmentavimo bitą. Taip nurodoma tarpiniams maršrutizatoriams nefragmentuoti paketų, kai jie yra per dideli tinklo tranzitinio ruožo MTU.

       -f first_ttl
       Nurodyti su kokia TTL reikšme pradėti. Pagal nutylėjimą 1.

       -g gateway
       Nurodo komandai pridėti IP šaltinio maršruto parinkimo parinktį siunčiamam paketui, kuri nurodo tinklui siųsti paketą per nurodytus tarptinklinius vartus. Nelabai naudinga, nes dauguma maršrutizatorių turi išjungtą maršruto parinkimą saugumo tikslais.

       -i interface
       Nurodo sąsają, per kurią komanda turėtų siųsti paketus. Pagal nutylėjimą, sąsaja pasirenkama pagal maršrutizavimo lentelę.

       -m max_ttl
       Nurodo didžiausią tranzitinių ruožų skaičių, kuriuos komanda tirs. Pagal nutylėjimą 30.

       -N squeries
       Nurodo tiriamųjų paketų skaičių, kurie išsiunčiami vienu metu. Kelių tiriamųjų paketų siuntimas vienu metu gali labai pagreitinti maršruto sekimą. Numatytoji reikšmė yra 16. Kai kurie maršrutizatoriai ir tinklo mazgai gali naudoti ICMP greičio mažinimą. Tokioje situacijoje nurodžius per didelį skaičių, galima prarasti kai kuriuos atsakymus.

       -n
       Nebandyti susieti IP adresų su tinklo mazgų pavadinimais, kai jie yra rodomi.

       -p port
       UDP paketų sekimui nurodo paskirties prievado bazę, kurią naudos komanda (paskirties prievado numeris bus padidinta kiekvienu tiriamuoju paketu - kiekvienu tirimu). ICMP sekimui nurodo pradinę ICMP sekos reikšmę (taip pat padidinama kiekvienu kiekvienu tiriamuoju paketu - kiekvienu tirimu). TCP sekimui nurodo tik (pastovų) paskirties prievadą sujungimui.

       -t tos
       Nustato IPv4 paslaukos tipą ir pirmumo reikšmę. naudingos reikšmės yra 16 - mažas užlaikymas, 8 - aukštas pralaidumas. Norint naudoti kai kurias TOS pirmumo reikšmes, reikia būti super vartotoju. IPv6 nustato apkrovos kontrolės reikšmę.

       -w waittime
       Nustato laiką sekundėmis tyrimo atsakymo laukimui. Numatytoji reikšmė 5 sekundės.

       -q nqueries
       Nustato tiriamųjų paketų skaičių vienam tranzitiniam ruožui. Numatytoji reikšmė 3.

       -r
       Apeina įprastas maršrutizavimo lenteles ir tiesiogiai siunčia tinklo mazgui prijungtiniame tinkle. Jei tinklo mazgas nėra tiesiogiai prijungtame tinkle, gaunamas klaidos pranešmas. Ši pasirinktis gali būti naudojama norint patikrinti vietinį tinklo mazgą per sąsają, kuri neturi maršruto per jį.

       -s source_addr
       Pasirenka alternatyvų šaltinio adresą. Turi būti pasirenkamas kurios nors sąsajos adresas. Pagal nutylėjimą naudojamas išėjimo sąsajos adresas.

       -z sendwait
       Minimalus laiko intervalas tarp tyrimų (numatytoji reikšmė yra 0). Jei reikšmė yra didėsnė nei 10, tuomet ji nurodo skaičių milisekundėmis, kitaip tai reiškia sekundes (skaičiai su kableliais taip pat leidžiami). Naudinga kai, kai kurie maršrutizatoriai naudoja greičio ribojimą ICMP žinutėms.

       -A
       Atlieka AS kelio paieška maršrutizavimo registruose ir atspausdina rezultatus iškart po atitinkamais adresais.

       -V
       Atspausdina versiją.

Papildomos pasirinktys

       --sport=port
       Pasirenka naudotina šaltinio prievadą. Numatomas -N 1. Paprastai šaltinio prievadus (jei taikoma) pasirenka sistema.

       -M method
       Naudoja nurodyta metodą maršruto sekimo operacijai. Numatytasis tradicinis UDP metodas turi numatytąjį pavadinimą, ICMP (-I) ir TCP (-T) turi pavadinimus ICMP ir TCP. Metodui būdingos pasirinktys gali būti apeitos naudojant -O. Dauguma metodų turi paprastas nuorodas (-I reiškia -M ICMM).

       -O option
       Nurodo kai kurias metodui būdingas pasirinktis. Kelios pasirinktys yra atskirtos kableliu (arba naudoja kelias -O komandinėje eilutėje). Kiekvienas metodas gali turėti savo specialių pasirinkčių arba jų visai neturėti.

       -U
       Naudoja UDP tam tikros paskirties prievadui, skirtam maršruto sekimui (užuot didinus prievadą kiekvienam tyrimui). Numatytasis prievadas yra 53 (DNS).

       -UL
       Naudoja UDPLITE maršruto sekimui (Numatytasis prievadas 53).

       -P protocol
       Naudoja nurodyto protokolo neapdorotą paketą maršruto sekimui. Pagal nutylėjimą protokolas yra 253 (rfc3692).

Prieinamų metodų sąrašas

Paprastai tam tikras maršruto sekimo metodas gali būti pasirenkamas naudojant -M pavadinimas, tačiau daugelis metodų turi savo paprastų komandinių eilučių modifikatorius.

   default
   Senas tradicinis maršruto sekimo metodas. Naudojamas kaip numatytasis.

Tiriamieji paketai yra UDP duomenų blokai su taip vadinamais netikėtinais paskirties portais. Pirmo tyrimo netikėtinas prievadas yra 33434, o kiekvienam kitam tyrimui jis didinamas vienetu. Kadangi manoma, kad prievaidai turėtų būti nenaudojami, paskirties mazgas dažniausiai kaip galutinį atsakymą gražina - ICMP nepasiekia prievado. (Niekas nežino, kas vyksta, kai kažkokia programa klausosi šių prievadų). Šis metodas yra leistas neprivilegijuotiems vartotojams.

   icmp -I
   Papraščiausias dabartinis metodas, kuris nadoja ICMP atsako paketus tyrimams. Jei galima patikrinti paskirties mazgą, tai ICMP maršruto sekimas taip pat pritaikomas.

   tcp -T
   Gerai žinomas šiuolaikinis metodas, numatytas, kad apeitų tarpsegmentinius ekranus.Naudoja pastovų paskirties prievadą (numatytasis yra 80 - http).

Jei keletas filtrų dalyvauja tinklo kelyje, tuomet veikiausiai bet kuris netikėtinas UDP prievadas arba netgi ICMP atsakai nufiltruojami ir visas maršruto sekimas sustos tokiame tarpsegmentiniame ekrane. Kad apeiti tinklo filtrą turi būti naudojamos tik leistinos protokolo ir prievado kombinacijos. Kai tarkime ieškomas maršrutas iki pašto serverio, tuomet labiau tikėtina, kad naudojant -T -p 25 galima nustatyti maršrutą, net kai -I negali.

Šis metodas naudoja gerai žinomą pusiau atvirą metodą, kuris užkertą kelią paskirties tinklo mazgo programoms matyti mūsų tyriamuosius paketus - tyrimus. Paprastai TCP išsiunčia Syn paketą. Jei prievadas uždaras, gaunamas TCP nustatymo iš naujo paketas ir viskas pasibaigia. Jei prievadas atviras, gaunamas Syn+Ack paketas, bet TCP atsakymas - nustatyti iš naujo (vietoj laukto TCP Ack), tokiu būdu, nuotolinis TCP seansas yra numetamas, net be programos pranešimo.

   tcpconn
   TCP metodo pradinis įgyvendinimas, paprastai naudojant sujungimo iškvietimą, kuris atlieka pilną TCP seanso atidarymą. Nerekomenduojama normaliam naudojimui, nes paskirties programa - vieta yra visada paveikiama (ir gali būti supainiota).

   udp -U
   Naudoja UDP duomenų blokus su nuotaliniu paskirties prievadu (pagal nutylėjimą 53 - DNS). Taip pat numatytas, kad apeitų tarpsegmentinį ekraną.

Skirtingai nei TCP metode, atitinkama programa paskirties tinklo mazge visada priima tiriamuosius paketus (su atsitiktiniais duomenimis) ir daugelis jų gali būti lengvai sumaišyti. Daugeliu atveju bus negaunamas atsakymas į paketus ir tokiu būdu bus niekada nematomas paskutinis tranzitinis ruožas maršruto sekime. Šis metodas yra leistas neprivilegijuotiems vartotojams.

   udplite -UL
   Naudoja UDPLITE duomenų blokus tyrimams (su nuolatiniu paskirties prievadu, pagal nutylėjimą 53).Šis metodas yra leistas neprivilegijuotiems vartotojams.

   raw -P proto
   Siunčia pradinio protokolo neapdorotą paketą. Nenaudojamos jokios specialios protokolo antraštės tik IP antraštė. Reiškia -N 1.

TCP metodo pasirinktys

       syn,ack,fin,rst,psh,urg,ece,cwr
       Nustato nurodytas TCP vėliavėles tiriamajam paketui bet kokioje kombinacijoje.

       flags=num
       Nustato vėliavėlės lauką TCP antraštėje būtent prie num.

       ecn
       Siunčia Syn paketą su TCP vėliavėlėmis ECE ir CWR (aiškiam perkrovimo pranešimui, rfc3168).

       sack,timestamps,window_scaling
       Naudoja atitinkamą TCP antraštės pasirinktį išeinančiuose tiriamuosiuose paketuose.

       sysctl
       Naudoja esamus Sysctl (/proc/sys/net/*) nustatymus TCP antraštės pasirinktims. Visada naudojama pagal nutylėjimą, jei nieko nenurodyta.

       mss=num
       Naudoja num vertę TCP antraštės maxseg pasirinkčiai (kai naudojama Syn).

       Numatytosios pasirinktys yra Syn, Sysctl.

UDPLITE metodo pasirinktys

       coverage=num
       Nustato UPDLITE siųsti num veikimo zonoje.

RAW metodo pasirinktys

       protocol=proto
       Naudoja pradinį IP protokolą (Pagal nutylėjimą 253).

Paprastai keli tiriamieji paketai yra siunčiami tuo pačiu metu, kad padydinti darbo greitį. Tačiau tai sukelia paketų audrą, ypač atsakymo kryptimi. Maršrutizatoriai gali sumažinti ICMP atsakymų greitį ir kai kurie atsakymai gali būti prarasti. Siekiant to išvengti reikia sumažinti vienu metu siunčiamų tiriamųjų paketų skaičių arba net nustatytį, kad siunčiamas tik vienas tiriamasis paketas (kaip pradiniame maršruto sekimo įgyvendinime) -N 1.

Galutinis tinklo mazgas gali atmesti kai kuriuos tiriamuosius paketus siunčiamus vienu metu ir gali atsakyti tik į paskutinį. Tai gali nuvesti prie papildomų nustojusių galioti tranzitinių ruožų netoli galutinio tranzitinio ruožo. Tam naudojamas sumanus algoritmas automatiškai aptinkantis tokias situacijas, tačiau šiuo atveju reikia naudoti -N 1.

Siekiant didesnio stabilumo galima sulėtinti komandos darbą naudojant - z pasirinktį, pavyzdžiui, naudoti -z 0.5. Tuomet tarp tiriamųjų paketų - tyrimų bus pusės sekundės pertraukos.

Jei kai kurie tranzitiniai ruožai nieko nepraneša bet kokiam metodui, tuomet paskutinė galimybė gauti kažką yra panaudoti tikrinimą taikant komandą ping -R (tik IPv4 ir artimiausiams 8 tranzitiniams ruožams).


Pavyzdys

Komandos panaudojimas

traceroute mt-example.com

Gautas atsakymas

traceroute to mt-example.com (64.13.192.208), 64 hops max, 40 byte packets
1  72.10.62.1 (72.10.62.1)  1.000 ms  0.739 ms  0.702 ms
2  10.101.248.1 (10.101.248.1)  0.683 ms  0.385 ms  0.315 ms
3  10.104.65.161 (10.104.65.161)  0.791 ms  0.703 ms  0.686 ms
4  10.104.0.1 (10.104.0.1)  1.430 ms  1.310 ms  1.063 ms
5  10.0.10.33 (10.0.10.33)  2.652 ms  2.260 ms  5.353 ms
6  acmkokeaig.gs01.gridserver.com (64.13.192.208)  3.384 ms  8.001 ms  2.439 ms

Komandos panaudojimas

traceroute -n 150.1.4.2

Gautas atsakymas

traceroute to 150.1.4.2 (150.1.4.2), 30 hops max, 40 byte packets
1. 150.1.1.2 1.140 ms 0.793 ms 0.778 ms
2. 150.1.2.2 2.213 ms 2.105 ms 3.491 ms
1. 150.1.3.2 3.146 ms 2.314 ms 2.347 ms
1. 150.1.4.2 3.579 ms * 2.954 ms


Naudota literatūra

  1. http://www.computerhope.com/unix/utracero.htm

  2. http://linux.about.com/library/cmd/blcmdl8_traceroute.htm

  3. http://www.freebsd.org/cgi/man.cgi?query=traceroute#DESCRIPTION


CategoryKomanda