TRACEROUTE(8) | traceroute pentru Linux | TRACEROUTE(8) |
NUME
traceroute - afișează traseul pachetelor direcționate către gazda din rețea
SINOPSIS
traceroute [-46dFITUnreAV] [-f primul-ttl]
[-g poartă-acces,...]
[-i dispozitiv] [-m max-ttl] [-p port] [-s
adresa-sursă]
[-q număr-sondări] [-N sondări-simultane]
[-t tos]
[-l etichetă-flux] [-w timpul-de-așteptare] [-z
așteptare-trimitere-sondare] [-UL] [-D]
[-P protocol] [--sport=port] [-M metoda] [-O
opțiuni-mod]
[--mtu] [--back]
gazda [lungime-pachet]
traceroute6 [opțiuni]
DESCRIERE
traceroute urmărește traseul pachetelor luate dintr-o rețea IP în drumul lor către o anumită gazdă. Utilizează câmpul TTL („time to live”, timp de validitate) al protocolului IP și încearcă să obțină un răspuns ICMP TIME_EXCECEEDED de la fiecare poartă de acces de pe traseul către gazdă.
traceroute6 este echivalent cu traceroute -6.
Singurul parametru necesar este numele sau adresa IP a destinației gazdă . Parametrul opțional lungime-pachet este dimensiunea totală a pachetului de sondare (implicit 60 de octeți pentru IPv4 și 80 pentru IPv6). Dimensiunea specificată poate fi ignorată în anumite situații sau poate fi mărită până la o valoare minimă.
Acest program încearcă să urmărească traseul pe care un pachet IP l-ar urma până la o anumită gazdă de internet prin lansarea de pachete sondă cu un ttl („time to live”, timp de validitate) mic, apoi prin ascultarea unui răspuns ICMP „time exceeded” (timp depășit) de la o poartă de acces. Începem sondajele cu un ttl de unu și creștem cu câte unul până când primim un ICMP „port unreachable” (port inaccesibil) sau „TCP reset” (reinițializare TCP), ceea ce înseamnă că am ajuns la „gazdă”, sau am atins un maxim (care este implicit de 30 de salturi). Se trimit trei sondaje (în mod implicit) la fiecare valoare a ttl și se imprimă o linie care arată valoarea ttl, adresa porții de acces și timpul de călătorie dus-întors al fiecărui sondaj. La cerere, adresa poate fi urmată de informații suplimentare. În cazul în care răspunsurile sondajelor provin de la porți de acces diferite, se va imprima adresa fiecărui sistem care răspunde. În cazul în care nu există niciun răspuns într-un anumit interval de timp, se imprimă un „*” (asterisc) pentru sondajul respectiv.
După expirarea timpului de călătorie, pot fi imprimate unele adnotări suplimentare: !H, !N sau !P (gazdă, rețea sau protocol imposibil de atins), !S (ruta sursă a eșuat), !F (este necesară fragmentarea), !X (comunicarea este interzisă din punct de vedere administrativ), !V (încălcarea precedenței gazdei), !C (precedența este interzisă) sau !<număr> (<număr> cod ICMP inaccesibil). În cazul în care aproape toate sondajele au ca rezultat un fel de inaccesibilitate, «traceroute» va renunța și va ieși.
Nu dorim ca gazda de destinație să proceseze pachetele de sondaj UDP, așa că portul de destinație este stabilit la o valoare improbabilă (o puteți modifica cu ajutorul opțiunii -p). Nu există o astfel de problemă pentru urmărirea rutelor ICMP sau TCP (pentru TCP folosim tehnica half-open, care împiedică ca sondările noastre să fie văzute de aplicațiile de pe gazda de destinație).
În mediul de rețea modern, metodele tradiționale de urmărire a rutelor nu pot fi întotdeauna aplicabile, din cauza utilizării pe scară largă a paravanelor de protecție. Aceste paravane de protecție filtrează porturile UDP „improbabile” sau chiar ecourile ICMP. Pentru a rezolva această problemă, sunt implementate câteva metode suplimentare de urmărire a rutelor (inclusiv tcp), a se vedea LISTA METODELOR DISPONIBILE de mai jos. Astfel de metode încearcă să utilizeze un anumit protocol și un anumit port sursă/destinație, pentru a ocoli paravanele de protecție (pentru a fi văzute de către paravanele de protecție doar ca un început de tip permis al unei sesiuni de rețea).
OPȚIUNI
- --help
- Afișează informațiile de ajutor și iese.
- -4, -6
- Forțează în mod explicit urmărirea traficului IPv4 sau IPv6. În mod implicit, programul va încerca să rezolve numele dat și va alege automat protocolul corespunzător. Dacă rezolvarea unui nume de gazdă returnează atât adrese IPv4, cât și IPv6, traceroute va utiliza IPv4.
- -I, --icmp
- Utilizează ICMP ECHO pentru sondare
- -T, --tcp
- Utilizează TCP SYN pentru sondare
- -d, --debug
- Activează depanarea la nivel de soclu (atunci când nucleul Linux acceptă acest lucru)
- -F, --dont-fragment
- Nu fragmentează pachetele de sondare; (pentru IPv4,
activează, de asemenea, bitul DF, care indică router-ilor
intermediari să nu fragmenteze la distanță).
Variind dimensiunea pachetului de sondare cu ajutorul parametrului de linie de comandă lungime-pachet, puteți obține manual informații despre MTU al fiecărui salt de rețea. Opțiunea --mtu (a se vedea mai jos) încearcă să facă acest lucru în mod automat.
Rețineți că funcțiile non-fragmentate (cum ar fi -F sau --mtu) funcționează corect doar începând cu nucleul Linux 2.6.22. Înainte de această versiune, IPv6 era întotdeauna fragmentat, iar IPv4 putea utiliza doar mtu-ul final descoperit o dată (din memoria cache a rutelor), care poate fi mai mic decât mtu-ul real al unui dispozitiv.
- -f primul-ttl, --first=primul-ttl
- Specifică cu ce TTL trebuie să se înceapă. Valoarea implicită este 1.
- -g poartă-acces, --gateway=poartă-acces
- Îi indică lui «traceroute» să adauge o opțiune de direcționare la sursa IP la pachetul de ieșire, care indică rețelei să direcționeze pachetul prin poarta-de-acces specificată (majoritatea routerelor au direcționarea la sursă dezactivată din motive de securitate). În general, sunt permise mai multe porți-de-acces (separate prin virgule). Pentru IPv6, este permisă forma număr,adresă,adresă..., unde număr este un tip de antet de rută (implicit este tipul 2). Rețineți că antetul de rută de tip 0 este acum depășit (rfc5095).
- -i interfața, --interface=interfața
- Specifică interfața prin care traceroute trebuie să trimită pachete. În mod implicit, interfața este selectată în funcție de tabelul de direcționare.
- -m max-ttl, --max-hops=max-ttl
- Specifică numărul maxim de salturi (valoarea maximă a „time to live”, timpului de validitate) ce traceroute va sonda. Valoarea implicită este 30.
- -N sondări-simultane, --sim-queries=sondări-simultane
- Specifică numărul de pachete de sondare trimise simultan.
Trimiterea simultană a mai multor sondaje poate accelera
considerabil traceroute. Valoarea implicită este 16.
Rețineți că unele routere și gazde pot utiliza limitarea ratei ICMP. Într-o astfel de situație, specificarea unui număr prea mare poate duce la pierderea unor răspunsuri. - -n
- Nu încearcă să asocieze adresele IP cu numele de gazdă atunci când le afișează.
- -p port, --port=port
- Pentru urmărirea UDP, specifică portul de destinație
de bază pe care îl va utiliza traceroute
(numărul portului de destinație va fi incrementat la fiecare
sondare).
Pentru urmărirea ICMP, specifică valoarea inițială a secvenței ICMP (incrementată de fiecare sondare în parte).
Pentru TCP și altele, se specifică doar portul de destinație (constant) pentru conectare. - -t tos, --tos=tos
- Pentru IPv4, stabilește tipul de serviciu („Type of
Service”: TOS) și valoarea precedenței. Valorile
utile sunt 16 (întârziere redusă) și 8
(randament ridicat). Rețineți că, pentru a utiliza
unele valori de precedență TOS, trebuie să
fiți superutilizator.
Pentru IPv6, stabilește valoarea de control al traficului. - -l etichetă-flux, --flowlabel=etichetă-flux
- Utilizează eticheta-de-flux specificată pentru pachetele IPv6.
- -w max[,aici,aproape], --wait=max[,aici,aproape]
- Determină cât timp trebuie să se aștepte un
răspuns la o sondare.
Există trei (în general) valori în virgulă mobilă, separate de o virgulă (sau de o bară oblică). max specifică timpul maxim (în secunde, implicit 5,0) de așteptare, în orice caz.
Implementarea traceroute tradițională a așteptat întotdeauna max secunde întregi pentru orice sondare. Dar dacă avem deja câteva răspunsuri de la același salt, sau chiar de la un următor salt, putem folosi timpul de călătorie dus-întors al unui astfel de răspuns ca un indiciu pentru a determina timpul real rezonabil de așteptare.
Parametrul opțional aici (valoare implicită 3.0) specifică un factor de multiplicare a timpului de călătorie dus-întors al unui răspuns deja primit de la același salt. Valoarea rezultată este utilizată ca timp de așteptare pentru sondare, în loc de (dar nu mai mult de) max. Parametrul opțional aproape (implicit 10,0) specifică un factor similar pentru un răspuns de la un anumit salt următor; (în ambele cazuri se utilizează timpul primului rezultat găsit).
În primul rând, căutăm saltul același (al sondării care va fi afișată prima de acum înainte). Dacă nu se găsește nimic, atunci se caută un salt următor. Dacă nu se găsește nimic, se folosește max.Dacă aici și/sau aproape au valori zero, calculul corespunzător este sărit.
aici și aproape sunt întotdeauna fixate la zero dacă se specifică doar max (pentru compatibilitate cu versiunile anterioare). - -q număr-sondări, --queries=număr-sondări
- Stabilește numărul de pachete de sondare pe salt. Valoarea implicită este 3.
- -r
- Ocolește tabelele normale de direcționare și trimite direct către o gazdă dintr-o rețea atașată. Dacă gazda nu se află într-o rețea direct atașată, se returnează o eroare. Această opțiune poate fi utilizată pentru a trimite un ping unei gazde locale printr-o interfață care nu are nicio rută prin ea.
- -s adresa-sursă, --source=adresa-sursă
- Alege o adresă sursă alternativă. Rețineți că trebuie să selectați adresa uneia dintre interfețe. În mod implicit, se utilizează adresa interfeței de ieșire.
- -z așteptare-trimitere-sondare, --sendwait=așteptare-trimitere-sondare
- Interval de timp minim între sondaje (implicit 0). Dacă valoarea este mai mare de 10, atunci se specifică un număr în milisecunde, în caz contrar este un număr de secunde (sunt permise și valori cu virgulă flotantă). Utilă atunci când unele routere folosesc limitarea vitezei pentru mesajele ICMP.
- -e, --extensions
- Afișează extensiile ICMP (rfc4884). Forma generală este CLASS/TYPE: urmată de o valoare hexazecimală. Valoarea MPLS (rfc4950) este afișată analizată, sub următoarea formă: MPLS:L=label,E=exp_use,S=stack_bottom,T=TTL ( mai multe obiecte separate prin / ). Informațiile privind interfața (rfc5837) sunt prezentate analizate și ele, sub următoarea formă: {INC|SUB|OUT|NXT}:index,adresa-IP,"nume",mtu=MTU (toate cele patru câmpuri pot lipsi).
- -A, --as-path-lookups
- Efectuează căutări de trasee AS în registrele de direcționare și imprimă rezultatele direct după adresele corespunzătoare.
- -V, --version
- Afișează versiunea și iese.
Există opțiuni suplimentare destinate utilizării avansate (cum ar fi metode alternative de urmărire etc.):
- --sport=port
- Alege portul sursă care urmează să fie utilizat. Implică -N 1 -w 5 . În mod normal, porturile sursă (dacă este cazul) sunt alese de sistem.
- --fwmark=marcaj
- Stabilește marcajul paravanului de protecție pentru pachetele de ieșire (începând cu nucleul Linux 2.6.25).
- -M metoda, --module=nume
- Utilizează metoda specificată pentru operațiile
traceroute. Metoda tradițională implicită udp are
numele default, icmp (-I) și tcp (-T) au
numele icmp și, respectiv, tcp.
Opțiunile specifice metodei pot fi transmise prin -O . Majoritatea metodelor au scurtături simple (-I înseamnă -M icmp, etc.). - -O opțiune, --options=opțiuni
- Specifică o opțiune specifică unei metode. Mai multe opțiuni se separă prin virgule (sau se utilizează mai multe -O în linia de comandă). Fiecare metodă poate avea propriile opțiuni specifice, sau multe nu le au deloc. Pentru a imprima informații despre opțiunile disponibile, utilizați -O help.
- -U, --udp
- Utilizează UDP la un anumit port de destinație pentru urmărirea traseului (în loc să mărească portul pentru fiecare sondare). Portul implicit este 53 (dns).
- -UL
- Utilizează UDPLITE pentru urmărirea traseului (portul implicit este 53).
- -D, --dccp
- Utilizează cereri DCCP pentru sondare.
- -P protocol, --protocol=protocol
- Utilizează pachetul brut al protocolului specificat pentru urmărirea traseului. Protocolul implicit este 253 (rfc3692).
- --mtu
- Descoperă MTU de-a lungul traseului care este urmărit.
Implică -F -N 1. Noul mtu este
afișat o singură dată sub forma
F=NUMĂR la prima sondare a unui salt care
necesită un astfel de mtu pentru a fi atins; (de fapt,
mesajul icmp „frag needed” (fragment necesar)
corespunzător este trimis în mod normal de către
saltul anterior).
Rețineți că unele routere pot stoca în memoria cache o singură dată informațiile văzute despre o fragmentare. Astfel, puteți primi mtu final de la un salt mai apropiat. Încercați să specificați un tos neobișnuit prin -t , acest lucru poate ajuta pentru o singură încercare (apoi aceasta poate fi pusă în cache de asemenea acolo).
Pentru mai multe informații, consultați opțiunea -F. - --back
- Afișează numărul de salturi înapoi atunci când pare diferit față de direcția înainte. Acest număr este calculat în ipoteza că salturile la distanță trimit pachete de răspuns cu ttl inițial fixat la 64, 128 sau 255 (ceea ce pare a fi o practică obișnuită). Este afișat ca o valoare negativă sub forma „-NUMĂR”.
LISTA DE METODE DISPONIBILE
În general, este posibil ca o anumită metodă de «traceroute» să trebuiască să fie aleasă de -M numele-metodei, dar majoritatea metodelor au opțiuni simple în linia de comandă (le puteți vedea după numele metodei, dacă sunt prezente).
default
Metoda tradițională, veche, de urmărire a traseelor. Utilizată în mod implicit.
Pachetele de sondare sunt datagrame udp cu așa-numitele porturi de destinație „improbabile”. Portul „improbabil” al primei sondări este 33434, apoi, pentru fiecare sondare următoare, este mărit cu unu. Deoarece se așteaptă ca porturile să fie nefolosite, gazda de destinație returnează în mod normal „icmp unreach port” (port icmp inaccesibil) ca răspuns final; (totuși, nimeni nu știe ce se întâmplă atunci când o aplicație ascultă pentru astfel de porturi).
Această metodă este permisă pentru utilizatorii neprivilegiați.
icmp -I
Metoda cea mai uzuală deocamdată, care
utilizează pachete icmp echo pentru sondări.
Dacă puteți trimite un ping(8) la gazda de destinație, se
poate aplica și urmărirea traseului prin icmp.
Această metodă poate fi permisă pentru
utilizatorii neprivilegiați începând cu nucleul 3.0
(IPv4, pentru IPv6 începând cu 3.11), care suportă
noile socluri dgram icmp (sau „ping”). Pentru a
permite astfel de socluri, administratorul de sistem ar trebui să
furnizeze intervalul sysctl net/ipv4/ping_group_range pentru a se
potrivi cu orice grup al utilizatorului.
Opțiuni:
tcp -T
Metodă modernă bine cunoscută,
destinată să ocolească paravanele de protecție.
Utilizează portul de destinație constant (portul implicit este
80, http).
În cazul în care există filtre pe traseul de rețea, atunci cel mai probabil orice port udp „improbabil” (ca în cazul metodei default) sau chiar ecourile icmp (ca în cazul metodei icmp) sunt filtrate, iar întreaga urmărire a traseului se va opri la un astfel de paravan de protecție. Pentru a ocoli un filtru de rețea, trebuie să se folosească doar combinațiile protocol/port permise. Dacă urmărim un server de poștă electronică, să zicem, atunci cel mai probabil -T -p 25 poate ajunge la el, chiar dacă -I nu poate.
Această metodă utilizează binecunoscuta „tehnică «half-open»”, care împiedică aplicațiile de pe gazda de destinație să vadă sondările noastre. În mod normal, se trimite o sincronizare tcp „tcp syn”. Pentru porturile care nu sunt ascultate, primim „tcp reset” și totul este făcut. Pentru porturile cu ascultare activă primim „tcp syn+ack”, dar răspundem prin „tcp reset” (în loc de răspunsul „tcp ack” așteptat), în acest fel sesiunea tcp la distanță este abandonată chiar și fără ca aplicația să sesizeze vreodată.
Există câteva opțiuni pentru metoda tcp:
- syn,ack,fin,rst,psh,urg,ece,cwr
- Stabilește fanioanele tcp specificate pentru pachetul de sondare, în orice combinație.
- flags=număr
- Stabilește numărul de fanioane al câmpului din antetul tcp exact la număr.
- ecn
- Trimite un pachet syn cu fanioanele tcp ECE și CWR (pentru Notificare explicită de congestie, rfc3168).
- sack,timestamps,window_scaling
- Utilizează opțiunea de antet tcp corespunzătoare în pachetul de sondare transmis.
- sysctl
- Utilizează valorile actuale ale sysctl (/proc/sys/net/*) pentru opțiunile antetului tcp de mai sus și ecn. Definită întotdeauna în mod implicit, dacă nu se specifică nimic altceva.
- fastopen
- Utilizează opțiunea fastopen tcp (când syn), numai pentru negocierea inițială a cookie-urilor.
- mss=[număr]
- Utilizează valoarea lui număr (sau nu este modificată) pentru opțiunea de antet maxseg tcp (când syn) și descoperă fixarea acesteia de-a lungul traseului urmărit. Noul mss modificat este afișat o singură dată sub forma M=NUMĂR la prima sondare pe care a fost detectat. Rețineți că unele routere pot returna un fragment original prea scurt în mesajul de depășire a timpului, ceea ce face imposibilă verificarea. În afară de aceasta, răspunsurile pot veni într-o ordine diferită. Toate acestea pot duce la o plasare mai târzie a raportului (utilizarea -N 1 poate ajuta pentru ordine).
- info
- Afișează fanioanele tcp și opțiunile acceptate ale răspunsurilor tcp finale atunci când este atinsă gazda țintă. Permite să se determine dacă o aplicație ascultă portul și alte lucruri utile. Opțiunile tcp acceptate sunt toate cele care pot fi definite de -T -O, adică mss, sack, timestamps, window_scaling și fastopen, cu un format de ieșire similar (o valoare pentru mss și doar prezența pentru celelalte).
Opțiunile implicite sunt syn,sysctl.
tcpconn
O implementare inițială a metodei tcp, simplă, folosind apelul connect(2), care face deschiderea completă a sesiunii tcp. Nu este recomandată pentru o utilizare normală, deoarece o aplicație de destinație este întotdeauna afectată (și poate fi confuză).
udp -U
Utilizează datagrama udp cu port de destinație
constant (implicit 53, dns).
Destinată să ocolească de asemenea paravanul de
protecție.
Rețineți că, spre deosebire de metoda tcp, aplicația corespondentă de pe gazda de destinație întotdeauna primește sondările noastre (cu date aleatorii) și poate fi ușor derutată de acestea. În cele mai multe cazuri, aceasta nu va răspunde totuși la pachetele noastre, astfel încât nu vom vedea niciodată saltul final din traseu; (din fericire, se pare că cel puțin serverele dns răspund cu ceva enervant).
Această metodă este permisă pentru utilizatorii neprivilegiați.
udplite -UL
Utilizează datagrama udplite pentru sondare (cu port de destinație constant, implicit 53).
Această metodă este permisă pentru
utilizatorii neprivilegiați.
Opțiuni:
- coverage=număr
- Stabilește acoperirea trimiterii udplite la număr.
dccp -D
Utilizează pachetele de cerere DCCP pentru sondare (rfc4340).
Această metodă utilizează aceeași „tehnică de deschidere pe jumătate, «half-open»” ca și cea utilizată pentru TCP. Portul de destinație implicit este 33434.
Opțiuni:
- service=număr
- Stabilește codul serviciului DCCP la număr (valoarea implicită este 1885957735).
raw -P protocol
Trimite un pachet brut al protocolului protocol.
Nu se utilizează niciun antet specific protocolului, ci doar antetul
IP.
Implică -N 1 -w 5 .
Opțiuni:
- protocol=protocol
- Utilizează protocolul IP protocol (implicit 253).
NOTE
Pentru a accelera funcționarea, în mod normal, se trimit mai multe sondări simultan. Pe de altă parte, se creează o „furtună de pachete”, în special în direcția de răspuns. Routerele pot limita rata răspunsurilor icmp, iar unele dintre răspunsuri pot fi pierdute. Pentru a evita acest lucru, micșorați numărul de sondări simultane, sau chiar setați-l la 1 (ca în implementarea inițială a «traceroute»), adică -N 1.
Gazda finală (țintă) poate renunța la unele dintre sondările simultane și poate chiar să răspundă doar la cele mai recente. Acest lucru poate duce la salturi suplimentare „pare că a expirat” în apropierea saltului final. Noi folosim un algoritm inteligent pentru a detecta automat o astfel de situație, dar dacă nu vă poate fi de ajutor în cazul dumneavoastră, utilizați și -N 1.
Pentru o stabilitate și mai mare, puteți încetini activitatea programului cu ajutorul opțiunii -z, de exemplu, utilizați -z 0,5 pentru o pauză de o jumătate de secundă între sondări.
Pentru a evita o așteptare suplimentară, folosim un algoritm adaptiv pentru timpii de așteptare (a se vedea opțiunea -w pentru mai multe informații). Aceasta poate duce la expirarea prematură (în special atunci când timpii de răspuns diferă în anumite momente) și la imprimarea lui „*” în loc de un timp. Într-un astfel de caz, dezactivați acest algoritm, specificând -w doar cu timpul de așteptare dorit (de exemplu, -w 5).
În cazul în care unele salturi nu raportează nimic pentru fiecare metodă, ultima șansă de a obține ceva este utilizarea comenzii ping -R (IPv4, și numai pentru cele mai apropiate 8 salturi).
CONSULTAȚI ȘI
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
11 octombrie 2006 | traceroute |