
U kunt de Linux traceroute opdracht om het langzame deel van de reis van een netwerkpakket te zien en problemen met trage netwerkverbindingen op te lossen. We laten je zien hoe!
Hoe traceroute werkt
Als je weet hoe traceroute werkt, het maakt het begrijpen van de resultaten veel gemakkelijker. Hoe ingewikkelder de route die een netwerkpakket moet afleggen om zijn bestemming te bereiken, hoe moeilijker het is om vast te stellen waar eventuele vertragingen kunnen optreden.
Het lokale netwerk (LAN) van een kleine organisatie kan relatief eenvoudig zijn. Het heeft waarschijnlijk minstens één server en een router of twee. De complexiteit neemt toe op een wide area network (WAN) dat communiceert tussen verschillende locaties of via internet. Je netwerkpakket komt dan veel hardware tegen (en wordt doorgestuurd en gerouteerd), zoals routers en gateways.
De kopteksten van metadata op datapakketten beschrijven de lengte, waar het vandaan kwam, waar het naartoe gaat, het protocol dat het gebruikt, enzovoort. De specificatie van het protocol definieert de header. Als u het protocol kunt identificeren, kunt u het begin en einde van elk veld in de koptekst bepalen en de metagegevens lezen.
traceroute gebruikt de TCP / IP-reeks protocollen en verzendt User Datagram Protocol-pakketten. De koptekst bevat het veld Time to Live (TTL), dat een acht-bits geheel getal bevat. Ondanks wat de naam doet vermoeden, vertegenwoordigt het een telling, geen duur.
Een pakket reist van zijn oorsprong naar zijn bestemming via een router. Elke keer dat het pakket bij een router aankomt, wordt de TTL-teller verlaagd. Als de TTL-waarde ooit een waarde bereikt, verlaagt de router die het pakket ontvangt de waarde en merkt op dat deze nu nul is. Het pakket wordt vervolgens weggegooid en niet doorgestuurd naar de volgende hop van zijn reis omdat er een “time-out” is opgetreden.
De router stuurt een Internet Message Control Protocol (ICMP) Time Exceeded-bericht terug naar de oorsprong van het pakket om te laten weten dat er een time-out van het pakket is opgetreden. Het bericht Time Exceeded bevat de originele header en de eerste 64 bits van de gegevens van het originele pakket. Dit wordt gedefinieerd op pagina zes van Request for Comments 792.
Dus indien traceroute verzendt een pakket, maar stelt vervolgens de TTL-waarde in op één, het pakket komt alleen tot de eerste router voordat het wordt weggegooid. Het ontvangt een ICMP-tijd overschreden-bericht van de router en kan de tijd registreren die nodig was voor de rondreis.
Vervolgens herhaalt het de oefening met TTL ingesteld op 2, die na twee hops zal mislukken. traceroute verhoogt de TTL naar drie en probeert het opnieuw. Dit proces herhaalt zich totdat de bestemming is bereikt of het maximale aantal hops (standaard 30) wordt getest.
Sommige routers spelen niet goed
Sommige routers hebben bugs. Ze proberen pakketten door te sturen met een TTL van nul in plaats van ze weg te gooien en een ICMP-bericht over tijdoverschrijding te genereren.
Volgens Cisco beperken sommige internetproviders (ISP’s) het aantal ICMP-berichten dat hun routers doorgeven.
Sommige apparaten zijn zo geconfigureerd dat ze nooit ICMP-pakketten verzenden. Dit is vaak om ervoor te zorgen dat het apparaat niet ongewild kan worden gedwongen deel te nemen aan een gedistribueerde denial of service, zoals een smurfaanval.
traceroute heeft een standaard time-out voor antwoorden van vijf seconden. Als het binnen die vijf seconden geen reactie ontvangt, wordt de poging afgebroken. Dit betekent dat reacties van zeer langzame routers worden genegeerd.
Traceroute installeren
traceroute was al geïnstalleerd op Fedora 31 maar moet worden geïnstalleerd op Manjaro 18.1 en Ubuntu 18.04. Installeren traceroute gebruik op Manjaro het volgende commando:
sudo pacman -Sy traceroute

Installeren traceroute gebruik op Ubuntu de volgende opdracht:
sudo apt-get install traceroute

Traceroute gebruiken
Zoals we hierboven hebben besproken, traceroute's doel is om een reactie van de router op te wekken bij elke sprong van uw computer naar de bestemming. Sommigen hebben misschien hun lippen op elkaar en geven niets weg, terwijl anderen de bonen waarschijnlijk zonder moeite zullen morsen.
Als voorbeeld voeren we een traceroute naar de Blarney Castle-website in Ierland, de thuisbasis van de beroemde Blarney Stone. De legende gaat dat als je de Blarney Stone kust, je gezegend wordt met de “gift of the gab”. Laten we hopen dat de routers die we onderweg tegenkomen behoorlijk praatgraag zijn.
We typen het volgende commando:
traceroute www.blarneycastle.ie

De eerste regel geeft ons de volgende informatie:
- De bestemming en het IP-adres.
- Het aantal hops
traceroutezal proberen alvorens op te geven. - De grootte van de UDP-pakketten die we verzenden.
Alle andere regels bevatten informatie over een van de hops. Voordat we echter ingaan op de details, kunnen we zien dat er 11 hops zijn tussen onze computer en de Blarney Castle-website. Hop 11 vertelt ons ook dat we onze bestemming hebben bereikt.
Het formaat van elke hopregel is als volgt:
- De naam van het apparaat of, als het apparaat zichzelf niet identificeert, het IP-adres.
- Het IP-adres.
- De tijd die het kostte om heen te reizen voor elk van de drie tests. Als hier een asterisk staat, betekent dit dat er geen reactie op die test was. Als het apparaat helemaal niet reageert, zie je drie sterretjes en geen apparaatnaam of IP-adres.
Laten we eens kijken wat we hieronder hebben:
- Hop 1: De eerste aanloophaven (geen bedoelde woordspeling) is de DrayTek Vigor Router op het lokale netwerk. Dit is hoe onze UDP-pakketten het lokale netwerk verlaten en op internet komen.
-
Hop 2: Dit apparaat reageerde niet. Misschien was het geconfigureerd om nooit ICMP-pakketten te verzenden. Of misschien reageerde het wel, maar was het te traag, dus
traceroutetime-out. - Hop 3: Een apparaat reageerde, maar we kregen de naam niet, alleen het IP-adres. Merk op dat er een asterisk in deze regel staat, wat betekent dat we geen antwoord hebben gekregen op alle drie de verzoeken. Dit kan op pakketverlies duiden.
- Hop 4 en 5: Meer anonieme hop.
- Hop 6: Er staat hier veel tekst omdat een ander extern apparaat elk van onze drie UDP-verzoeken heeft afgehandeld. De (vrij lange) namen en IP-adressen voor elk apparaat werden afgedrukt. Dit kan gebeuren wanneer u een “rijk gevuld” netwerk tegenkomt waarop veel hardware is om grote hoeveelheden verkeer te verwerken. Deze hop bevindt zich binnen een van de grootste ISP’s in het VK. Het zou dus een klein wonder zijn als dezelfde externe hardware onze drie verbindingsverzoeken zou behandelen.
- Hop 7: Dit is de hop die onze UDP-pakketten hebben gemaakt toen ze het ISP-netwerk verlieten.
- Hop 8: Nogmaals, we krijgen een IP-adres, maar niet de apparaatnaam. Alle drie de tests zijn succesvol teruggekeerd.
- Hop 9 en 10: Nog twee anonieme hops.
- Hop 11: We zijn aangekomen op de website van Blarney Castle. Het kasteel bevindt zich in Cork, Ierland, maar volgens de geolocatie van het IP-adres bevindt de website zich in Londen.
Dus het was een allegaartje. Sommige apparaten speelden een bal, sommige reageerden maar vertelden ons hun naam niet, en andere bleven volledig anoniem.
We zijn echter wel op de bestemming aangekomen, we weten dat het 11 hops verwijderd is en de reistijd voor de reis was 13.773 en 14.715 milliseconden.
Apparaatnamen verbergen
Zoals we hebben gezien, leidt het opnemen van apparaatnamen soms tot een rommelige weergave. Om het gemakkelijker te maken om de gegevens te zien, kunt u de -n (geen mapping) optie.
Om dit met ons voorbeeld te doen, typen we het volgende:
traceroute -n blarneycastle.ie

Dit maakt het gemakkelijker om grote getallen te kiezen voor rondreistijden die op een bottleneck kunnen duiden.
Hop 3 begint een beetje verdacht te lijken. De vorige keer reageerde het slechts twee keer, en deze keer reageerde het slechts één keer. In dit scenario hebben we er natuurlijk geen controle over.
Als u echter uw bedrijfsnetwerk onderzoekt, zou het de moeite waard zijn om wat dieper in dat knooppunt te graven.
De time-outwaarde van de traceroute instellen
Als we de standaard time-outperiode verlengen (vijf seconden), krijgen we misschien meer reacties. Om dit te doen, gebruiken we de -w (wachttijd) optie om het te veranderen in zeven seconden. (Merk op dat dit een getal met drijvende komma is.)
We typen het volgende commando:
traceroute -w 7.0 blarneycastle.ie

Dat maakte niet veel uit, dus de reacties verlopen waarschijnlijk. Het is waarschijnlijk dat de anonieme hop opzettelijk geheimzinnig is.
Het aantal tests instellen
Standaard, traceroute stuurt drie UDP-pakketten naar elke hop. We kunnen de -q (aantal queries) optie om dit naar boven of beneden aan te passen.
Om het traceroute test, typen we het volgende om het aantal UDP-testpakketten dat we naar één verzenden te verminderen:
traceroute -q 1 blarneycastle.ie

Dit stuurt een enkele sonde naar elke hop.
De initiële TTL-waarde instellen
We kunnen de beginwaarde van TTL op iets anders dan één instellen en enkele hops overslaan. Gewoonlijk worden de TTL-waarden ingesteld op één voor de eerste set tests, twee voor de volgende set tests, enzovoort. Als we het op vijf zetten, zal de eerste test proberen om hop vijf te krijgen en hop één tot en met vier over te slaan.
Omdat we weten dat de Blarney Castle-website 11 hops vanaf deze computer is, typen we het volgende om rechtstreeks naar Hop 11 te gaan:
traceroute -f 11 blarneycastle.ie

Dat geeft ons een mooi, beknopt rapport over de staat van de verbinding met de bestemming.
Wees attent
traceroute is een geweldig hulpmiddel om netwerkroutering te onderzoeken, verbindingssnelheden te controleren of bottlenecks te identificeren. Windows heeft ook een tracert commando dat op dezelfde manier werkt.
U wilt echter geen onbekende apparaten bombarderen met torrents van UDP-pakketten en op uw hoede zijn voor het opnemen van traceroute in scripts of onbeheerde banen.
De lading traceroute kan op een netwerk worden geplaatst, kan de prestaties nadelig beïnvloeden. Tenzij u zich in een situatie bevindt waarin u het nu moet oplossen, wilt u het misschien buiten de normale kantooruren gebruiken.