Sådan bruger du traceroute-kommandoen på Linux

Du kan bruge Linux traceroute-kommandoen til at se den langsomme del af en netværkspakkes rejse og fejlfinde træge netværksforbindelser. Vi viser dig hvordan!

Hvordan traceroute virker

Når du sætter pris på, hvordan traceroute virker, gør det at forstå resultaterne meget lettere. Jo mere kompliceret ruten a netværkspakke skal tage for at nå sin destination, jo sværere er det at finde ud af, hvor en opbremsning kan forekomme.

En lille organisation lokal netværk (LAN) kan være relativt enkel. Den vil sandsynligvis have mindst én server og en router eller to. Kompleksiteten øges på en wide area network (WAN), der kommunikerer mellem forskellige lokationer eller via internettet. Din netværkspakke støder derefter på (og videresendes og dirigeres af) en masse hardware, såsom routere og gateways.

Overskrifterne på metadata på datapakker beskriver dens længde, hvor den kom fra, hvor den skal hen, den protokol, den bruger, og så videre. 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.

traceroute bruger TCP/IP suite af protokoller og sender Brugerdatagramprotokol pakker. Overskriften indeholder Tid til at leve (TTL) felt, som indeholder en otte-bit heltalsværdi. 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, nedsætter den TTL-tælleren. Hvis TTL-værdien nogensinde når én, sænker den router, der modtager pakken, værdien og bemærker, at den nu er nul. Pakken kasseres derefter og videresendes ikke til næste hop på dens rejse, fordi den har “timeout”.

Routeren sender en Internet Message Control Protocol (ICMP) Tid overskredet besked tilbage til pakkens oprindelse for at lade den vide, at pakken fik timeout. Time Exceeded-meddelelsen indeholder den originale header og de første 64 bit af den originale pakkes data. Dette er defineret på side seks af Anmodning om kommentarer 792.

Så hvis traceroute sender en pakke ud, men derefter indstiller TTL-værdien til én, vil pakken kun komme så langt som den første router, før den kasseres. Den vil modtage en ICMP-tid overskredet-meddelelse fra routeren, og den kan registrere den tid, det tog for rundturen.

  Sådan spiller du Nioh 2 på Linux

Den gentager derefter øvelsen med TTL sat til 2, som vil mislykkes efter to hop. traceroute øger TTL til tre og prøver igen. Denne proces gentages, indtil destinationen er nået, eller det maksimale antal hop (30, som standard) testes.

Nogle routere spiller ikke godt

Nogle routere har fejl. De forsøger at videresende pakker med en TTL på nul i stedet for at kassere dem og udsende en meddelelse om ICMP-tid overskredet.

Ifølge Cisco, nogle internetudbydere (ISP’er) hastighedsbegrænser 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 lammelsesangreb, som en smølfeangreb.

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

Installerer traceroute

traceroute var allerede installeret på Fedora 31, men skal installeres på Manjaro 18.1 og Ubuntu 18.04. Brug følgende kommando for at installere traceroute på Manjaro:

sudo pacman -Sy traceroute

Det

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

sudo apt-get install traceroute

Det

Bruger traceroute

Som vi dækkede ovenfor, er traceroutes formål at fremkalde et svar fra routeren ved hvert hop fra din computer til destinationen. Nogle kan være ordknappe og ikke give noget væk, mens andre sandsynligvis vil spilde bønnerne uden betænkeligheder.

Som et eksempel vil vi køre en traceroute til Blarney Slot hjemmeside i Irland, hjemsted for de berømte Blarney Stone. Legenden siger, at hvis du kysser Blarney-stenen, vil du blive velsignet med “gabens gave”. Lad os håbe, at de routere, vi støder på undervejs, er passende skændes.

Vi skriver følgende kommando:

traceroute www.blarneycastle.ie

Det

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

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

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

  Sådan installeres WPS Office på Linux

Formatet for hver hop-linje er som følger:

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

Lad os gennemgå, hvad vi har nedenfor:

Hop 1: Den første anløbshavn (ingen ordspil) er DrayTek Vigor Router på det lokale netværk. Sådan forlader vores UDP-pakker det lokale netværk og kommer på internettet.
Hop 2: Denne enhed reagerede ikke. Måske blev den konfigureret til aldrig at sende ICMP-pakker. Eller måske reagerede den, men var for langsom, så traceroute fik timeout.
Hop 3: En enhed svarede, men vi fik ikke dens navn, kun IP-adressen. Bemærk, at der er en stjerne på denne linje, hvilket betyder, at vi ikke fik svar på alle tre anmodninger. Dette kan indikere pakketab.
Humle 4 og 5: Mere anonyme humle.
Hop 6: Der er meget tekst her, fordi en anden fjernenhed håndterede hver af vores tre UDP-anmodninger. De (temmelig 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 en masse 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 ekstern hardware håndterede vores tre forbindelsesanmodninger.
Hop 7: Dette er det hop, vores UDP-pakker lavede, da de forlod internetudbyderens netværk.
Hop 8: Igen får vi en IP-adresse, men ikke enhedsnavnet. Alle tre test vendte tilbage med succes.
Humle 9 og 10: Yderligere to anonyme hop.
Hop 11: Vi er ankommet til Blarney Castles hjemmeside. Slottet ligger i Cork, Irland, men iflg IP-adresse geolocation, hjemmesiden er i London.

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

Vi nåede dog til destinationen, vi ved, at det er 11 hop væk, og tur-retur-tiden for rejsen var 13.773 og 14.715 millisekunder.

Skjul enhedsnavne

Som vi har set, fører det nogle gange til at inkludere enhedsnavne til en rodet skærm. For at gøre det nemmere at se dataene kan du bruge -n (ingen mapping).

  Sådan afspiller du video fra terminalen i Linux med Mplayer

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

traceroute -n blarneycastle.ie

Det

Dette gør det lettere at udvælge store tal for tur-retur-tidspunkter, der kunne indikere en flaskehals.

Hop 3 begynder at se lidt suspekt ud. Sidste gang svarede den kun to gange, og denne gang svarede den kun én gang. I dette scenarie er det selvfølgelig uden for vores kontrol.

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

Indstilling af traceroute timeout-værdi

Hvis vi forlænger standard timeout-perioden (fem sekunder), vil vi måske få flere svar. For at gøre dette bruger vi muligheden -w (ventetid) til at ændre den til syv sekunder. (Bemærk, at dette er et flydende kommatal.)

Vi skriver følgende kommando:

traceroute -w 7.0 blarneycastle.ie

Det

Det gjorde ikke den store forskel, så svarene er formentlig på vej ud. Det er sandsynligt, at de anonyme humle er målrettet hemmelighedsfulde.

Indstilling af antallet af tests

Som standard sender traceroute tre UDP-pakker til hvert hop. Vi kan bruge muligheden -q (antal forespørgsler) til at justere dette op eller ned.

For at fremskynde traceroute-testen skriver vi følgende for at reducere antallet af UDP-probepakker, vi sender til én:

traceroute -q 1 blarneycastle.ie

Det

Dette sender en enkelt sonde til hvert hop.

Indstilling af den oprindelige TTL-værdi

Vi kan indstille startværdien af ​​TTL til noget andet end én og springe nogle hop over. Normalt er TTL-værdierne sat til én for det første sæt af test, to for det næste sæt af test, og så videre. Hvis vi sætter den til fem, vil den første test forsøge at komme til hop fem og springe et til fire over.

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

traceroute -f 11 blarneycastle.ie

Det

Det giver os en flot, sammenfattet rapport om tilstanden af ​​forbindelsen til destinationen.

Vær hensynsfuld

traceroute er et fantastisk værktøj til at undersøge netværksrouting, tjekke forbindelseshastigheder eller identificere flaskehalse. Windows har også en tracert-kommando, der fungerer på samme måde.

Du ønsker dog ikke at bombardere ukendte enheder med torrents af UDP-pakker, og vær på vagt med at inkludere traceroute i scripts eller uovervågede job.

Den belastning, traceroute kan placere på et netværk, kan påvirke dets ydeevne negativt. Medmindre du er i en fix-it-nu slags situation, vil du måske bruge den uden for normal åbningstid.