Skip to main content

Så här använder du kommandot 'traceroute' i Linux

PING and TRACERT (traceroute) networking commands (Juni 2025)

PING and TRACERT (traceroute) networking commands (Juni 2025)
Anonim

Traceroute-kommandot används i Linux för att kartlägga den resa som ett informationspaket åker från källan till dess destination. En användning för traceroute är att lokalisera när dataförlust inträffar genom ett nätverk, vilket kan innebära en nod som är nere.

Eftersom varje hopp i posten speglar en ny server eller router mellan den ursprungliga PC-en och det avsedda målet, kan du granska resultaten av en tracerout-scan även identifiera långsamma punkter som kan påverka din nätverkstrafik negativt.

Hur det fungerar

Utvärdering av den specifika vägen som nätverkstrafiken följer (eller hitta den felaktiga gateway som kasserar dina paket) presenterar flera felsökningsutmaningar. Traceroute använder IP-protokollet tid att leva fält för att begära ett ICMP TIME_EXCEEDED-svar från varje gateway längs vägen till en destinationsvärd.

Den enda parameter som du måste inkludera när du kör kommandot Traceroute är värdnamn eller IP-adress för destinationen.

Traceroute Syntax och Switches

traceroute -dFInrvx -f first_ttl -g inkörsport -jag jag möter -m max_ttl -p hamn -q nqueries -s src_addr -t tos -w väntetid -z pausemsecs värd packetlen

Medan ovanstående är hur kommandot traceroute måste skrivas ut för att kunna fungera i kommandoraden kan prestandan eller utgången av kommandot ändras genom att ange en eller flera valfria växlar.

  • -f: Ställ in den första tid-till-levningen som används i det första utgående sondpaketet.
  • -F: Ställ in "fragmentet" inte.
  • -d: Aktivera felsökningsfelsökning.
  • -g: Ange en lös källvägsgateway (8 max).
  • -jag: Ange ett nätverksgränssnitt för att få käll-IP-adressen för utgående sondpaket. Detta är normalt bara användbart på en värd med flera hem. (Se-s flagga för ett annat sätt att göra detta.)
  • -JAG: Använd ICMP ECHO istället för UDP datagram.
  • -m: Ställ in max-time-to-live (max antal humle) som används i utgående sondpaket. Standard är 30 humle (samma standard används för TCP-anslutningar).
  • -n: Skriv ut hoppa adresser numeriskt snarare än symboliskt och numeriskt (sparar en namnserver adress-till-namn-sökning för varje gateway som finns på banan).
  • -p: Ange bas UDP portnummer som används i sonder (standard är 33434). Traceroute hoppas att inget lyssnar på UDP-portar bas till bas + nhops - 1 på destinationsvärd (så ett ICMP PORT_UNREACHABLE meddelande kommer att returneras för att avsluta ruttspårningen). Om något lyssnar på en port i standardintervallet kan det här alternativet användas för att välja ett oanvända portintervall.
  • -r: Bypass de vanliga routingborden och skicka direkt till en värd på ett bifogat nätverk. Om värden inte finns på ett direkt anslutet nätverk returneras ett fel. Det här alternativet kan användas för att pinga en lokal värd genom ett gränssnitt som inte har någon rutt genom den (t.ex. efter att gränssnittet tappades av dirigeras (8C)).
  • -s: Använd följande IP-adress (som vanligtvis anges som ett IP-nummer, inte ett värdnamn) som källadress i utgående sondpaket. På flerahemmade värdar (de med mer än en IP-adress) kan detta alternativ användas för att tvinga källadressen att vara något annat än IP-adressen till gränssnittet som probpaketet skickas till. Om IP-adressen inte är en av maskinens gränssnittsadresser returneras ett fel och inget skickas. (Se-jag flagga för ett annat sätt att göra detta.)
  • -t: Ställ in typ av service i sondpaket till följande värde (standard noll). Värdet måste vara ett decimaltal i intervallet 0 till 255. Det här alternativet kan användas för att se om olika typer av tjänster resulterar i olika vägar. (Om du inte kör 4.4bsd kan det här vara akademiskt, eftersom de vanliga nättjänsterna som telnet och ftp inte låter dig styra TOS.) Inte alla värden för TOS är lagliga eller meningsfulla - se IP-specifikationen för definitioner. Användbara värden är förmodligen `-t 16 '(låg fördröjning) och `-t 8 "(hög genomströmning).
  • -v: Verbose output. Mottagna ICMP-paket än TIME_EXCEEDED och UNREACHABLEs är listade.
  • -w: Ställ in tiden (i sekunder) för att vänta på ett svar på en sond (standard 5 sekunder).
  • -x: Växla IP-kontrollsummor. Normalt förhindrar detta traceroute från att beräkna IP-kontrollsummor. I vissa fall kan operativsystemet skriva över delar av det utgående paketet men inte räkna om kontrollsumman. I vissa fall är standardvärdet att inte beräkna checksummor och använda-x får dem att beräknas. Observera att kontrollsummor vanligtvis krävs för den sista hoppen när man använder ICMP ECHO-sonder (-JAG), så de beräknas alltid när man använder ICMP.
  • -z: Ställ in tiden (i millisekunder) för att pausa mellan sonder (standard 0). Några system som Solaris och routrar från Cisco, rate limit icmp meddelanden. Ett bra värde att använda med detta är 500 (t ex 1/2 sekund).

Tolkning av resultaten

Traceroute skisserar den väg som ett IP-paket följer till en internet värd genom att starta UDP-sondpaket med en liten TTL (tid att leva) och lyssnar sedan på ett ICMP-tidsöverträffat svar från en gateway. Vi startar våra prober med en TTL av en och ökar med en tills vi får en ICMP-port som inte kan nås (vilket innebär att paketet anlände till destinationen) eller träffar ett maximalt värde av försök, som normalt motsvarar 30 humle och kan ändras med de-m flagga.

När traceroute exekverar skickar den tre sonder vid varje TTL-inställning och skriver sedan ut en rad till konsolen som visar TTL, gatewayadressen och omgångstiden för varje sond. Om sondens svar kommer från olika gateways, skrivs adressen till varje svarande system. Om det inte finns något svar inom ett fem-sekunders timeoutintervall (ändras med-w flagga), skrivs en asterisk för den sonden.

För att utesluta att destinationsvärden blir överväldigad av UDP-sondpaketbehandling, är destinationsporten inställd på ett värde som osannolikt inte kommer att användas av den enheten. Om ett nätverk eller en tjänst på destinationen använder den porten, ändra värdet med hjälp av-p flagga.

Ett exempel på användning och utmatning ger resultat som liknar det här exemplet:

yak 71% traceroute nis.nsf.net. traceroute till nis.nsf.net (35.1.1.48), 30 humle max, 38 byte paket 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

Observera att den andra och tredje raden är desamma. Detta resultat hänför sig till en buggy-kärna på det andra hoppsystemet-lbl-csam.arpa-som vidarebefordrar paket med en noll-TTL (en bugg i den distribuerade versionen av 4.3 BSD). Du måste gissa vilken väg paketen tar på land eftersom NSFNet (129.140) inte tillhandahåller adress-till-namn översättningar för sina NSS.

Ett mer intressant exempel är:

yak 72% traceroute allspice.lcs.mit.edu. traceroute till 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

Observera att portarna vid 12, 14, 15, 16 och 17 hops bort heller inte skicka ICMP "time exceeded" meddelanden eller skicka dem med en TTL för liten för att nå oss. Linjerna 14 till och med 17 kör MIT C Gateway-koden som inte skickar meddelanden om "tid överstiger".

Den tysta gatewayen 12 i ovanstående exempel kan vara resultatet av ett fel i 4: e 23 BSD-nätverkskoden och dess derivat: Maskiner som kör 4,3-kod och tidigare skickar ett oåtkomligt meddelande med vilken som helst TTL kvarstår i det ursprungliga datagrammet. Eftersom, för gateways, den återstående TTL är noll, är ICMP "överträffad tid" garanterat att den inte kommer tillbaka till oss. Beteendet hos denna bugg är lite mer intressant när det visas 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 Fröken ! 39 ms! 39 ms!

Observera att det finns 12 "gateways" (13 är slutdestinationen), och den sista halvan av dem saknas. Vad som verkligen händer är att servern heter vila i frid (en Sun-3 kör Sun OS 3.5) använder TTL från vårt ankomna datagram som TTL i sitt ICMP-svar. Så kommer svaret att gå ut på returvägen (utan meddelande som skickas till någon eftersom ICMP inte skickas till ICMP) tills vi sondrar med en TTL som är minst dubbelt så länge, dvs rip är egentligen bara sju humle bort.

Ett svar som returnerar med en TTL på 1 är en aning om att det här problemet finns. Traceroute skriver ut en "!" efter tiden om TTL är mindre än eller lika med 1. Eftersom leverantörerna skickar mycket föråldrad (DECs Ultrix, Sun 3.x) eller icke-standard (HPUX) -programvara, räknar du med att se detta problem ofta och var noga med att plocka målvärden för dina sonder.

Andra möjliga anteckningar efter tiden är! H, ! N, eller! P (värd, nätverk eller protokoll oåtkomligt),! S (källväg misslyckades),! F- (fragmentering behövs - RFC1191 Path MTU Discovery-värdet visas),! X (kommunikation förbjuden administrativt)! V (brott mot värdpreferens)! C (förrangsavbrott i praktiken), eller! (ICMP oåterkallelig kod). Dessa koder definieras av RFC1812, vilket ersätter RFC1716. Om nästan alla prober resulterar i någon form av oåtkomlig värd, kommer traceroute ge upp och avsluta.

Detta program är avsett för användning i nätverksprovning, mätning och hantering. Den bör användas främst för manuell felisolering. På grund av den belastning det skulle kunna påföra i nätverket är det oklokt att använda traceroute under normal drift eller från automatiska skript.