Traceroute - comandă Linux - comandă Unix

traceroute - imprimați pachetele de rute pentru a găzdui o rețea

Rezumat

traceroute [ -dFInrvx ] [ -f prima_ttl ] [ -g gateway ]

[ -i iface ] [ -m max_ttl] [ -p port ]

[ -q nqueries ] [ -s src_addr ] [ -t tos ]

[ -w waittime ] [ -z pausemsecs ]

gazdă [ packetlen ]

Descriere

Internetul este o agregare complexă și complexă a hardware-ului de rețea, conectat împreună prin gateway-uri. Urmărirea urmăririi pachetelor de pe traseu (sau găsirea gateway-ului greșit care elimină pachetele dvs.) poate fi dificilă. Traceroute utilizează protocolul IP "timp pentru a trăi" și încearcă să obțină un răspuns ICMP TIME_EXCEEDED de la fiecare gateway de-a lungul căii către o anumită gazdă.

Singurul parametru obligatoriu este numele gazdei de destinație sau numărul IP . Lungimea datagramei sonde implicită este de 40 de octeți , dar aceasta poate fi mărită prin specificarea unei lungimi de pachet (în octeți) după numele gazdei de destinație.

Alte opțiuni sunt:

-f

Setați timpul inițial utilizat în primul pachet de sonde de ieșire.

-F

Setați bitul "nu fragmente".

-d

Activați depanarea nivelului socketului.

-g

Specificați un gateway ruta sursă (maxim 8).

-i

Specificați o interfață de rețea pentru a obține adresa IP sursă pentru pachetele sondei de ieșire. Acest lucru este în mod normal util doar pentru o gazdă multi-gazdă. (Vezi flagul -s pentru alt mod de a face acest lucru.)

-I

Utilizați ICMP ECHO în loc de datagrame UDP.

-m

Setați timpul maxim de viață (numărul maxim de hamei) utilizat în pachetele sondei de ieșire. Implicit este 30 de hamei (aceeași valoare implicită pentru conexiunile TCP).

-N

Imprimați hamei adresele în mod numeric, mai degrabă decât simbolic și numeric (salvează o căutare nume-adresă adresă-nume pentru fiecare gateway găsit pe cale).

-p

Setați numărul de port UDP de bază utilizat în sonde (implicit este 33434). Traceroute speră că nimic nu ascultă pe baza porturilor UDP la baza + nhops - 1 la gazda destinație (astfel încât un mesaj ICMP PORT_UNREACHABLE va fi returnat pentru a termina trasarea traseului). Dacă ceva ascultă pe un port în intervalul implicit, această opțiune poate fi utilizată pentru a alege un interval de port neutilizat.

-r

Treceți de la tabelele normale de rutare și trimiteți-le direct unei gazde pe o rețea atașată. Dacă gazda nu se află într-o rețea atașată direct, se întoarce o eroare. Această opțiune poate fi folosită pentru a ping o gazdă locală printr-o interfață care nu are un traseu prin ea (de exemplu, după ce interfața a fost abandonată de către router (8C)).

-s

Utilizați următoarea adresă IP (care, de obicei, este dată ca număr de IP, nu ca nume de gazdă) ca adresă sursă în pachetele de sonde expediate. În cazul gazdelor cu mai multe adrese (cele cu mai mult de o adresă IP), această opțiune poate fi utilizată pentru a forța adresa sursă să fie altceva decât adresa IP a interfeței pe care este expediat pachetul sondei. Dacă adresa IP nu este una dintre adresele de interfață ale acestei mașini, se returnează o eroare și nu se trimite nimic. (A se vedea flagul -i pentru alt mod de a face acest lucru.)

-t

Setați tipul de serviciu în pachetele sondelor la următoarea valoare (valoarea zero standard). Valoarea trebuie să fie un număr întreg zecimal în intervalul de la 0 la 255. Această opțiune poate fi utilizată pentru a vedea dacă diferite tipuri de servicii au ca rezultat diferite căi. (Dacă nu executați 4.4bsd, acest lucru poate fi academic, deoarece serviciile de rețea normale precum telnet și ftp nu vă permit să controlați TOS). Nu toate valorile TOS sunt legale sau semnificative - consultați specificațiile IP pentru definiții. Valorile utile sunt probabil " -t 16 " (întârziere redusă) și " -t 8 " (viteză mare).

-v

Explozie verbală. Au fost listate pachetele ICMP primite, altele decât TIME_EXCEEDED și UNREACHABLEs.

-w

Setați timpul (în secunde) să așteptați răspunsul la o sondă (implicit 5 secunde).

-X

Comutați sumele de verificare ip. În mod normal, acest lucru împiedică traceroute să calculeze sumele de control ip. În unele cazuri, sistemul de operare poate suprascrie părți din pachetul de ieșire, dar nu recalculează suma de control (astfel încât în ​​unele cazuri implicit să nu se calculeze sumele de control și să se folosească -x determină ca acestea să fie calcule). Rețineți că sumele de control sunt de obicei necesare pentru ultimul hop atunci când se utilizează sonde ICMP ECHO ( -I ). Deci ele sunt întotdeauna calculate atunci când se utilizează ICMP.

-z

Setați timpul (în milisecunde) pentru a întrerupe între sonde (implicit 0). Unele sisteme, cum ar fi Solaris și routerele, cum ar fi rata Ciscos, limitează mesajele icmp. O valoare bună de utilizat cu aceasta este 500 (de ex. 1/2 secundă).

Acest program încearcă să urmărească traseul pe care un pachet de IP-l urma să îl urmeze la o anumită gazdă de internet, lansând pachete de sonde UDP cu un ttl mic (timp de trăit), apoi ascultând pentru un răspuns ICMP "depășit de timp" de la un gateway. Începem sondele noastre cu un ttl de câte unul și creștem câte unul până când ajungem la un port ICMP nedorit (ceea ce înseamnă că am ajuns la "gazdă") sau a lovit un max (care implicit la 30 de hamei și poate fi schimbat cu -m steag). Trei sonde (se modifică cu parametrul -q ) sunt trimise la fiecare setare ttl și este imprimată o linie care arată ttl, adresa gateway-ului și timpul de deplasare rotund al fiecărei sonde. Dacă răspunsurile sondei provin din diferite gateway-uri, va fi imprimată adresa fiecărui sistem de răspuns. Dacă nu există răspuns în decurs de 5 secunde. timeout interval (schimbat cu flag -w ), un "*" este imprimat pentru sonda respectivă.

Nu vrem ca gazda de destinație să proceseze pachetele de sondaj UDP, astfel încât portul de destinație să fie setat la o valoare improbabilă (dacă un obiect din destinație folosește acea valoare, poate fi schimbat cu pavilionul -p ).

O probă de utilizare și de ieșire ar putea fi:

[yak 71]% traceroute nis.nsf.net. traceroute la nis.nsf.net (35.1.1.48), 30 hops max, pachet de 38 de octeți 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

Rețineți că liniile 2 și 3 sunt identice. Acest lucru se datorează unui kernel de tip buggy pe sistemul de hamei al doilea - lbl-csam.arpa - care transmite pachete cu zero ttl (un bug în versiunea distribuită a 4.3BSD). Rețineți că trebuie să ghiciți ce cale parcurgă pachetele, deoarece NSFNet (129.140) nu furnizează traduceri adresă-nume pentru SNSS.

Un exemplu mai interesant este:

[yak 72]% traceroute allspice.lcs.mit.edu. traceroute to allspice.lcs.mit.edu (18.26.0.115), 30 hamei 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

Rețineți că gateway-urile 12, 14, 15, 16 și 17 nu sunt trimise sau nu trimit mesaje ICMP "depășite de timp" sau le trimiteți cu un ttl prea mic pentru a ajunge la noi. 14 - 17 rulează codul MIT C Gateway care nu trimite "timpul depășit" s. Dumnezeu știe doar ce se întâmplă cu 12.

Poarta silențioasă 12 din cele de mai sus poate fi rezultatul unei erori în codul de rețea [23] BSD (și al derivatelor sale): 4.x (x <= 3) trimite un mesaj inaccesibil folosind orice valoare rămasă în original datagramă. Întrucât, pentru gateway-uri, ttl rămas este zero, timpul "ICMP" depășit "este garantat că nu ne va aduce înapoi. Comportamentul acestei erori este puțin mai interesant atunci când apare în sistemul de destinație:

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) Domnișoară ! 39 ms! 39 ms!

Observați că există 12 "gateway-uri" (13 este destinația finală) și exact ultima jumătate dintre ele "lipsesc". Ce se întâmplă cu adevărat este faptul că ripul (Sun-3 care rulează Sun OS3.5) utilizează ttl din datagramul nostru care vine ca ttl în răspunsul său ICMP. Deci, răspunsul se va opri pe calea de întoarcere (fără notificare trimisă nimănui, deoarece ICMP-urile nu sunt trimise pentru ICMP) până când vom sonda cu un ttl care este cel puțin dublul lungimii căii. De exemplu, ripul este la doar 7 hop-uri distanță. Un răspuns care se întoarce cu un ttl de 1 este o dovadă că această problemă există. Traceroute imprimă un "!" după ce timpul în care ttl este <= 1. Întrucât furnizorii livrează o mulțime de software învechit (DEC's Ultrix, Sun 3.x) sau non-standard (HPUX), se așteaptă să vadă această problemă frecvent și / sau să aibă grijă să aleagă ținta gazda sondei tale.

Alte adnotări posibile după timp sunt : H , N sau P (gazdă, rețea sau protocol inaccesibilă), S (ruta sursă nu a reușit) ,! F- (este necesară fragmentarea - se afișează valoarea descoperirii căii MTU Discovery RFC1191) ! X (comunicare administrativ interzisă) ,! V (încălcare precedență gazdă) ,! C (cutoff precedent în vigoare), sau ! (Cod ICMP inaccesibil). Acestea sunt definite de RFC1812 (care înlocuiește RFC1716). Dacă aproape toate sondele duc la un fel de neatins, traceroute va renunța și va ieși.

Acest program este destinat utilizării în testarea, măsurarea și gestionarea rețelelor. Ar trebui să fie utilizat în primul rând pentru izolarea manuală a defecțiunilor. Din cauza încărcăturii pe care o poate impune în rețea, nu este înțelept să folosiți traceroute în timpul operațiilor normale sau din scripturi automate.

Vezi si

pathchar (8), netstat (1), ping (8)