03/28/2024

Cum să utilizați comanda traceroute pe Linux

Puteți utiliza comanda Linux traceroute pentru a identifica etapa lent a călătoriei unui pachet de rețea și pentru a depana conexiunile de rețea lente. Vă vom arăta cum!

Cum funcționează traceroute

Când apreciați cum funcționează traceroute, înțelegerea rezultatelor este mult mai ușoară. Cu cât traseul este mai complicat a pachet de rețea trebuie să luați pentru a ajunge la destinație, cu atât este mai greu de identificat unde ar putea avea loc orice încetinire.

Al unei organizații mici rețea locală (LAN) ar putea fi relativ simplu. Probabil că va avea cel puțin un server și un router sau două. Complexitatea crește pe a rețea de arie largă (WAN) care comunică între diferite locații sau prin internet. Pachetul dvs. de rețea întâlnește apoi (și este redirecționat și direcționat de către) o mulțime de hardware, cum ar fi routere și gateway-uri.

Antetele metadatelor de pe pachetele de date descriu lungimea acesteia, de unde provine, unde se îndreaptă, protocolul pe care îl folosește și așa mai departe. Specificația protocolului definește antetul. Dacă puteți identifica protocolul, puteți determina începutul și sfârșitul fiecărui câmp din antet și puteți citi metadatele.

traceroute folosește TCP/IP suită de protocoale și trimite Protocolul de datagramă utilizator pachete. Antetul conține Timpul sa traiesti câmp (TTL), care conține o valoare întreagă de opt biți. În ciuda a ceea ce sugerează numele, reprezintă un număr, nu o durată.

Un pachet călătorește de la origine la destinație printr-un router. De fiecare dată când pachetul ajunge la un router, acesta scade contorul TTL. Dacă valoarea TTL ajunge vreodată la unu, routerul care primește pachetul scade valoarea și observă că acum este zero. Pachetul este apoi aruncat și nu redirecționat la următorul hop al călătoriei sale, deoarece a „expirat”.

Routerul trimite un Protocolul de control al mesajelor pe Internet (ICMP) Timp depășit mesaj înapoi la originea pachetului pentru a-l anunța că pachetul a expirat. Mesajul Time Exceeded conține antetul original și primii 64 de biți ai datelor pachetului original. Acest lucru este definit la pagina șase din Cerere de comentarii 792.

Deci, dacă traceroute trimite un pachet, dar apoi setează valoarea TTL la unu, pachetul va ajunge doar până la primul router înainte de a fi aruncat. Va primi un mesaj ICMP de depășire a timpului de la router și poate înregistra timpul necesar pentru călătoria dus-întors.

  Cum să utilizați comanda stat pe Linux

Apoi repetă exercițiul cu TTL setat la 2, care va eșua după două sărituri. traceroute crește TTL la trei și încearcă din nou. Acest proces se repetă până când se ajunge la destinație sau se testează numărul maxim de hopuri (30, implicit).

Unele routere nu se joacă bine

Unele routere au erori. Ei încearcă să redirecționeze pachetele cu un TTL de zero în loc să le arunce și să ridice un mesaj ICMP de depășire a timpului.

Conform Cisco, unii Furnizori de Servicii de Internet (ISP) limitează numărul de mesaje ICMP pe care ruterele lor le transmit.

Unele dispozitive sunt configurate să nu trimită niciodată pachete ICMP. Acest lucru este adesea pentru a vă asigura că dispozitivul nu poate fi forțat fără să vrea să participe la a refuzul de serviciu distribuit, ca o atacul ștrumfilor.

traceroute are un timeout implicit pentru răspunsuri de cinci secunde. Dacă nu primește un răspuns în acele cinci secunde, încercarea este abandonată. Aceasta înseamnă că răspunsurile de la routerele foarte lente sunt ignorate.

Instalarea traceroute

traceroute a fost deja instalat pe Fedora 31, dar trebuie instalat pe Manjaro 18.1 și Ubuntu 18.04. Pentru a instala traceroute pe Manjaro, utilizați următoarea comandă:

sudo pacman -Sy traceroute

The

Pentru a instala traceroute pe Ubuntu, utilizați următoarea comandă:

sudo apt-get install traceroute

The

Folosind traceroute

După cum am descris mai sus, scopul traceroute este de a obține un răspuns de la router la fiecare salt de la computer la destinație. Unele s-ar putea să fie cu buzele strânse și să nu dea nimic, în timp ce alții probabil vor vărsa boabele fără scrupule.

De exemplu, vom rula un traseu către Castelul Blarney site-ul web din Irlanda, casa celebrilor Blarney Stone. Legenda spune că, dacă săruți Piatra Blarney, vei fi binecuvântat cu „cadoul gab”. Să sperăm că routerele pe care le întâlnim de-a lungul drumului sunt suficient de vorbe.

Introducem următoarea comandă:

traceroute www.blarneycastle.ie

The

Prima linie ne oferă următoarele informații:

Destinația și adresa sa IP.
Numărul de hamei va încerca traceroute înainte de a renunța.
Dimensiunea pachetelor UDP pe care le trimitem.

Toate celelalte rânduri conțin informații despre unul dintre hamei. Înainte de a pătrunde în detalii, totuși, putem vedea că există 11 hopuri între computerul nostru și site-ul web al Castelului Blarney. Hop 11 ne spune și că am ajuns la destinație.

Formatul fiecărei linii de hop este următorul:

  Cum se instalează Darktable pe Linux

Numele dispozitivului sau, dacă dispozitivul nu se identifică, adresa IP.
Adresa IP.
Timpul necesar dus-întors pentru fiecare dintre cele trei teste. Dacă un asterisc este aici, înseamnă că nu a existat un răspuns pentru acel test. Dacă dispozitivul nu răspunde deloc, veți vedea trei asteriscuri și niciun nume de dispozitiv sau adresă IP.

Să revedem ce avem mai jos:

Hop 1: primul port de apel (fără joc de cuvinte) este DrayTek Vigor Router din rețeaua locală. Acesta este modul în care pachetele noastre UDP părăsesc rețeaua locală și intră pe internet.
Hop 2: Acest dispozitiv nu a răspuns. Poate că a fost configurat să nu trimită niciodată pachete ICMP. Sau, poate că a răspuns, dar a fost prea lent, așa că traceroute a expirat.
Hop 3: Un dispozitiv a răspuns, dar nu am primit numele, ci doar adresa IP. Rețineți că există un asterisc în această linie, ceea ce înseamnă că nu am primit răspuns la toate cele trei solicitări. Acest lucru ar putea indica pierderea pachetului.
Hameiul 4 și 5: mai multe hameiuri anonime.
Hop 6: Există o mulțime de text aici, deoarece un dispozitiv diferit de la distanță a gestionat fiecare dintre cele trei solicitări UDP ale noastre. Au fost tipărite numele și adresele IP (destul de lungi) pentru fiecare dispozitiv. Acest lucru se poate întâmpla atunci când întâlniți o rețea „bogat populată” pe care există o mulțime de hardware pentru a gestiona volume mari de trafic. Acest hop se află într-unul dintre cei mai mari ISP-uri din Marea Britanie. Deci, ar fi un miracol minor dacă aceeași piesă de hardware de la distanță ar gestiona cele trei solicitări de conexiune.
Hop 7: Acesta este hop-ul făcut de pachetele noastre UDP când au părăsit rețeaua ISP-urilor.
Hop 8: Din nou, primim o adresă IP, dar nu și numele dispozitivului. Toate cele trei teste au revenit cu succes.
Hop 9 și 10: încă două hop anonime.
Hop 11: Am ajuns pe site-ul Castelului Blarney. Castelul se află în Cork, Irlanda, dar, potrivit Geolocalizarea adresei IP, site-ul este în Londra.

Deci, a fost un sac mixt. Unele aparate au jucat mingea, unele au răspuns dar nu ne-au spus numele, iar altele au rămas complet anonime.

Cu toate acestea, am ajuns la destinație, știm că este la 11 hop distanță, iar timpul dus-întors pentru călătorie a fost de 13,773 și 14,715 milisecunde.

Ascunderea numelor dispozitivelor

După cum am văzut, uneori includerea numelor de dispozitiv duce la un afișaj aglomerat. Pentru a facilita vizualizarea datelor, puteți utiliza opțiunea -n (fără mapare).

  Cum să obțineți specificațiile de sistem pentru un computer Linux

Pentru a face acest lucru cu exemplul nostru, introducem următoarele:

traceroute -n blarneycastle.ie

The

Acest lucru face mai ușor să alegeți numere mari pentru orele dus-întors, care ar putea indica un blocaj.

Hop 3 începe să pară puțin suspect. Data trecută, a răspuns doar de două ori, iar de data aceasta, a răspuns o singură dată. În acest scenariu, este în afara controlului nostru, desigur.

Cu toate acestea, dacă ați investiga rețeaua dvs. corporativă, ar merita să aprofundați puțin în acel nod.

Setarea valorii de expirare a traceroute

Poate dacă extindem perioada de timeout implicită (cinci secunde), vom primi mai multe răspunsuri. Pentru a face acest lucru, vom folosi opțiunea -w (timpul de așteptare) pentru a o schimba la șapte secunde. (Rețineți că acesta este un număr în virgulă mobilă.)

Introducem următoarea comandă:

traceroute -w 7.0 blarneycastle.ie

The

Asta nu a făcut o mare diferență, așa că probabil că răspunsurile expiră. Este posibil ca hameiul anonim să fie secretos intenționat.

Setarea numărului de teste

Implicit, traceroute trimite trei pachete UDP la fiecare hop. Putem folosi opțiunea -q (număr de interogări) pentru a ajusta acest lucru în sus sau în jos.

Pentru a accelera testul traceroute, introducem următoarele pentru a reduce numărul de pachete de sondă UDP pe care le trimitem la unul:

traceroute -q 1 blarneycastle.ie

The

Aceasta trimite o singură sondă la fiecare hop.

Setarea valorii TTL inițiale

Putem seta valoarea inițială a TTL la altceva decât unul și să omitem câteva hopuri. De obicei, valorile TTL sunt setate la unu pentru primul set de teste, două pentru următorul set de teste și așa mai departe. Dacă îl setăm la cinci, primul test va încerca să ajungă la săritura cinci și să sari peste salturile unu la patru.

Deoarece știm că site-ul web al Castelului Blarney este la 11 hop de pe acest computer, introducem următoarele pentru a merge direct la Hop 11:

traceroute -f 11 blarneycastle.ie

The

Asta ne oferă un raport frumos, condensat, despre starea conexiunii la destinație.

Fii atent

traceroute este un instrument excelent pentru a investiga rutarea rețelei, a verifica vitezele de conectare sau pentru a identifica blocajele. Windows are, de asemenea, o comandă tracert care funcționează în mod similar.

Cu toate acestea, nu doriți să bombardați dispozitivele necunoscute cu torrente de pachete UDP și să aveți grijă să nu includeți traceroute în scripturi sau în joburi nesupravegheate.

Încărcarea traceroute pe care o poate plasa într-o rețea ar putea avea un impact negativ asupra performanței acesteia. Cu excepția cazului în care vă aflați într-o situație de remediere, este posibil să doriți să îl utilizați în afara orelor normale de lucru.