Van A naar B: zo werken IP-adressen
Wanneer je iemand wilt bellen, heb je een telefoonnummer nodig. Stuur je een brief, dan kun je niet zonder postadres. Dit geldt ook wanneer je een webserver of een of ander netwerkapparaat wilt bereiken. Zonder (netwerk)adres kom je letterlijk nergens.
Na het lezen van dit artikel weet je alles over het IP-adres:
- Hoe een IP-adres opgebouwd wordt
- Het verschil tussen een publiek en privaat IP-adres
- Wat DHCP en (D)DNS met het IP-adres te maken hebben
Lees zeker ook: Sesam, open u! Kom alles te weten over netwerkpoorten
Als je een website bezoekt of een bestand van je NAS-apparaat wilt opvragen, moet er zowel voor internet als voor je thuisnetwerk een manier zijn om een apparaat eenduidig te identificeren. Dit gebeurt (meestal) met behulp van IP-adressen. We leggen eerst uit hoe een IP-adres is opgebouwd en hoe de adressering werkt, en bekijken daarna enkele belangrijke IP-adrestypes.
IP-adres
Een IP-adres bestaat uit vier getallen, gescheiden door punten, bijvoorbeeld 192.168.1.100. Elk getal kan variëren van 0 tot 255, waardoor het bereik van IP-adressen loopt van 0.0.0.0 tot 255.255.255.255. Dit levert 256×256×256×256 adressen op, oftewel 256⁴ of 2³², wat neerkomt op 4.294.967.296. Meer dan 4 miljard adressen dus, waarvan circa 5% gereserveerd is (zie ook het kader ‘Opbouw IP-adressen’).
IP-adressen worden niet zomaar toegekend, maar toegewezen door het IANA (Internet Assigned Numbers Authority), een onderdeel van Amerikaanse non-profitorganisatie ICANN (Internet Corporation for Assigned Names and Numbers).
Meer dan 4 miljard IP-adressen: het lijkt meer dan het is.
IP-adressering
‘IP’ in IP-adres staat voor Internet Protocol: een set regels die het formaat bepaalt van gegevens die via een netwerkapparaat over internet of een lokaal netwerk worden uitgewisseld. Je kunt het IP-protocol zien als een taal waarmee elke computer met een andere kan communiceren, op basis van IP-adressen. Deze adressering verloopt grotendeels op de achtergrond en gaat ongeveer als volgt.
Je pc verbindt eerst met een netwerk dat met internet is verbonden en dat je pc toegang tot internet verleent. Bij een thuis-pc is dat netwerk normaliter dat van je internetprovider (Internet Service Provider, ISP). Bij een werk-pc is dat wellicht het bedrijfsnetwerk. Het netwerk krijgt een uniek IP-adres van de ISP, die daarvoor uit een grote adressenpool kan putten. Deze werd door het IANA aan de ISP toegewezen, weliswaar via een regionale internet registry (kortweg RIR; in Europa is dit het RIPE NCC, Amsterdam).
Alle internetactiviteit (upstream) die je vervolgens onderneemt, zoals het bezoeken van een website of het benaderen van bestanden, gaat via het netwerk van je ISP, en deze stuurt netjes alle responses (downstream) terug naar je eigen netwerk op basis van je IP-adres.
RIPE NCC is een van de vijf mondiale RIR’s (beeld: Wikipedia, CC BY-SA 3.0).
Publiek IP-adres
Het IP-adres dat door je internetprovider aan je netwerk wordt toegekend, moet van buitenaf via internet bereikbaar zijn om data te kunnen (terug)sturen. Dit noemen we een extern of publiek IP-adres. Om het adres van je eigen netwerk te weten, kun je naar www.whatsmyip.com of www.iplocation.com surfen. Beide sites vermelden ook (de locatie van) je ISP.
De kans is reëel dat je publieke IP-adres na een tijd verandert. Dit komt omdat een internetprovider de meeste klanten een dynamisch IP-adres toekent (via DHCP, zie ook de paragraaf ‘IP-configuratie’) dat altijd kan wijzigen, bijvoorbeeld nadat je het modem hebt uit- en ingeschakeld. Een voordeel van een wisselend IP-adres is dat het iets moeilijker wordt in je netwerk in te breken. Een nadeel is dat het ook voor jezelf lastiger wordt een eigen server in je netwerk van buitenaf te bereiken (lees meer in de paragraaf ‘DDNS’).
Het publieke IP-adres van ons netwerk en de internetprovider waarmee we verbonden zijn.
Privaat IP-adres
Je weet nu hoe je het publieke IP-adres van je netwerk kunt opvragen, maar hoe zit het met de IP-adressen van apparaten binnen dit netwerk? Ook die moeten tenslotte over een uniek IP-adres beschikken. Op een Windows-pc kun je dit IP-adres opvragen via de Opdrachtprompt met het commando ipconfig. Je leest het IP-adres af bij de actieve netwerkadapter, achter IPv4 Address. Het interne IP-adres van je router staat vermeld achter Default Gateway.
Om snel de IP-adressen van alle apparaten op je netwerk te zien, moet je bij je router zijn. Typ het IP-adres van je router in de adresbalk van je browser, meld je aan en open een sectie als Attached Devices of Connected Clients. Deze IP-adressen zijn uniek binnen jouw netwerk, maar de kans is groot dat dezelfde IP-adressen ook op veel andere lokale netwerken worden gebruikt. We noemen dit interne of private IP-adressen. Ze kunnen niet worden doorgegeven door een router en zijn daarom niet bereikbaar vanuit een ander netwerk. Ze werden door het IANA vastgelegd en liggen binnen de volgende adresbereiken: 10.0.0.0 tot 10.255.255.255, 172.16.0.0 tot 172.32.255.255 en – vooral ook voor thuisnetwerken – 192.168.0.0 tot 192.168.255.255.
Stel, je bezoekt een website met je pc met het interne IP-adres 192.168.0.138. Via je router, die met het netwerk van je internetprovider is verbonden, wordt je publieke IP-adres doorgegeven en alle antwoorden keren terug naar dit publieke adres. Je router houdt ondertussen in een zogeheten NAT-tabel (Network Address Translation) bij welke pc de aanvraag heeft gedaan, zodat de antwoorden naar de juiste pc (in ons voorbeeld 192.168.0.138) doorgestuurd kunnen worden.
Je router somt de private IP-adressen op van de aangesloten netwerkapparaten.
IP-configuratie
Voor wie zich afvraagt hoe netwerkapparaten aan een uniek intern IP-adres komen: dit kan op twee manieren. Je kunt dit zelf instellen of het overlaten aan de router via zijn DHCP-service (Dynamic Host Configuration Protocol).
Op een Windows 11-pc kun je dit als volgt controleren en instellen. Start het Configuratiescherm op en ga via Netwerk en internet naar het Netwerkcentrum. Onder De actieve netwerken weergeven lees je de naam van je netwerkverbinding af. Klik aan de linkerkant op Adapterinstellingen wijzigen, klik met rechts op de actieve netwerkverbinding en kies Eigenschappen. Zoek naar Internet Protocol versie 4 (TCP/IPv4), selecteer dit en kies Eigenschappen. Als Automatisch een IP-adres laten toewijzen is ingesteld, zorgt de DHCP-service van je router voor de adrestoewijzing. Je kunt dit ook zelf doen door Het volgende IP-adres gebruiken te selecteren en een statisch, maar binnen je netwerk wel uniek IP-adres, Subnetmasker en Standaardgateway (het interne IP-adres van je router) in te vullen. Meer over het subnetmasker lees je in het kader ‘Opbouw IP-adressen’.
Je kunt ook zelf het IP-adres van een netwerkapparaat instellen.
Opbouw IP-adressen
Je weet nu dat een IP-adres uit vier getallen van elk 0 tot 255 bestaat, maar dit gebeurt niet willekeurig. Een IP-adres bestaat namelijk uit twee delen. Neem bijvoorbeeld het adres 192.168.0.138 met het subnetmasker 255.255.255.0, zoals gebruikelijk is in thuisnetwerken. Dit masker geeft aan dat de eerste drie getallen het netwerkadres vormen en het laatste getal is het hostadres. Binnen dit netwerk zijn dus maximaal 256 hosts oftewel netwerkapparaten mogelijk (van 0 tot 255), maar in de praktijk zijn dit er slechts 254, omdat 0 en 255 gereserveerd zijn.
Stel dat je binnen je netwerk ongeveer 300 unieke IP-adressen nodig hebt, dan kun je het subnetmasker instellen op 255.255.254.0, omdat je dan 512 (verminderd met 2 gereserveerde) hostadressen hebt. Dit wordt duidelijk als je het masker in binaire vorm noteert: 11111111.11111111.11111110.00000000. De 23 1’en geven het netwerk-id aan en de 9 0’en de host-id, wat dus 29 oftewel unieke 512 hosts toelaat.
Een subnetmasker wordt vaak in de zogeheten CIDR-notatie weergegeven (Classless Inter-Domain Routing). In ons voorbeeld wordt dit dan 255.255.254.0/23, waarbij de netwerkprefix 23 het aantal bits voor het netwerkadres aangeeft.
Handig weetje: je kunt de optie Programmeur in de Rekenmachine van Windows gebruiken om met decimale en binaire getallen te rekenen.
Een overzicht van de IPv4 CIDR-adressering (ons voorbeeld is rood omkaderd).
Url’s en hostnamen
Al deze kennis over IP-adressering is dan wel interessant, maar de kans is groot dat je zelf niet eerder een IP-adres in je browser hebt ingetikt. Daarvoor gebruik je tenslotte altijd een url (https://www.site.nl/index.html?lang=nl). Hoewel je er eigenlijk niets van merkt, wordt ook dan onderliggend met IP-adressen gewerkt.
De url in ons voorbeeld bevat vier delen: https:// (het netwerkprotocol), www.site.nl (de hostnaam), index.html (de specifieke bron of pagina op de server) en ?lang=nl (extra parameters zoals een zoekstring).
Het belangrijkste deel om te weten welke pagina de browser moet openen, is de hostnaam. Intern moet deze naam hiervoor eerst worden omgezet naar het bijbehorende IP-adres en dat doet een DNS-server (Domain Name System), tenzij dit adres zich nog in het cachegeheugen van je browser, besturingssysteem of router bevindt. Normaliter zorgt de DNS-server van je internetprovider daarvoor, maar als het nodig is, geeft deze het verzoek door aan een hiërarchische keten van DNS-servers tot het juiste IP-adres is gevonden. Via je internetprovider wordt dit adres dan naar je browser teruggekoppeld.
Je kunt zo’n DNS-verzoek bekijken door in de Opdrachtprompt het commando nslookup <hostnaam> uit te voeren, zoals nslookup www.dig.nl. Of geef op Linux in: dig <hostnaam>. Met dig <hostnaam> +trace kun je de opeenvolgende stappen in de hiërarchische DNS-bevraging bekijken.
Een DNS-bevraging: links het korte antwoord; rechts nagenoeg het volledige antwoord.
DDNS
Als je de paragrafen ‘Publiek IP-adres’ en ‘Privaat IP-adres’ hebt gelezen, begrijp je waarom het lastig kan zijn om vanaf een andere locatie via het internet een eigen server (op een pc of NAS) in je thuisnetwerk te bereiken. Want eerst moet je het (dynamisch toegekende) publieke IP-adres van je router of netwerk bereiken, maar wat als je internetprovider dat inmiddels heeft gewijzigd?
Om dit probleem te omzeilen, kun je een DDNS-service gebruiken (dynamisch DNS), zoals het gratis Duck DNS (meld je aan met X of Google). Hiermee koppel je een hostnaam, zoals mijnservice.duckdns.org, aan het actuele publieke IP-adres van je netwerk. Vul hier gewoon je hostnaam in en bevestig met add domain. Ga vervolgens naar www.duckdns.org/install.jsp, selecteer je hostnaam en klik op het gewenste installatietype, zoals windows-gui. Volg de instructies op om de software (DuckDnsInst.exe) van www.etx.ca te downloaden en te configureren. Deze DuckDNS Updater zorgt ervoor dat elke wijziging aan je publieke IP-adres meteen aan de dienst wordt gemeld, zodat de koppeling tussen de hostnaam en het IP-adres intact blijft.
Via de hostnaam kun je nu al (het publieke IP-adres van) je router bereiken. Om ervoor te zorgen dat de router je aanvraag netjes doorstuurt naar (het interne IP-adres van) je server, gebruik je op je router de functie ‘poortdoorschakeling’. In het artikel Sesam, open u! Kom alles te weten over netwerkpoorten hebben we dit uitgebreid toegelicht, en op www.portforward.com vind je instructies voor talrijke routers.
Verbind een hostnaam aan je IP-adres en laat een updater deze koppeling intact houden.
VPN
Uit dit artikel is je ook duidelijk geworden dat hosts die je op het internet bezoekt, zoals webservers, over je publieke IP-adres moeten beschikken om op je verzoeken te kunnen reageren. Misschien voel je je hier niet altijd comfortabel bij als het om je privacy gaat, vooral omdat je internetprovider technisch gezien je identiteit aan dat publieke IP-adres kan koppelen.
Wil je liever niet je eigen IP-adres bekend maken, dan kun je een VPN (Virtual Private Network) gebruiken. Bij de meeste gratis diensten heb je te maken met snelheidsbeperkingen of restricties in de hoeveelheid te gebruiken data. Betaalde diensten zijn doorgaans betrouwbaarder en kosten ongeveer 5 euro per maand. Hiermee zet je een versleutelde verbinding op met een speciale VPN-dienst, en het is deze server die zijn IP-adres bekend maakt aan de bezochte websites. De antwoorden worden dan versleuteld naar jouw pc teruggestuurd. Je internetprovider weet dat je een VPN-dienst gebruikt, maar heeft geen inzage in wat je doet of waar je naartoe surft. Alleen de VPN-provider weet dit, maar als het goed is, houdt deze geen logs bij. Vergeet dit niet te checken!
Lees ook: Surf anoniem met de gratis VPN-dienst van Opera
Bij de meeste VPN-diensten kun je zelf de locatie van de VPN-server kiezen.
IPv6
In het artikel zijn we uitgegaan van IPv4-adressen, de vierde versie van het IP-protocol dat al meer dan 40 jaar in gebruik is. IPv4 gebruikt 32-bit adressen (4x8 bits), wat neerkomt op ruim 4 miljard unieke adressen. Dankzij interne adressen en NAT-routers heeft men de levensduur kunnen rekken, maar met miljarden apparaten op het internet zijn deze adressen bijna op.
IPv6 gebruikt daarom 128-bits adressen, zoals 2002:0db8:0000:0000:34f4:0000:0000:F3dd, wat neerkomt op een getal met 39 cijfers in decimale vorm, en theoretisch voldoende is om elk klein object op aarde een uniek adres te geven. Een ander voordeel van IPv6 is dat apparaten dankzij de automatische configuratie zichzelf eenvoudig een adres kunnen toewijzen. Bovendien heeft IPv6 ingebouwde end-to-endbeveiliging, zoals IPsec, zonder dat NAT nodig is. Helaas hebben we hier niet de ruimte om dieper in te gaan op de implementatie van IPv6.
De typische opbouw van een 128-bits IPv6-adres.