Traceroute-kommandoen brukes i Linux for å kartlegge reisen som en pakke med informasjon utfører fra sin kilde til bestemmelsesstedet. En bruk for traceroute er å finne når data tap skjer gjennom et nettverk, som kan bety en nod som er nede.
Fordi hvert hopp i posten gjenspeiler en ny server eller en ruter mellom den opprinnelige PCen og det tilsiktede målet, kan du gjennomgå resultatene av en traceroute-skanning også gi deg mulighet til å identifisere sakte poeng som kan påvirke nettverkstrafikken din negativt.
Hvordan det fungerer
Evaluering av den spesifikke ruten som nettverkstrafikken følger (eller å finne feil gateway som kaster bort pakkene dine) presenterer flere feilsøkingsutfordringer. Traceroute bruker IP-protokollen tid til å leve feltet for å søke et ICMP TIME_EXCEEDED svar fra hver gateway langs banen til en mottaker vert.
Den eneste parameteren du må inkludere når du kjører traceroute-kommandoen, er vertsnavnet eller IP-adressen til destinasjonen.
Traceroute syntaks og brytere

traceroute -dFInrvx -f first_ttl -g inngangsport -Jeg jeg står overfor -m max_ttl -p havn -q nqueries -s src_addr -t tos -w ventetid -z pausemsecs vert packetlen
Mens ovenstående er hvordan kommandoen traceroute skal skrives ut for å kunne fungere i kommandolinjen, kan ytelsen eller utgangen av kommandoen endres ved å angi en eller flere valgfrie brytere.
- -f: Angi den første tiden til live som brukes i den første utgående sondepakken.
- -F: Sett "ikke fragmenter" -biten.
- -d: Aktiver socket nivå feilsøking.
- -g: Angi en løsløs gateway gateway (maks 8).
- -Jeg: Angi et nettverksgrensesnitt for å skaffe kilde-IP-adressen for utgående sondepakker. Dette er normalt bare nyttig på en multi-homed vert. (Se-s flagg for en annen måte å gjøre dette på.)
- -JEG: Bruk ICMP ECHO i stedet for UDP datagrammer.
- -m: Angi maksimal tid-til-live (maks antall humle) som brukes i utgående sondepakker. Standard er 30 humle (samme standard brukes til TCP-tilkoblinger).
- -n: Skriv ut hoppadresser numerisk snarere enn symbolsk og numerisk (lagrer en navneserver adresse-til-navn oppslag for hver gateway funnet på banen).
- -p: Angi basen UDP portnummer som brukes i prober (standard er 33434). Traceroute håper at ingenting hører på UDP-porter utgangspunkt til base + nhops - 1 på mottakerens vert (slik at en ICMP PORT_UNREACHABLE melding vil bli returnert for å avslutte rutepåvisningen). Hvis noe lytter på en port i standardområdet, kan dette alternativet brukes til å velge et ubrukt portområde.
- -r: Omgå de vanlige rutingstabellene og send direkte til en vert på et vedlagt nettverk. Hvis verten ikke er på et direkte koblet nettverk, returneres en feil. Dette alternativet kan brukes til å pinge en lokal vert gjennom et grensesnitt som ikke har rute gjennom det (for eksempel etter at grensesnittet ble falt av rutet (8C)).
- -s: Bruk følgende IP-adresse (som vanligvis oppgis som et IP-nummer, ikke et vertsnavn) som kildeadresse i utgående sondepakker. På multi-homed verter (de med mer enn en IP-adresse), kan dette alternativet brukes til å tvinge kildeadressen til å være noe annet enn IP-adressen til grensesnittet som probepakken sendes på. Hvis IP-adressen ikke er en av maskinens grensesnittadresser, returneres en feil, og ingenting sendes. (Se-Jeg flagg for en annen måte å gjøre dette på.)
- -t: Sett type-of-tjeneste i probepakker til følgende verdi (standard null). Verdien må være et desimal heltall i området 0 til 255. Dette alternativet kan brukes til å se om ulike typer tjenestene resulterer i forskjellige baner. (Hvis du ikke kjører 4.4bsd, kan dette være akademisk, siden de normale nettverkstjenestene som telnet og ftp ikke lar deg kontrollere TOS.) Ikke alle verdier av TOS er lovlige eller meningsfylte - se IP-spesifikasjonen for definisjoner. Nyttige verdier er sannsynligvis `-t 16 '(lav forsinkelse) og `-t 8 ' (høy gjennomstrømming).
- -V: Verbose output. Mottatte ICMP-pakker med unntak av TIME_EXCEEDED og UNREACHABLEs er oppført.
- w: Still inn tiden (i sekunder) for å vente på et svar på en sonde (standard 5 sekunder).
- -x: Bytt IP-sjekksummer. Normalt forhindrer dette traceroute fra å beregne IP-kontrollsummer. I enkelte tilfeller kan operativsystemet overskrive deler av utgående pakke, men ikke omberegne kontrollsummen; Derfor er det i noen tilfeller ikke standard å beregne kontrollsum og bruke-x får dem til å beregnes. Merk at sjekksummene vanligvis kreves for siste hop når du bruker ICMP ECHO-sonder (-JEG), så de beregnes alltid når du bruker ICMP.
- -z: Still inn tiden (i millisekunder) for å pause mellom sondene (standard 0). Noen systemer som Solaris og rutere fra Cisco, rate limit icmp meldinger. En god verdi å bruke med dette er 500 (f.eks. 1/2 sekund).
Tolke resultatene
Traceroute skisserer banen en IP-pakke følger til en Internett-vert ved å lansere UDP-probepakker med en liten TTL (tid til å leve) og lytter etter en ICMP-tid som er overskredet fra en gateway. Vi starter våre probes med en TTL på en og øker med en til vi får en ICMP-port som ikke kan nås (hvilket betyr at pakken ankom til bestemmelsesstedet) eller treffer en maksimal verdi på forsøk, som vanligvis er 30 humle og kan endres med de-m flagg.
Når traceroute kjøres, sender den tre sondene i hver TTL-innstilling og skriver deretter en linje til konsollen som viser TTL, gatewayadressen og rundetiden for hver sonde. Hvis probesvarene kommer fra forskjellige gateways, skrives adressen til hvert responderende system. Hvis det ikke er noe svar innen et fem sekunders timeoutintervall (endret med-w flagg), skrives en stjerne for den sonden.
For å forhindre at mottakeren blir overveldet av UDP-probepakkebehandling, er destinasjonsporten satt til en verdi som ikke vil bli brukt av den enheten. Hvis et nettverk eller en tjeneste på destinasjonen bruker den porten, endrer du verdien ved hjelp av-p flagg.
En prøvebruk og -utgang gir resultater som ligner på dette eksempelet:
yak 71% traceroute nis.nsf.net. traceroute til nis.nsf.net (35.1.1.48), 30 humle maks, 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
Merk at den andre og tredje linjen er de samme. Dette utfallet angår en kjøretøkkelkjerne på det andre hop-systemet-lbl-csam.arpa-som videresender pakker med null TTL (en feil i distribuert versjon av 4.3 BSD). Du må gjette hvilken vei pakkene tar på land siden NSFNet (129.140) leverer ikke adress-til-navn-oversettelser for sine NSSer.
Et mer 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
Vær oppmerksom på at gatewayene på 12, 14, 15, 16 og 17 hops bort heller ikke sende ICMP "time exceeded" meldinger eller sende dem med en TTL for liten til å nå oss. Linjene 14 til og med 17 kjører MIT C Gateway-koden som ikke sender meldinger som er "overskredet".
Den stille gateway 12 i eksemplet ovenfor kan være et resultat av en feil i 4. 23 BSD-nettverkskoden og dens derivater: Maskiner som kjører 4,3 kode og tidligere sender en uoppnåelig melding ved hjelp av hva som helst TTL forblir i det opprinnelige datagrammet. Siden, for gateways, gjenværende TTL er null, er ICMP "time exceeded" garantert å ikke gjøre det tilbake til oss. Oppførselen til denne feilen er litt mer 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 ms! 39 ms! 39 ms!
Legg merke til at det er 12 "gateways" (13 er sluttdestinasjonen), og den siste halvdelen mangler. Det som virkelig skjer, er at serveren heter hvil i fred (en Sun-3 løpende Sun OS 3.5) bruker TTL fra vårt ankomstdatagram som TTL i ICMP-svaret. Så vil svaret gå ut på returveien (uten varsel sendt til noen siden ICMP ikke sendes til ICMP-er) til vi sondrer med en TTL som er minst to ganger lengden på banen - med andre ord er rip egentlig bare syv hopp bort.
Et svar som returnerer med en TTL på 1, er et hint om at dette problemet eksisterer. Traceroute skriver ut en "!" etter tiden hvis TTL er mindre enn eller lik 1. Siden leverandørene sender mye foreldet (DECs Ultrix, Sun 3.x) eller ikke-standardisert (HPUX) programvare, forventer å se dette problemet ofte og passe på å plukke opp målverten for probene dine.
Andre mulige merknader etter klokken er! H, ! N, eller! P (verten, nettverket eller protokollen ikke tilgjengelig),! S (kilde rute mislyktes)! F- (fragmentering nødvendig - RFC1191-banen MTU Discovery-verdien vises),! X (kommunikasjon administrativt forbudt),! V (brudd på vertspreferanse)! C (forrangsavbrudd i kraft), eller! (ICMP unreachable kode). Disse kodene er definert av RFC1812, som erstatter RFC1716. Hvis nesten alle prober resulterer i en slags uoppnåelig vert, vil traceroute gi opp og gå ut.
Dette programmet er beregnet for bruk i nettverkstesting, måling og styring. Den skal brukes primært for manuell feilsøking. På grunn av belastningen det kan påføre nettverket, er det uklokt å bruke traceroute under normale operasjoner eller fra automatiserte skript.




