Sådan bruges traceroute Command på Linux

Du kan bruge Linux- traceroutekommandoen til at få øje på den langsomme del af en netværkspakkes rejse og fejlfinde trage netværksforbindelser. Vi viser dig hvordan!

Sådan fungerer traceroute

Når du sætter pris på, hvordan det traceroutefungerer, gør det forståelsen af ​​resultaterne meget lettere. Jo mere kompliceret ruten en netværkspakke skal tage for at nå sin destination, jo sværere er det at finde ud af, hvor der opstår afmatninger.

En lille organisations lokale netværk (LAN) kan være relativt simpelt. Det vil sandsynligvis have mindst en server og en router eller to. Kompleksiteten øges på et WAN (wide area network), der kommunikerer mellem forskellige placeringer eller via internettet. Din netværkspakke møder derefter (og videresendes og dirigeres af) en masse hardware, som routere og gateways.

Overskrifterne på metadata på datapakker beskriver længden, hvor den kom fra, hvor den skal hen, den protokol, den bruger osv. Specifikationen af ​​protokollen definerer overskriften. Hvis du kan identificere protokollen, kan du bestemme starten og slutningen af ​​hvert felt i overskriften og læse metadataene.

traceroutebruger TCP / IP-pakken med protokoller og sender User Datagram Protocol-pakker. Overskriften indeholder feltet Time to Live (TTL), som indeholder en otte-bit heltal. På trods af hvad navnet antyder, repræsenterer det en optælling, ikke en varighed.

En pakke rejser fra sin oprindelse til sin destination via en router. Hver gang pakken ankommer til en router, reduceres den TTL-tælleren. Hvis TTL-værdien nogensinde når en, reducerer routeren, der modtager pakken, værdien og bemærker, at den nu er nul. Pakken kasseres derefter og videresendes ikke til næste hop på rejsen, fordi den er "timeout".

Routeren sender en Internet Message Control Protocol (ICMP) Time Exceeded-meddelelse tilbage til oprindelsen af ​​pakken for at fortælle den, at pakken fik timeout. Meddelelsen Time Exceeded indeholder den originale overskrift og de første 64 bits af den originale pakkes data. Dette er defineret på side seks i Anmodning om kommentarer 792.

Så hvis traceroutesender en pakke ud, men derefter indstiller TTL-værdien til en, kommer pakken kun så langt som til den første router, før den kasseres. Den modtager en ICMP-overskredet meddelelse fra routeren, og den kan registrere den tid, det tog for rundtur.

Derefter gentages øvelsen med TTL indstillet til 2, som mislykkes efter to humle. tracerouteøger TTL til tre og prøver igen. Denne proces gentages, indtil destinationen er nået, eller det maksimale antal humle (som standard 30 er testet).

Nogle routere spiller ikke pænt

Nogle routere har fejl. De forsøger at videresende pakker med en TTL på nul i stedet for at kassere dem og hæve en ICMP-tidsoverskridelse.

Ifølge Cisco begrænser nogle internetudbydere (ISP'er) antallet af ICMP-meddelelser, som deres routere videresender.

Nogle enheder er konfigureret til aldrig at sende ICMP-pakker. Dette er ofte for at sikre, at enheden ikke uforvarende kan tvinges til at deltage i en distribueret denial of service, som et smurfeangreb.

traceroutehar en standard timeout for svar på fem sekunder. Hvis den ikke modtager svar inden for disse fem sekunder, opgives forsøget. Dette betyder, at svar fra meget langsomme routere ignoreres.

Installation af traceroute

traceroutevar allerede installeret på Fedora 31, men skal installeres på Manjaro 18.1 og Ubuntu 18.04. For at installere traceroutepå Manjaro skal du bruge følgende kommando:

sudo pacman -Sy traceroute

For at installere traceroutepå Ubuntu skal du bruge følgende kommando:

sudo apt-get install traceroute

Brug af traceroute

Som vi dækkede ovenfor, er traceroute'sformålet at fremkalde et svar fra routeren ved hvert hop fra din computer til destinationen. Nogle er muligvis stramme læber og giver intet væk, mens andre sandsynligvis spilder bønnerne uden betænkeligheder.

Som et eksempel kører vi traceroutetil Blarney Castle-webstedet i Irland, hjemsted for den berømte Blarney Stone. Legenden siger, at hvis du kysser Blarney Stone, vil du blive velsignet med "gabens gave". Lad os håbe, at de routere, vi støder på undervejs, er passende narrige.

Vi skriver følgende kommando:

traceroute www.blarneycastle.ie

Den første linje giver os følgende info:

  • Destinationen og dens IP-adresse.
  • Antallet af humle traceroute vil prøve, før de giver op.
  • Størrelsen på de UDP-pakker, vi sender.

Alle de andre linjer indeholder oplysninger om en af ​​humlen. Før vi dog går i detaljerne, kan vi dog se, at der er 11 humle mellem vores computer og webstedet Blarney Castle. Hop 11 fortæller os også, at vi nåede vores destination.

Formatet for hver hoplinie er som følger:

  • Navnet på enheden eller, hvis enheden ikke identificerer sig selv, IP-adressen.
  • IP-adressen.
  • Den tid, det tog rundtur for hver af de tre tests. Hvis en stjerne er her, betyder det, at der ikke var noget svar på den test. Hvis enheden slet ikke reagerer, kan du se tre stjerner og intet enhedsnavn eller IP-adresse.

Lad os gennemgå, hvad vi har nedenfor:

  • Hop 1: Den første anløbshavn (ingen ordspil beregnet) er DrayTek Vigor Router på det lokale netværk. Dette er, hvordan vores UDP-pakker forlader det lokale netværk og kommer på Internettet.
  • Hop 2: Denne enhed reagerede ikke. Måske blev det konfigureret til aldrig at sende ICMP-pakker. Eller måske reagerede den, men var for langsom, så  traceroutetidsindstillet.
  • Hop 3: En enhed reagerede, men vi fik ikke navnet, kun IP-adressen. Bemærk, at der er en stjerne i denne linje, hvilket betyder, at vi ikke fik svar på alle tre anmodninger. Dette kan indikere pakketab.
  • Humle 4 og 5: Flere anonyme humle.
  • Hop 6: Der er meget tekst her, fordi en anden fjernenhed håndterede hver af vores tre UDP-anmodninger. De (ret lange) navne og IP-adresser for hver enhed blev udskrevet. Dette kan ske, når du støder på et “rigt befolket” netværk, hvor der er meget hardware til at håndtere store mængder trafik. Dette hop er inden for en af ​​de største internetudbydere i Storbritannien. Så det ville være et mindre mirakel, hvis det samme stykke fjernhardware håndterede vores tre forbindelsesanmodninger.
  • Hop 7: Dette er det hop, vores UDP-pakker lavede, da de forlod internetudbydernes netværk.
  • Hop 8: Igen får vi en IP-adresse, men ikke enhedens navn. Alle tre test returnerede med succes.
  • Humle 9 og 10: To flere anonyme humle.
  • Hop 11: Vi er ankommet til webstedet Blarney Castle. Slottet ligger i Cork, Irland, men ifølge IP-adresse geolocation er webstedet i London.

Så det var en blandet pose. Nogle enheder spillede bold, nogle reagerede, men fortalte os ikke deres navne, og andre forblev helt anonyme.

Vi kom dog til destinationen, vi ved, at den er 11 humle væk, og rejseturen for rejsen var 13,773 og 14,715 millisekunder.

Skjuler enhedsnavne

Som vi har set, fører nogle gange inkludering af enhedsnavne til en rodet skærm. For at gøre det lettere at se dataene kan du bruge indstillingen -n(ingen kortlægning).

For at gøre dette med vores eksempel skriver vi følgende:

traceroute -n blarneycastle.ie

Dette gør det nemmere at vælge et stort antal til rundturstider, der kan indikere en flaskehals.

Hop 3 begynder at se lidt mistænkt ud. Sidste gang svarede det kun to gange, og denne gang svarede det kun en gang. I dette scenarie er det selvfølgelig uden for vores kontrol.

Men hvis du undersøgte dit virksomheds netværk, ville det være det værd at grave lidt dybere ned i den knude.

Indstilling af traceroute-timeoutværdi

Måske får vi flere svar, hvis vi forlænger standard-timeoutperioden (fem sekunder). For at gøre dette bruger vi indstillingen -w(ventetid) til at ændre den til syv sekunder. (Bemærk dette er et flydende nummer.)

Vi skriver følgende kommando:

traceroute -w 7.0 blarneycastle.dk

Det gjorde ikke meget af en forskel, så svarene går sandsynligvis ud. Det er sandsynligt, at de anonyme humle målrettet hemmeligholder.

Indstilling af antal tests

tracerouteSender som standard tre UDP-pakker til hvert hop. Vi kan bruge indstillingen -q(antal forespørgsler) til at justere dette op eller ned.

For at fremskynde traceroutetesten skriver vi følgende for at reducere antallet af UDP-probe-pakker, vi sender til en:

traceroute -q 1 blarneycastle.dk

Dette sender en enkelt sonde til hvert humle.

Indstilling af den oprindelige TTL-værdi

Vi kan indstille den oprindelige værdi af TTL til noget andet end en og springe nogle humle over. Normalt er TTL-værdierne indstillet til en for det første sæt tests, to for det næste sæt tests osv. Hvis vi indstiller det til fem, vil den første test forsøge at komme til hop fem og springe humle en til fire.

Fordi vi ved, at webstedet Blarney Castle er 11 humle fra denne computer, skriver vi følgende for at gå direkte til Hop 11:

traceroute -f 11 blarneycastle.dk

Det giver os en god, sammenfattet rapport om tilstanden for forbindelsen til destinationen.

Vær hensynsfuld

tracerouteer et godt værktøj til at undersøge netværksrute, kontrollere forbindelseshastigheder eller identificere flaskehalse. Windows har også en tracertkommando, der fungerer på samme måde.

Du vil dog ikke bombardere ukendte enheder med torrents af UDP-pakker og være forsigtig med at medtage traceroutei scripts eller uden opsyn.

Belastningen traceroutepå et netværk kan påvirke dets ydeevne negativt. Medmindre du er i en situation med en fix-it-nu-form, vil du måske bruge den uden for den normale åbningstid.