Skip to main content

Sådan bruges kommandoen 'traceroute' i Linux

Linux traceroute command summary with examples (Juni 2026)

Linux traceroute command summary with examples (Juni 2026)
Anonim

Traceroute-kommandoen bruges i Linux til at kortlægge den rejse, som en pakke af oplysninger udfører fra sin kilde til dens destination. En brug for traceroute er at lokalisere, når tab af data opstår i et netværk, hvilket kunne betyde en knude, der er nede.

Fordi hvert hop i posten afspejler en ny server eller router mellem den oprindelige pc og det tilsigtede mål, kan du også se resultaterne af en tracerout-scan ved at identificere langsomme punkter, der kan påvirke din netværkstrafik negativt.

Hvordan det virker

Evaluering af den specifikke rute, som netværkstrafikken følger (eller finder den miscreant gateway, der kasserer dine pakker) præsenterer flere fejlfindingsudfordringer. Traceroute bruger IP-protokollen tid til at leve felt for at anmode om et ICMP TIME_EXCEEDED svar fra hver gateway langs stien til en destinations vært.

Den eneste parameter, du skal medtage, når du udfører traceroute-kommandoen, er værtsnavnet eller IP-adressen til destinationen.

Traceroute Syntax og Switches

traceroute -dFInrvx -f first_ttl -g gateway -jeg iface -m max_ttl -p Havn -q nqueries -s src_addr -t tos -w waittime -z pausemsecs vært packetlen

Selv om ovenstående er, hvordan traceroute-kommandoen skal udskrives for at kunne fungere i kommandolinjen, kan kommandoen eller udgangen af ​​kommandoen ændres ved at angive en eller flere valgfrie kontakter.

  • -f: Indstil den første tid-til-live, der anvendes i den første udgående probepakke.
  • -F: Indstil "ikke fragment" bit.
  • -d: Aktivér socket niveau fejlfinding.
  • -g: Angiv en løs kilde rute gateway (maks. 8).
  • -jeg: Angiv en netværksgrænseflade for at få kilde-IP-adressen til udgående sondepakker. Dette er normalt kun nyttigt på en multi-homed vært. (Se-s flag for en anden måde at gøre dette på.)
  • -JEG: Brug ICMP ECHO i stedet for UDP datagrammer.
  • -m: Indstil maksimal tid til live (maks antal humle), der anvendes i udgående sondepakker. Standard er 30 humle (samme standard bruges til TCP-forbindelser).
  • -n: Print hop adresser numerisk snarere end symbolisk og numerisk (gemmer en navneserver adresse-til-navn opslag for hver gateway fundet på stien).
  • -p: Indstil basis UDP portnummer anvendt i prober (standard er 33434). Traceroute håber, at intet lytter på UDP-porte basen til base + nhops - 1 på destinationsværten (så en ICMP PORT_UNREACHABLE besked vil blive returneret for at afslutte ruteopsporingen). Hvis noget lytter på en port i standardintervallet, kan denne indstilling bruges til at vælge et ubrugt portinterval.
  • -r: Omgå de normale rutingstabeller og send direkte til en vært på et vedhæftet netværk. Hvis værten ikke er på et direkte tilsluttet netværk, returneres en fejl. Denne mulighed kan bruges til at pinge en lokal vært gennem en grænseflade, der ikke har nogen rute gennem den (fx efter at grænsefladen var faldet af dirigeres (8C)).
  • -s: Brug følgende IP-adresse (som normalt er angivet som et IP-nummer, ikke et værtsnavn) som kildeadresse i udgående sondepakker. På multihemmede værter (dem med mere end en IP-adresse) kan denne mulighed bruges til at tvinge kildeadressen til at være noget andet end IP-adressen på den grænseflade, sondepakken sendes til. Hvis IP-adressen ikke er en af ​​denne maskins grænsefladeadresser, returneres en fejl, og der sendes intet. (Se-jeg flag for en anden måde at gøre dette på.)
  • -t: Indstil skriv-of-tjeneste i sondepakker til følgende værdi (standard nul). Værdien skal være et decimaltalletal i intervallet 0 til 255. Denne indstilling kan bruges til at se, om forskellige servicetyper resulterer i forskellige stier. (Hvis du ikke kører 4.4bsd, kan det være akademisk, da de normale netværkstjenester som telnet og ftp ikke giver dig mulighed for at kontrollere TOS.) Ikke alle værdier af TOS er lovlige eller meningsfuldt - se IP spec for definitioner. Nyttige værdier er sandsynligvis `-t 16 '(lav forsinkelse) og `-t 8 ' (Høj gennemstrømning).
  • -v: Verbose output. Modtagne ICMP-pakker udover TIME_EXCEEDED og UNREACHABLEs er angivet.
  • -w: Indstil tiden (i sekunder) for at vente på et svar på en sonde (standard 5 sek.).
  • -x: Skift IP-checksums. Normalt forhindrer dette traceroute i at beregne IP-checksums. I nogle tilfælde kan operativsystemet overskrive dele af den udgående pakke, men ikke omberegne checksummen; således er det i nogle tilfælde ikke meningen, at beregne checksum og bruge-x får dem til at blive beregnet. Bemærk, at checksummerne normalt kræves til det sidste hop, når der anvendes ICMP ECHO-sonder (-JEG), så de beregnes altid, når de bruger ICMP.
  • -z: Indstil tiden (i millisekunder) for at holde pause mellem prober (standard 0). Nogle systemer, som f.eks. Solaris og routere fra Cisco, bedømgrænse icmp-meddelelser. En god værdi at bruge med dette er 500 (fx 1/2 sekund).

Fortolkning af resultaterne

Traceroute skitserer stien en IP-pakke følger til en internethost ved at lancere UDP sondepakker med en lille TTL (tid til live) og derefter lytte til en ICMP "time overskrides" svar fra en gateway. Vi starter vores prober med en TTL på en og øges med en, indtil vi får en ICMP "port unreachable" (hvilket betyder at pakken ankom til bestemmelsesstedet) eller ramt en maksimal værdi af forsøg, som normalt overstiger 30 humle og kan ændres med det-m flag.

Når traceroute udføres, sender den tre sonder ved hver TTL-indstilling og udskriver derefter en linje til konsollen, der viser TTL, gatewayens adresse og rundstartstid for hver probe. Hvis sondens svar kommer fra forskellige gateways, udskriver adressen på hvert responderende system. Hvis der ikke er noget svar inden for et fem-sekunders timeoutinterval (ændret med-w flag), udskrives en stjerne for den sonde.

For at forhindre destinationsværten i at blive overvældet af UDP sondepakkebehandling, er destinationsporten indstillet til en værdi, der usandsynligt vil blive brugt af den pågældende enhed. Hvis et netværk eller en tjeneste på destinationen bruger den pågældende port, skal du ændre værdien ved hjælp af-p flag.

En prøvebrug og output giver resultater som svarer til dette eksempel:

yak 71% traceroute nis.nsf.net. traceroute til nis.nsf.net (35.1.1.48), 30 humle maksimum, 38 byte pakke 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 -nerif22.Berkeley.EDU (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

Bemærk at den anden og tredje linje er ens. Dette resultat vedrører en buggy kernel på det andet hop system-lbl-csam.arpa-der videresender pakker med en nul TTL (en fejl i den distribuerede version af 4.3 BSD). Du skal gætte, hvilken vej pakkerne tager på land, da NSFNet (129.140) ikke leverer adress-til-navn-oversættelser til sine NSS'er.

Et mere interessant eksempel er:

yak 72% traceroute allspice.lcs.mit.edu. traceroute til allspice.lcs.mit.edu (18.26.0.115), 30 humle 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

Bemærk, at gateways på 12, 14, 15, 16 og 17 humle væk enten ikke sende ICMP "tid overskredet" meddelelser eller sende dem med en TTL for lille til at nå os. Linjer 14 til og med 17 kører MIT C Gateway-koden, der ikke sender meddelelser med "tid overskredet".

Den tavse gateway 12 i ovenstående eksempel kan være resultatet af en fejl i 4. 23 BSD netværkskoden og dens derivater: Maskiner, der kører 4,3 kode og tidligere sender en uigenkaldelig besked vha. Uanset TTL forbliver i det oprindelige datagram. Da, for gateways, den resterende TTL er nul, er ICMP'en "overskredet" garanteret, at den ikke bliver tilbage til os. Opførelsen af ​​denne fejl er lidt mere interessant, når den vises på destinationssystemet:

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) 59 Frk ! 39 ms! 39 ms!

Bemærk, at der er 12 "gateways" (13 er den endelige destination), og den sidste halvdel mangler. Hvad der virkelig sker er, at serveren hedder hvil i fred (et Sun-3-løbende Sun OS 3.5) bruger TTL fra vores ankomne datagram som TTL i dets ICMP svar. Så vil svaret gå ud på returvejen (uden varsel sendt til nogen siden ICMP'er ikke sendes til ICMP'er), indtil vi sondrer med en TTL, der er mindst to gange længden af ​​banen - med andre ord er rip virkelig kun syv humle væk.

Et svar, der returnerer med en TTL på 1, er et tegn på, at dette problem eksisterer. Traceroute udskriver en "!" efter den tid, hvis TTL er mindre end eller lig med 1. Da leverandørerne sender meget forældet (DEC's Ultrix, Sun 3.x) eller ikke-standard (HPUX) software, forventer du at se dette problem ofte og pas på at plukke den målværten af ​​dine prober.

Andre mulige bemærkninger efter klokkeslættet er! H, ! N, eller! P (vært, netværk eller protokol ikke tilgængelig)! S (kilde rute fejlagtig)! F- (fragmentering er nødvendig - RFC1191 Path MTU Discovery-værdien vises),!X (kommunikation forbudt administrativt)! V (overtrædelse af værtspraksis)! C (forrangsafbrydelse i kraft), eller! (ICMP uopnåelig kode). Disse koder er defineret af RFC1812, som erstatter RFC1716. Hvis næsten alle proberne resulterer i en form for uopnåelig vært, vil traceroute opgive og afslutte.

Dette program er beregnet til brug i netværkstestning, måling og styring. Den skal primært anvendes til manuel fejlisolering. På grund af den belastning, det kunne pålægge på netværket, er det uklogt at bruge traceroute under normale operationer eller fra automatiserede scripts.