De localhost : wat en waarom?

Als je met je computer een IP-adres oproept, wil je meestal contact opnemen met een andere computer op het internet. Wanneer je echter het IP-adres 127.0.0.1 oproept, communiceer je met de localhost, en daarmee in principe dus met je eigen computer. Maar waarom zou je virtuele gesprekken met jezelf voeren? Waarvoor heb je de localhost nodig en hoe werkt de loopback?

Wanneer er uitgelegd wordt wat de localhost is, is het eerste punt altijd dat het om de eigen computer gaat: als je de localhost oproept, communiceert de computer in principe met zichzelf. Dit is echter een nogal beperkte benaderingswijze. Bij de localhost gaat het namelijk niet altijd rechtstreeks om de eigen pc. Deze heeft binnen het persoonlijke netwerk meestal een apart IP-adres zoals 192.168.0.1. Het adres waarmee je op internet surft, is weer een ander adres en wordt meestal verstrekt door de internetprovider. Dit adres is vaak dynamisch. Er wordt over een localhost gesproken als er op de eigen computer een server wordt gebruikt.

Dit betekent dus dat de term alleen wordt gebruikt in de context van netwerken. ‘Localhost’ is daarbij niet alleen de aanduiding voor de virtuele server, het is ook de domeinnaam van die server. Net als .test, .example of .invalid is ook .localhost een topleveldomein dat gereserveerd is voor documentatie- en testdoeleinden. Wanneer je probeert het domein op te roepen, wordt er een loopback geactiveerd. Als je dus in de browser http://localhost invoert, wordt de aanvraag niet via de router naar het internet doorgestuurd, maar blijft deze in het eigen systeem. Localhost heeft dan ook het IP-adres 127.0.0.1, dat naar de server op de eigen computer verwijst.


127.0.0.1 – hoe werkt een loopback?

IP-adressen worden binnen een netwerk gebruikt zodat de deelnemers onderling kunnen communiceren. Elke deelnemer in het netwerk heeft een eigen adres. Gegevenspakketten die via TCP/IP worden verzonden, kunnen dankzij dit systeem de juiste bestemming bereiken. Het protocolpaar Transmission Control Protocol (TCP) en Internet Protocol (IP) is één van de steunpilaren van het internet. Behalve voor het internet wordt TCP/IP echter ook in lokale netwerken gebruikt. Het internetprotocol is er bij de overdracht verantwoordelijk voor dat men met behulp van het IP-adres en het subnetmasker deelnemers in een netwerk kan adresseren.

Het verstrekken van openbare IP-adressen (dat zijn de adressen die men via het internet kan bereiken) wordt geregeld door een internationale organisatie, genaamd Internet Corporation for Assigned Names and Numbers (ICANN). De ICANN is ook verantwoordelijk voor het Domain Name System (DNS), dus voor het toekennen van domeinnamen. Bepaalde adresbereiken zijn gereserveerd voor bijzondere doeleinden, bijv. het bereik van 127.0.0.0 tot 127.255.255.255. De vraag is waarom precies dit bereik is gekozen. Exacte informatie daarover is er niet, maar er is wel een antwoord op te bedenken.

Tot de jaren ‘90 van de vorige eeuw waren de IP-adressen binnen het internet ingedeeld in verschillende klassen. De eerste klasse (Class A) begon met 0.0.0.0 (dit adres is eveneens gereserveerd) en eindigde met 127.255.255.255. 127 is dus het laatste blok binnen het Class A-netwerk. Deze prominente plaats zou de reden voor de keuze kunnen zijn geweest.

Binnen dit adresbereik kan een localnet worden opgebouwd. Het bijzondere aan dit adresbereik is echter niet alleen dat het door de ICANN is gereserveerd, maar ook dat de IP-adressen erin niet eenmalig zijn verstrekt, zoals dat normaal het geval is. Hoe kan dit?

Feit: Onder IPv6 is het adres ::1 gereserveerd voor loopbacks.

Zodra je bijvoorbeeld in je browser een IP-adres (of de desbetreffende domeinnaam) invoert, zendt de router je aanvraag via het internet naar de juiste server. Op die manier beland je op de startpagina van Google wanneer je 172.217.0.0 invoert. Bij 127.0.0.1 ligt het echter anders, want de aanvragen aan dit adres worden niet naar het internet gestuurd. TCP/IP herkent al aan het eerste blok (127) dat je niet iets naar het internet wilt zenden, maar juist naar jezelf verwijst. Daarom wordt de loopback geactiveerd.

Feit: Omgekeerd laat het protocol ook geen aanvragen van buitenaf toe die aan 127.0.0.1 zijn gericht. Hackers zouden immers zo kunnen proberen het systeem binnen te sluipen. Paketten met gereserveerde IP-adressen zoals 127.0.0.1 die openbaar op het internet opduiken, worden ook wel Martian Packets genoemd.

Er wordt een loopback device aangemaakt, om de terugverwijzing naar de eigen computer in goede banen te leiden. Dit is een virtuele interface. Deze wordt volledig via het besturingssysteem tot stand gebracht. Op Unix-systemen heet de interface Io of lo0. Op deze systemen kunnen ze ook via de opdracht ifconfig worden weergegeven. Onder Windows luidt de vergelijkbare opdracht ipconfig.

Feit: Als men de techniek onafhankelijk van de localhost beschouwt, kan een loopback ook analoog tot stand worden gebracht: via communicatieschakels kan zo worden vastgesteld of de weg die het signaal neemt alsook de ontvangst van het signaal correct zijn.


Waarvoor gebruikt men de localhost?

Ontwikkelaars gebruiken de localhost voor het testen van programma’s en webtoepassingen. Ook netwerkbeheerders kunnen de loopback gebruiken om de netwerkverbindingen te testen. Een andere praktische toepassing van localhost is het Hosts-bestand, waar men de loopback kan gebruiken om schadelijke websites te blokkeren.


Voor testdoeleinden

De toepassing localhost wordt vooral in het kader van webservers gebruikt en bij het programmeren van toepassingen die via internet moeten communiceren. Bij het ontwikkelen is het van belang te testen of de toepassing ook bij toegang via internet functioneert zoals gepland. Andere functies kunnen pas worden uitgevoerd als de desbetreffende bestanden op het internet te vinden zijn. Het maakt bijvoorbeeld verschil uit of je een HTML-document gewoon op je pc opent of op een server laadt en het daar opent. Maar het is nooit zinvol een onaf product uit te brengen. Daarom gebruiken ontwikkelaars de loopback. Programmeurs kunnen zo een verbinding simuleren, maar omzeilen de omweg via het netwerk: de verbinding blijft volledig binnen het eigen systeem.

Een ander voordeel van het gebruik van localhost voor testdoeleinden is de snelheid. Als je een aanvraag via het internet verstuurt, duurt dit doorgaans langer dan 100 milliseconden. Als je een ping aan localhost stuurt, duurt de overdracht maximaal één milliseconde. Met deze techniek kun je ook nagaan of het internetprotocol correct geïmplementeerd is. Om dit zelf te testen, hoef je alleen de prompt (Windows) of de terminal (Unix/Mac) te openen en de Ping-opdracht te gebruiken. Deze kun je ofwel naar het domein localhost verzenden of rechtstreeks naar het IP-adres:

ping localhost

ping 127.0.0.1

Wanneer je een eigen testserver op je pc wilt configureren om deze via localhost aan te spreken, moet je een daarvoor bestemde software installeren. Over het algemeen is het mogelijk elke gangbare webserver ook op de eigen computer te laten draaien. Er bestaat echter ook speciale software die juist op het gebruik als localhost gericht is. Een voorbeeld hiervan is XAMPP. Hoe je de testserver XAMPP op je localhost instelt, wordt bij STRATO stap voor stap toegelicht.


Om websites te blokkeren

De localhost speelt ook een rol in het Hosts-bestand. Dit bestand is in principe een voorganger van het Domain Name System (DNS). Hierin kunnen IP-adressen aan de bijbehorende domeinen worden toegewezen. Als je het adres van een website in de browser invoert, moet het domein in een IP-adres worden vertaald. Vroeger werd hiervoor het Hosts-bestand gebruikt. Tegenwoordig wordt echter meestal het Global DNS gebruikt. Het bestand is desalniettemin nog in de meeste besturingssystemen aanwezig. Onder Windows vind je dit bestand onder \system32\drivers\etc\hosts; bij macOS en andere Unix-systemen onder /etc/hosts.

Als je zelf nog geen wijzigingen in het bestand hebt aangebracht, bevat het bestand waarschijnlijk slechts twee vermeldingen:

127.0.0.1 localhost

::1 localhost

Hiermee is ervoor gezorgd dat de naamomzetting voor de localhost niet via het internet moet verlopen. Men kan het bestand echter ook gebruiken om bepaalde websites te blokkeren. Hiervoor neem je de te blokkeren website op in de lijst en wijs je het IP-adres 127.0.0.1 toe aan het domein. Als jijzelf – of bijvoorbeeld een schadelijk script – probeert het geblokkeerde domein op te roepen, kijkt de browser eerst in het Hosts-bestand of dit domein hier vermeld is. Een andere mogelijkheid is het IP-adres 0.0.0.0 te gebruiken.

De browser probeert dan het desbetreffende document (de website) op de server op te roepen onder 127.0.0.1. Dit document zal hij echter hoogstwaarschijnlijk niet vinden, want het opgevraagde bestand bevindt zich niet hier. Als je echter een eigen testserver hebt geconfigureerd, kan het zijn dat de browser een home.html vindt, wat je eigen bestand is. Als je geen testserver hebt geconfigureerd, verschijnt in plaats van de opgevraagde website een foutmelding. Deze techniek kan ook worden gebruikt om de weergave van reclame op het gehele systeem uit te schakelen. Om niet elke vermelding handmatig te moeten invoeren, kun je op internet ook handige uitgeschreven en regelmatig aangevulde hosts-bestanden vinden.

Opmerking: Het Hosts-bestand kan een grote invloed hebben op de veiligheid bij het surfen. Het bestand is weliswaar geschikt om schadelijke websites te blokkeren, maar criminelen kunnen op dezelfde manier ook schadelijke vermeldingen toevoegen. Daarom moet je erop letten dat je geen ongecontroleerde vermeldingen van andere websites overneemt en ook dat er geen malware meekomt die zonder dat je het weet zulke vermeldingen uitvoert.

Bij STRATO lees je natuurlijk meer over dit thema; zo kan je bijleren wat een floating IP is, wat de gevaren van IP-spoofing zijn of waarom IPv6 voordelen biedt.