Het traceroute-commando wordt in Linux gebruikt om de reis die een pakket informatie vanaf de bron naar de bestemming uitvoert, in kaart te brengen. Eén functie voor traceroute is om te bepalen wanneer gegevensverlies optreedt in een netwerk, wat kan betekenen dat een knooppunt niet beschikbaar is.
Omdat elke hop in de record een nieuwe server of router weergeeft tussen de oorspronkelijke pc en het beoogde doel, kunt u door de resultaten van een traceroute-scan te bekijken, trage punten identificeren die uw netwerkverkeer nadelig kunnen beïnvloeden.
Hoe het werkt
Het evalueren van de specifieke route die netwerkverkeer volgt (of het vinden van de miscreant-gateway waarmee uw pakketten worden verwijderd) biedt verschillende uitdagingen voor het oplossen van problemen. Traceroute maakt gebruik van het IP-protocol tijd om te leven veld om een ICMP TIME_EXCEEDED antwoord van elke gateway langs het pad naar een bestemmingshost te vragen.
De enige parameter die u moet opnemen wanneer u de traceroute-opdracht uitvoert, is de hostnaam of het IP-adres van de bestemming.
Traceroute syntaxis en switches

traceroute -dFInrvx -f first_ttl -g poort -ik iface -m max_ttl -p haven -q nqueries -s src_addr -t tos -w wacht tijd -z pausemsecs gastheer packetlen
Terwijl het bovenstaande is hoe de traceroute-opdracht moet worden uitgeschreven om op de opdrachtregel te werken, kan de uitvoering of uitvoer van de opdracht worden gewijzigd door een of meer optionele schakelopties op te geven.
- -f: Stel de initiële time-to-live in die gebruikt wordt in het eerste uitgaande probe-pakket.
- -F: Stel het bit "niet fragment" in.
- -d: Schakel debugging op socketniveau in.
- -g: Geef een routerroute voor losse bronnen op (maximaal 8).
- -ik: Geef een netwerkinterface op om het bron-IP-adres voor uitgaande sondepakketten te verkrijgen. Dit is normaal alleen nuttig op een multi-homed host. (Zie de-s vlag voor een andere manier om dit te doen.)
- -IK: Gebruik ICMP ECHO in plaats van UDP-datagrammen.
- -m: Stel de maximale time-to-live (maximumaantal hops) gebruikt in uitgaande sondepakketten in. De standaardwaarde is 30 hops (dezelfde standaard gebruikt voor TCP-verbindingen).
- -n: Print hop-adressen numeriek in plaats van symbolisch en numeriek (slaat een naamserver-zoekactie op adres op naam op voor elke gateway die op het pad is gevonden).
- -p: Stel het UDP-poortnummer in dat wordt gebruikt in probes (standaard is 33434). Traceroute hoopt dat er niets luistert op UDP-poorten baseren naar base + nhops - 1 op de bestemmingshost (zodat een ICMP PORT_UNREACHABLE-bericht zal worden geretourneerd om de tracering van de route te beëindigen). Als er iets luistert op een poort binnen het standaardbereik, kan deze optie worden gebruikt om een ongebruikt poortbereik te kiezen.
- -r: Omzeil de normale routeringstabellen en stuur deze rechtstreeks naar een host op een aangesloten netwerk. Als de host zich niet in een rechtstreeks verbonden netwerk bevindt, wordt er een fout geretourneerd. Deze optie kan worden gebruikt om een lokale host te pingen via een interface die er geen route doorheen heeft (bijvoorbeeld nadat de interface is laten vallen) gerouteerd (8C)).
- -s: Gebruik het volgende IP-adres (dat meestal wordt gegeven als een IP-nummer, geen hostnaam) als het bronadres in uitgaande probepakketten. Op multi-homed hosts (die met meer dan één IP-adres), kan deze optie worden gebruikt om het bronadres te dwingen iets anders te zijn dan het IP-adres van de interface waarnaar het probe-pakket wordt verzonden. Als het IP-adres niet een van de interfaceadressen van dit apparaat is, wordt een fout geretourneerd en wordt er niets verzonden. (Zie de-ik vlag voor een andere manier om dit te doen.)
- -t: Stel de typ-of-service in probepakketten naar de volgende waarde (standaard nul). De waarde moet een geheel getal van een decimaal in het bereik 0 tot 255 zijn. Deze optie kan worden gebruikt om te zien of verschillende soorten services resulteren in verschillende paden. (Als u geen 4.4bsd uitvoert, kan dit een academische reden zijn, omdat de normale netwerkservices zoals telnet en ftp u niet de mogelijkheid bieden om de servicevoorwaarden te beheren.) Niet alle waarden van de TOS zijn legaal of zinvol - zie de IP-specificaties voor definities. Nuttige waarden zijn waarschijnlijk `-t 16 '(lage vertraging) en `-t 8 '(hoge doorvoer).
- -v: Uitgebreide uitvoer. Ontvangen ICMP-pakketten anders dan TIME_EXCEEDED en ONHALBARE worden vermeld.
- -w: Stel de tijd (in seconden) in om te wachten op een reactie op een sonde (standaard 5 sec.).
- -X: IP-controlesommen omschakelen. Normaal gesproken wordt hiermee voorkomen dat traceroute IP-controlesommen berekent. In sommige gevallen kan het besturingssysteem delen van het uitgaande pakket overschrijven, maar de controlesom niet opnieuw berekenen; dus, in sommige gevallen is de standaard niet om checksums en gebruik te berekenen-X zorgt ervoor dat ze worden berekend. Houd er rekening mee dat checksums meestal vereist zijn voor de laatste hop bij het gebruik van ICMP ECHO-probes (-IK), dus ze worden altijd berekend bij gebruik van ICMP.
- -z: Stel de tijd (in milliseconden) in om te pauzeren tussen de probes (standaard 0). Sommige systemen zoals Solaris en routers van Cisco, rate limit icmp messages. Een goede waarde om hiermee te gebruiken is 500 (bijv. 1/2 seconde).
De resultaten interpreteren
Traceroute schetst het pad dat een IP-pakket volgt naar een internethost door UDP-probepakketten te starten met een kleine TTL (time to live) en vervolgens te luisteren naar een ICMP-antwoord met de tijdsoverschrijding van een gateway. We starten onze sondes met een TTL van één en nemen deze met één toe totdat we een ICMP "poort onbereikbaar" krijgen (wat betekent dat het pakket op zijn bestemming is aangekomen) of een maximale waarde van pogingen raken, die standaard 30 hops heeft en kan worden gewijzigd met de-m vlag.
Wanneer traceroute wordt uitgevoerd, stuurt deze drie sondes naar elke TTL-instelling en drukt dan een regel naar de console af met de TTL, het adres van de gateway en de round-triptijd van elke sonde. Als de sonde-antwoorden afkomstig zijn van verschillende gateways, wordt het adres van elk reagerend systeem afgedrukt. Als er binnen een time-outinterval van vijf seconden geen reactie is (gewijzigd met de-w vlag), een asterisk is afgedrukt voor die sonde.
Om te voorkomen dat de host van de bestemming wordt overbelast door UDP-probepakketverwerking, wordt de doelpoort ingesteld op een waarde die waarschijnlijk niet door dat apparaat wordt gebruikt. Als een netwerk of service op de bestemming die poort gebruikt, wijzigt u de waarde met behulp van de-p vlag.
Een voorbeeld gebruik en uitvoer zullen resultaten opleveren vergelijkbaar met dit voorbeeld:
yak 71% traceroute nis.nsf.net. traceroute naar nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet 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 op dat de tweede en derde regel hetzelfde zijn. Deze uitkomst heeft betrekking op een buggy-kernel op het tweede hop-systeem-lbl-csam.arpa-die pakketten doorstuurt met een TTL van nul (een bug in de gedistribueerde versie van 4.3 BSD). U moet raden welk pad de pakketten in het hele land afleggen, aangezien het NSFNet (129.140) geen adres-naar-naam vertalingen voor zijn NSSen levert.
Een interessanter voorbeeld is:
yak 72% traceroute allspice.lcs.mit.edu. traceroute naar allspice.lcs.mit.edu (18.26.0.115), 30 hops 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
Merk op dat de gateways op 12, 14, 15, 16 en 17 weghoppen of geen ICMP "time exceeded" -berichten verzenden of verzenden met een TTL die te klein is om ons te bereiken. Regel 14 t / m 17 voeren de MIT C-gatewaycode die geen "time exceeded" -berichten verzendt.
De stille gateway 12 in het bovenstaande voorbeeld kan het gevolg zijn van een bug in de 4. 23 BSD-netwerkcode en zijn afgeleide producten: machines met 4.3-code en eerder verzenden een onbereikbaar bericht met behulp van de TTL die nog in het oorspronkelijke datagram aanwezig is. Omdat voor gateways de resterende TTL nul is, is de ICMP "time exceeded" gegarandeerd om niet terug te keren naar ons. Het gedrag van deze bug is iets interessanter wanneer deze op het doelsysteem verschijnt:
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 Mevrouw ! 39 ms! 39 ms!
Merk op dat er 12 "gateways" zijn (13 is de eindbestemming) en de laatste helft ontbreekt. Wat er echt gebeurt, is dat de server is genoemd Rust in vrede (een Sun-3 met Sun OS 3.5) gebruikt de TTL van ons aankomende datagram als de TTL in het ICMP-antwoord. Het antwoord treedt dus in time-out op het retourpad (zonder bericht verzonden aan iemand sinds ICMP's niet worden verzonden voor ICMP's) totdat we een TTL onderzoeken die ten minste tweemaal de padlengte is, met andere woorden, rip is eigenlijk slechts zeven springt weg.
Een antwoord dat terugkeert met een TTL van 1 is een aanwijzing dat dit probleem bestaat. Traceroute drukt een "!" na de tijd als de TTL kleiner is dan of gelijk is aan 1. Aangezien leveranciers veel verouderde (DEC's Ultrix, Sun 3.x) of niet-standaard (HPUX) -software verzenden, kunt u dit probleem vaak verwachten en kunt u de doel gastheer van uw sondes.
Andere mogelijke annotaties na de tijd zijn! H, ! NofP! (host, netwerk of protocol onbereikbaar),! S (bronroute mislukt),! F- (fragmentatie nodig - de RFC1191 Pad MTU Discovery-waarde wordt weergegeven),!X (communicatie administratief verboden),V! (voorrang voor hostprioriteit),! C (prioriteitsafsluiting van kracht), of! (ICMP onbereikbare code). Deze codes worden gedefinieerd door RFC1812, die RFC1716 vervangt. Als bijna alle probes resulteren in een soort onbereikbare host, zal traceroute opgeven en afsluiten.
Dit programma is bedoeld voor gebruik bij netwerktests, metingen en beheer. Het moet voornamelijk worden gebruikt voor handmatige foutisolatie. Vanwege de belasting die het kan opleggen aan het netwerk, is het onverstandig om traceroute te gebruiken tijdens normale bewerkingen of vanuit geautomatiseerde scripts.




