Skip to main content

Cum se utilizează comanda "traceroute" în Linux

Tutorial de Comando Ping en CMD o MS-Dos (Mai 2024)

Tutorial de Comando Ping en CMD o MS-Dos (Mai 2024)
Anonim

Comanda traceroute este folosită în Linux pentru a cartografia călătoria pe care un pachet de informații o ia de la sursă la destinație. O singură utilizare pentru traceroute este de a localiza atunci când pierderile de date au loc în întreaga rețea, ceea ce ar putea însemna un nod care este în jos.

Deoarece fiecare hop din înregistrare reflectă un nou server sau un ruter între PC-ul original și ținta dorită, examinarea rezultatelor scanării traceroute vă permite de asemenea să identificați puncte lentă care ar putea afecta negativ traficul de rețea.

Cum functioneaza

Evaluarea rutei specifice care urmează traficului de rețea (sau găsirea gateway-ului greșit care elimină pachetele dvs.) prezintă mai multe provocări de depanare. Traceroute utilizează protocolul IP timpul sa traiesti pentru a solicita un răspuns ICMP TIME_EXCEEDED de la fiecare gateway de-a lungul căii spre o gazdă de destinație.

Singurul parametru pe care trebuie să îl includeți când executați comanda traceroute este numele gazdei sau adresa IP a destinației.

Sintaxa și comutatoarele Traceroute

traceroute -dFInrvx -f first_ttl -g portal -i eu înfrunt -m max_ttl -p port -q nqueries -s src_addr -t TOS -w timp de așteptare -z pausemsecs gazdă packetlen

În timp ce cele de mai sus este modul în care comanda traceroute trebuie scrisă pentru a lucra în linia de comandă, performanța sau ieșirea comenzii pot fi modificate prin specificarea unuia sau mai multor comutatoare opționale.

  • -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ă. (Consultați-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 porturile UDP baza 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 utilizată pentru a ping o gazdă locală printr-o interfață care nu are un traseu prin aceasta (de ex., După ce interfața a fost abandonată de rutate (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. (Consultați-i pentru alt mod de a face acest lucru.)
  • -t: Seteaza tip-of-service în pachetele de sondă la următoarea valoare (valoarea zero implicită). 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, aceasta 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 control 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, în unele cazuri, implicit este de a nu calcula sumele de control și de a utiliza-X determină calcularea acestora. Rețineți că sumele de control sunt de obicei necesare pentru ultimul hop atunci când se utilizează sonde ICMP ECHO (-I), astfel încât acestea 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 de la Cisco, limitează viteza mesajelor icmp. O valoare bună de utilizat cu aceasta este 500 (de exemplu, 1/2 secundă).

Interpretarea rezultatelor

Traceroute schițează calea pe care o urmează un pachet IP la o gazdă de internet prin lansarea pachetelor de sondă 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 un port ICMP inaccesibil (ceea ce înseamnă că pachetul a ajuns la destinație) sau atinge o valoare maximă de încercări, care implică 30 de hamei și poate fi schimbată cu-m steag.

Când se execută traceroute, acesta trimite trei sonde la fiecare setare TTL și apoi imprimă o linie la consola care arată TTL, adresa gateway-ului și timpul de deplasare a fiecărei sonde. Dacă răspunsurile sondei provin din diferite gateway-uri, se imprimă adresa fiecărui sistem de răspuns. Dacă nu există răspuns în intervalul de timp de cinci secunde (modificat cu-w flag), este imprimat un asterisc pentru sonda respectivă.

Pentru a exclude ca gazda de destinație să fie copleșită de procesarea pachetelor de sondă UDP, portul de destinație este setat la o valoare care este puțin probabil să fie utilizată de dispozitivul respectiv. Dacă o rețea sau serviciu la destinație utilizează acel port, modificați valoarea folosind-p steag.

O probă de utilizare și de ieșire va reveni rezultate similare cu acest exemplu:

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ă linii a doua și a treia sunt aceleași. Acest rezultat se referă la un kernel buggy pe cel de-al doilea sistem de hamei lbl-csam.arpa, care transmite pachete cu un TTL zero (un bug în versiunea distribuită a BSD 4.3). Trebuie să ghiciți în ce direcție pachetele se desfășoară în străinătate, deoarece NSFNet (129.140) nu furnizează traduceri adresă-nume pentru SNS-urile sale.

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 de la 12, 14, 15, 16 și 17 nu respectă nici un mesaj ICMP "depășit de timp" sau le trimiteți cu un TTL prea mic pentru a ajunge la noi. Linile 14 până la 17 execută codul MIT C Gateway care nu trimite mesaje "depășite de timp".

Gateway-ul silențios 12 din exemplul de mai sus poate fi rezultatul unei erori în codul de rețea 23 BSD și al derivatelor sale: Mașinile care rulează codul 4.3 și trimite mai devreme un mesaj inaccesibil utilizând orice TTL rămâne în datagrama originală. Întrucât, pentru gateway-uri, TTL-ul rămas este zero, timpul "depășit" al ICMP 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ă), iar ultima jumătate dintre ele lipsesc. Ce se întâmplă cu adevărat este faptul că serverul a fost numit RIP (un Sun-3 care rulează Sun OS 3.5) utilizează TTL din datagrama noastră care vine ca TTL în răspunsul 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-uri) până când nu sondăm cu un TTL care este cel puțin dublu față de lungimea traseului - cu alte cuvinte, ripul este de fapt doar șapte hops departe.

Un răspuns care se întoarce cu un TTL de 1 este o idee că această problemă există. Traceroute imprimă un "!" după ce timpul în care TTL este mai mic sau egal cu 1. Deoarece distribuitorii livrează o mulțime de software depășit (DEC's Ultrix, Sun 3.x) sau non-standard (HPUX), așteptați să vedeți frecvent această problemă și să aveți grijă să alegeți țintă gazdă a sondei.

Alte adnotări posibile după timp sunt! H, ! N, sauP! (gazdă, rețea sau protocol inaccesibil);! S (ruta sursă nu a reușit),! F- (este necesară fragmentarea - se afișează valoarea descoperirii MTU a traseului RFC1191),!X (comunicare interzisă din punct de vedere administrativ),! V (încălcarea precedentelor gazdă),! C (cutoff de prioritate în vigoare), sau! (Cod ICMP inaccesibil). Aceste coduri sunt definite de RFC1812, care înlocuiește RFC1716. Dacă aproape toate sondele au ca rezultat un fel de gazdă inaccesibilă, 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ării 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.