Internetpaden in 2 richtingen traceren met trace-ssh

Gedetailleerd inzicht in de retourpaden van actieve verbindingen

Digitale voetstappen

De oorspronkelijke blog is Engelstalig, dit is de Nederlandse vertaling ervan.

We presenteren trace-ssh, een script dat we ontwikkelden zodat netwerknerds zoals wij gedetailleerde informatie kunnen verkrijgen over de retourpaden van actieve verbindingen. Dit als aanvulling op de details over het pad op de heenweg die worden verkregen met traceroute. Trace-ssh zal uiteindelijk worden vervangen door een meer generieke oplossing zoals het Trace Route-project, maar tot die tijd denken we dat het nuttig kan zijn voor onder meer het opsporen van netwerkfouten en educatieve doeleinden. Trace-ssh kan worden gedownload op onze Git-site.

Traceroutes visualiseren

Nog niet zo lang geleden introduceerden we PathVis (voluit: Path Visualizer), een tool voor het visualiseren van traceroutes. Traceroute is een standaardtool die op vrijwel alle besturingssystemen beschikbaar is en veel wordt gebruikt om informatie te verkrijgen over de route die pakketten op het internet afleggen, zoals de netwerken en IP-adressen onderweg naar een specifieke bestemmingshost. Onderzoekers maken er bijvoorbeeld gebruik van om te zien welke netwerken verbonden zijn en netwerkoperators gebruiken het om verbindingsproblemen op te lossen.

Hoewel traceroute details oplevert over de uitgaande paden van actieve verbindingen van bron naar bestemming, heeft het een belangrijke beperking: het laat het omgekeerde of 'reverse' pad van de bestemming terug naar de bron buiten beschouwing. Het is belangrijk om die informatie te hebben omdat retourpaden vaak verschillen van de corresponderende uitgaande paden. Met alleen de uitgaande paden zie je mogelijk niet elk netwerk waar je pakketten doorheen gaan.

Om details over beide paden te verkrijgen, zouden we dus op de een of andere manier 2 afzonderlijke traceroutes moeten initiëren: één van de bron naar de bestemming en één van de bestemming terug naar de bron, waarvoor toegang tot het externe systeem nodig is.

Details over uitgaande en retourpaden verkrijgen met trace-ssh

Om te laten zien hoe nuttig een reverse traceroute is, ontwikkelden we een scriptprototype met de naam trace-ssh. Dit script toont live traceroutes voor zowel het uitgaande pad als het retourpad van een lopende SSH-sessie. Als je trace-ssh gebruikt om in te loggen op een externe computer, kun je zien in hoeverre het pad dat je SSH-pakketten afleggen in beide richtingen hetzelfde is.

Figuur 1 illustreert het concept, met de SSH-sessie waarom het gaat in het linkervenster, een live traceroute naar de bestemming in het bovenste venster rechts en een live traceroute van de bestemming naar de bron in het onderste venster aan de rechterkant. Het laat zien dat het uitgaande pad in dit voorbeeld verschilt van het retourpad (de hosts zijn onherkenbaar gemaakt, maar sommige hebben andere nummers en hun namen hebben andere lengtes, hoewel in dit specifieke geval de verschillen minimaal zijn).

Schermafbeelding van een trace-ssh-sessie

Figuur 1. Schermafbeelding van een trace-ssh-sessie.

Op weg naar reverse traceroutes voor algemeen gebruik

Het nadeel van trace-ssh is dat het alleen werkt met machines waarop je SSH-toegang hebt en trace-ssh geïnstalleerd is. Ook is het niet erg handig voor het oplossen van connectiviteitsproblemen, omdat het alleen werkt als je een actieve ssh-verbinding hebt.

Om het omgekeerde pad naar een systeem op het internet weer te geven, zouden we traceringsinformatie aan de headers van IP-pakketten moeten toevoegen of gebruik moeten maken van een specifiek ICMP-pakket dat naar de afzender wordt teruggestuurd en onderweg wordt bijgewerkt met informatie over alle hops. Daarvoor zou dan elke router op het internet moeten worden aangepast.

Een stap in de richting van zo'n algemene oplossing is het project Reverse Traceroute, dat een methode definieert voor het doorgeven van traceroute-informatie in een nieuw ICMP-pakket. De informatie wordt verzameld en naar geïnteresseerde partijen gestuurd door speciale reverse traceroute servers. Hoewel zo alleen reverse traceroutes kunnen worden verkregen van hosts die het protocol implementeren, kan deze methode geleidelijk worden uitgerold en is er geen significante verandering nodig in de manier waarop routers op het internet opereren.

De ontwikkelaars van het Trace Route-project hebben hun werk als Internet Draft aan de IETF voorgelegd en we hopen dat het erdoor komt. In de tussentijd hopen we dat je iets aan trace-ssh hebt. :-)

Probeer het uit!

Als je met trace-ssh wilt spelen, kun je het hier downloaden. Je moet tmux (een terminal multiplexer) op je lokale systeem geïnstalleerd hebben en mtr op zowel het lokale als het externe systeem. Daarnaast raden we aan om gebruik te maken van SSH public key authentication, omdat je voor trace-ssh 2 aparte SSH-sessies moet hebben. Standaard tonen de mtr-sessies AS-nummers, het land van het autonome systeem (AS) en ofwel de hostnamen ofwel de IP-adressen van de tussenliggende hops, maar het script kan gemakkelijk aan je eigen voorkeuren worden aangepast.