IP-adressen raken op: Alles over IPv6
Het internetprotocol is een van de bouwblokken van het internet. Het regelt dat er wereldwijd gecommuniceerd kan worden tussen apparaten die elk een uniek ip-adres hebben. Die ip-adressen zijn hun identificatie, maar vormen ook meteen de reden dat we nu over moeten van IPv4 naar IPv6: de adressen zijn namelijk op. Maar wat is IPv6 precies en wat betekent het voor het thuisnetwerk?
Het internet is een ongekend succes geworden, veel groter dan de ontwerpers ooit hebben voorzien. De meeste van hun ontwerpbeslissingen staan dan ook nog fier overeind, op één na: de keuze om 32 bit te gebruiken voor de adressen van alle systemen in het netwerk.
Met 32 bit zijn er maximaal 232 (4.294.967.296) unieke ip-adressen mogelijk. Dat lijkt veel, maar is minder dan er mensen op aarde zijn en nog veel minder dan het aantal apparaten dat verbinding met het internet wil maken. De oplossing zit in het vergroten van de adresruimte van 32 bit bij versie 4 van het internetprotocol (IPv4) naar 128 bit bij versie 6 (IPv6).
Het beschikbare aantal ip-adressen neemt hierdoor toe van 232 naar 2128, oftewel van ruim 4 miljard bij IPv4 naar 4 miljard × 4 miljard × 4 miljard × 4 miljard bij IPv6. Dat zijn 340.282.366.920.938.463.463.374.607.431.768.211.456 (of kortweg 340 sextiljoen) unieke adressen.
©PXimport
De ruim 4 miljard ip-adressen van IPv4 zijn op
-
Hoe belangrijk is het internetprotocol?
Het OSI-model is een schematische weergave van datacommunicatie. Het onderscheidt zeven lagen met elk eigen functionaliteit. De onderste twee lagen zijn het fysieke netwerk en de datalinklaag, zeg maar de kabels en het signaal dat daarover gaat. Op dit niveau handelen netwerkswitches het verkeer af op basis van het MAC-adres van elke netwerkkaart. Deze adressen zijn door de hardware bepaald en alleen bekend binnen het eigen netwerk.
Om data over meerdere netwerken te versturen, is een logische adressering nodig met zelf te configureren, wereldwijd unieke adressen. Deze functionaliteit levert het internetprotocol op laag 3. Het maakt netwerkverkeer routeerbaar, wat wil zeggen dat informatie naar elk ander ip-adres gestuurd kan worden én terug. De router, een ‘laag3-apparaat’, speelt hierbij een belangrijke rol.
Hexadecimaal
Zo eenvoudig als het klinkt, zo ingrijpend is het vergroten van de adresruimte in werkelijkheid. Niet alleen alle apparaten moeten leren om te gaan met IPv6-adressen, zelf zijn we ook zeer vertrouwd geraakt met IPv4-adressen. De 32 bits van een IPv4-adres worden doorgaans geschreven als vier blokken van elk 8 bit. En omdat je met 8 bit 256 verschillende waarden kunt aanduiden, levert dat vier keer een reeks op van 0 tot 255. In de doc-decimaal-notatie zijn dat alle combinaties tussen 000.000.000.000 en 255.255.255.255. Bijvoorbeeld 8.8.8.8 van de DNS-server van Google en 104.110.191.58 van nieuwssite Nu.nl.
Een IPv6-adres van 128 bit uitschrijven, zoals we van IPv4 gewend zijn, is praktisch onmogelijk. IPv6-adressen worden daarom niet decimaal, maar hexadecimaal genoteerd als 8 blokken van elk 16 bit (vier tekens), en tussen elk blok een dubbele punt. Hexadecimaal betekent dat we van de decimale tien cijfers (0 tot en met 9) overgaan naar zestien cijfers. Hexadecimaal voegt er ‘a’ (= 10) tot en met ‘f’ (= 15) aan toe. Zo is 2001:0db8:0000:0000:34f4:0000:0000:f3dd dus een geldig IPv6-adres, maar niet makkelijk te onthouden of even te pingen.
©PXimport
Eigenlijk nog minder adressen
Het tekort aan IPv4-adressen wordt versterkt doordat 7 procent van de 4,5 miljard mogelijke adressen in gebruik is voor specifieke doelen. Zo werken de 20 miljoen ip-adressen in de reeksen 10.0.0.0 – 10.255.255.255, 172.16.0.0 – 172.16.255.255 en 192.168.0.0 – 192.168.255.255 alleen binnen een lokaal netwerk. Deze adressen, bekend van thuisnetwerken, worden niet op internet gerouteerd.
Dit geldt ook voor 0.0.0.0 – 0.255.255.255 en 127.0.0.0 – 127.255.255.255, die voor interne communicatie worden gebruikt, en de maar liefst 268 miljoen adressen in de reeks 224.0.0.0 – 239.255.255.255, die in gebruik zijn voor multicast-communicatie zoals streamingdiensten, waarbij netwerkverkeer van één naar velen gaat.
Van de 4,5 miljard IPv4-adressen zijn er maar 3,7 miljard echt bruikbaar
-
Versimpelde notatie
Om de IPv6-notatie te vergemakkelijken, is een aantal regels afgesproken om vooral het aantal nullen te beperken. Allereerst worden in elk blok de voorloopnullen weggelaten. Het blok :0db8: wordt dus geschreven als :db8:.
Voor blokken met alleen nullen gelden nog verdere regels. Staan er vanaf links gezien meerdere blokken met alleen nullen, dan worden deze helemaal weggelaten. Er worden dan alleen twee dubbele punten genoteerd, ook wanneer het dus drie of vier blokken met nullen betreft. Dat lijkt verwarrend, maar omdat het totaal aantal blokken altijd acht is, zie je direct hoeveel blokken met alleen nullen zijn weggelaten.
Dit samenvoegen en weglaten gebeurt enkel met de eerste aansluitende blokken met alleen nullen. Staan er verder naar rechts ook nog blokken met alleen nullen, dan wordt elk daarvan apart genoteerd als :0:.
©PXimport
IPv6-adressen zijn niet alleen langer, ze zijn ook complexer in gebruik
-
Het eerdergenoemde IPv6-adres 2001:0db8:0000:0000:34f4:0000:0000:f3dd wordt dus uiteindelijk geschreven als 2001:db8::34f4:0:0:f3dd. De nullen aan het begin van elk blok zijn weggelaten, het derde en vierde blok met alleen nullen zijn geschreven als twee keer een dubbele punt, en de blokken zes en zeven die ook alleen nullen bevatten, zijn elk geschreven als :0:.
Omgekeerd werkt het precies zo. Blokken met minder dan vier tekens worden aangevuld met nullen. Van 2001:db8::34f4:0:0:f3dd heeft het tweede blok maar drie tekens, daar moet dus een 0 voor. Dan staan er twee dubbele punten. Omdat het adres uit acht blokken bestaat en er hier maar zeven staan, weet je dat de :: staat voor twee blokken met elk vier nullen.
Dan volgt er nog twee keer :0: en ook daarvan weet je dat er alleen nullen zijn weggelaten. Elk daarvan vervang je door een blok met vier nullen. En zo levert 2001:db8::34f4:0:0:f3dd toch weer het adres 2001:0db8:0000:0000:34f4:0000:0000:f3dd op.
©PXimport
Maar we hebben toch NAT?
Network Address Translation (NAT) is een verzameling technieken om adresinformatie in datapakketjes te veranderen. De router gebruikt NAT wanneer die de niet-routeerbare ip-adressen van het thuisnetwerk bij uitgaande verbindingen vervangt door het publieke ip-adres dat je van de internetprovider krijgt. Veel systemen delen dan één IPv4-adres.
Toch is NAT geen oplossing voor het tekort aan IPv4-adressen, want daarvoor heeft NAT te veel beperkingen. Zo kan niet elke netwerktoepassing er even goed mee overweg en is er ook geen echte end-to-end-verbinding tussen systemen. NAT maakt internet ook onveiliger, doordat individuele gebruikers niet meer te onderscheiden zijn. Dat maakt het opsporen en blokkeren van bijvoorbeeld fraudeurs en overlastgevers onmogelijk.
Kiest een internetprovider er vanwege de schaarste aan IPv4-adressen voor om zelf NAT toe te passen, dan verdwijnen grote groepen gebruikers achter één ip-adres. De kwaliteit en snelheid van de internetverbinding zullen hierdoor drastisch afnemen, terwijl de provider de kosten die hij hiervoor maakt alleen maar kan doorberekenen aan de klanten. Dit maakt IPv6 de enige echte oplossing voor de beperkingen van IPv4.
©PXimport
IPv6 betekent het einde van Network Address Translation
-
Het subnetmasker
In het geval van IPv4 hoort bij elk adres een netwerkmasker. Dit ligt als het ware over het IPv4-adres heen en laat zien welk deel daarvan het netwerk aanduidt en welk deel het apparaat. Veel thuisnetwerken hebben subnetmasker 255.255.255.0. Daarbij geven de eerste 24 bits van het IPv4-adres het netwerk aan en blijven er 256 ip-adressen over voor het netwerk. In plaats van het subnetmasker uit te schrijven, wordt ook wel het aantal bits genoemd. 255.255.255.0 is dan /24, terwijl /8 betekent dat alleen het eerste groepje van drie cijfers het netwerkdeel aanduidt.
IPv6 gebruikt dezelfde CIDR-notatie. Daarbij wordt alleen niet van een subnetmasker gesproken, maar van een prefix. Krijg je nu bij een internetverbinding doorgaans één IPv4-adres, met IPv6 verandert dit radicaal. De internetprovider geeft elke IPv6-klant een prefix van doorgaans /48 (KPN) of /56 (Ziggo). Dit levert enorme aantallen IPv6-adressen op. Bij /48 zijn het alleen al 65.536 lan-segmenten, waarbij elk segment /64 oftewel 18.446.744.073.709.551.616 IPv6-adressen groot is. En al deze IPv6-adressen zijn routeerbaar en kunnen dus zonder NAT met elk ander systeem op het internet communiceren.
©PXimport
IPv6 op het thuisnetwerk
Bij IPv6 stopt de router met NAT. Naast andere belangrijke taken, zoals het controleren van de communicatie middels de firewallfunctie, gaat het apparaat voortaan daadwerkelijk routeren. Omdat de communicatie nu echt end-to-end wordt, betekent dit ook dat in de logging van de server op het internet voortaan het IPv6-adres van de pc of tablet op het thuisnetwerk staat, in plaats van dat ene publieke ip-adres waarachter alle thuisnetwerkapparaten schuilgingen.
Wil je zelf juist een service aanbieden vanaf het thuisnetwerk, dan gebeurt dit bij IPv4 en NAT middels portforwarding. Op de router wordt een netwerkpoort aangewezen waarop een binnenkomende netwerkstroom zich moet melden. Die wordt vervolgens doorverwezen naar een ip-adres (op het thuisnetwerk) dat aan die portforwarding gekoppeld is.
Met IPv6 vervalt portforwarding, maar dit wil niet zeggen dat er niets geconfigureerd moet worden. Op een goede router wordt net als bij IPv4 ook al het binnenkomend IPv6-verkeer standaard geblokkeerd. Om een service op het thuisnetwerk toegankelijk te maken vanaf het internet, moet je deze actie dus nog steeds expliciet toestaan. Alleen gebeurt dit bij IPv6 niet door portforwarding, maar door deze mogelijkheid rechtstreeks in de firewall te configureren en de verbinding naar het IPv6-adres van het betreffende systeem te openen.
Dat alle systemen met de komst van IPv6 onbeschermd toegankelijk zijn, is een van de hardnekkige sprookjes rond het nieuwe internetprotocol.
©PXimport
Een firewall zal ook elke binnenkomende verbinding naar een IPv6-adres blokkeren
-
Hoe ver zijn de providers?
Voor de internetproviders is de overgang naar IPv6 een enorm project. De uitrol naar eindgebruikers is daarvan de laatste fase. KPN biedt nagenoeg al zijn klanten inmiddels IPv6 en doet dat naast IPv4: dit wordt ‘dual-stack’ genoemd en is momenteel de meest toekomstvaste configuratie.
In vergelijking met KPN loopt Vodafone/Ziggo nog wat achter. Inmiddels is IPv6 in de helft van het vaste netwerk beschikbaar, al zijn er nog wel verschillen tussen de voormalige Ziggo- en UPC-gebieden. Actuele gegevens over IPv6 in Nederland en de mate van ondersteuning door de providers vind je via https://kwikr.nl/ipv6nl.
Meerdere adressen
Anders dan bij IPv4 heeft bij IPv6 elk systeem in het netwerk bijna standaard niet één, maar meerdere IPv6-adressen. Het eerste IPv6-adres is er zelfs al voordat IPv6 op het netwerk is geactiveerd. Dit is het link-lokaal-adres en dit begint altijd met fe80:. Het fe80-adresblok is gereserveerd voor link-lokaal unicast-netwerkadressering, niet-routeerbaar netwerkverkeer binnen het eigen netwerk.
Als er verder niets is geconfigureerd, wordt het deel van het ip-adres achter het eerste blok afgeleid van het MAC-adres van de netwerkkaart. De methode waarmee dit gebeurt, heet EUI-64 (Extended Unique Identifier). Het komt er in het kort op neer dat het MAC-adres van 48 bit in twee delen wordt opgeknipt, er wordt een extra blok FFFE ingevoegd en tot slot wordt de 7de bit van het MAC-adres omgedraaid. Deze bit staat bij een MAC-adres altijd op 0 en wordt nu dus veranderd in een 1.
Het hebben van een link-lokaal-adres is een vereiste voor IPv6 op elke netwerkverbinding. Dat geldt niet voor het tweede veelvoorkomende IPv6-adres, het Unique Local Address (ULA). Deze adressen lijken nog het meest op de private adressen van IPv4. Ze mogen vrij gebruikt worden en zijn niet centraal geregistreerd. Ze zijn routeerbaar, maar alleen binnen eigen netwerkomgevingen, niet op het grote internet.
Het derde adres is het global IPv6-adres en dit is het adres dat komt uit de prefix die wordt toegewezen door de internetprovider. Dit is het ‘echte’ IPv6-adres. Dit is er minimaal één, maar het kunnen er ook heel goed meer zijn.
De ULA-adressen zorgen ervoor dat communicatie binnen het netwerk blijft werken, ook als de global-adressering, die afhankelijk is van de toewijzing door de provider, faalt of niet beschikbaar is.
©PXimport
Bij IPv6 heeft elk systeem al snel meerdere ip-adressen
-
Ook DHCP verandert
De overgang naar IPv6 verandert ook de manier waarop systemen een ip-adres krijgen. Bij IPv4 worden in bedrijfsnetwerken ip-adressen meestal per systeem handmatig uitgegeven, terwijl thuis en op kleinere netwerken DHCP wordt gebruikt. Hierbij is er in het netwerk een DHCP-server actief, vaak een nevenfunctie van de router, die elk systeem dat verbinding maakt een ip-adres en het adres van de router geeft.
Omdat IPv6-netwerken veel groter zijn, is het handmatig toewijzen van ip-adressen praktisch ondoenlijk en zelfs ongewenst. Voor het thuisnetwerk wordt DHCPv6-PD de nieuwe standaard, waarbij de letters PD staan voor ‘prefix delegation’. De router in het thuisnetwerk vraagt aan de IPv6-DHCP-server van de internetprovider niet om een volledig adres, maar om een prefix. Zodra hij die heeft ontvangen, kan de thuisrouter uit die adresruimte van doorgaans 48 of 56 bit IPv6-adressen uitgeven aan de systemen op het thuisnetwerk, maar kan hij deze ook opdelen in meerdere kleinere IPv6-netwerken.
Hiervoor zijn in IPv6 meerdere technieken beschikbaar. Stateful Address Autoconfiguration lijkt nog het meest op DHCP zoals we dat nu kennen. De configuratie wordt verricht door een DHCPv6-server die behalve IPv6-adressen ook prefixen en zelfs adressen van DNS-servers kan meesturen.
Een tweede techniek is Stateless Address Autoconfiguration (SLAAC). Deze ligt bij thuisnetwerken meer voor de hand. De thuisrouter is dan niet meer een eigen DHCP-server, maar een DHCP-client van de DHCPv6-server van de internetprovider. De thuisrouter geeft geen IPv6-adressen uit, maar geeft slechts de prefix door die hij heeft ontvangen. Elk netwerkapparaat vult de prefix vervolgens aan volgens de EUI-64-methode.
De configuratie gebeurt dus voor een groot deel automatisch en er is geen centraal systeem dat bijhoudt welk systeem welk adres gebruikt. Een nadeel van SLAAC is dat er geen DNS-serveradressen mee worden gestuurd. De oplossing ligt vooral in combinaties van DHCP-technieken, maar dit is afhankelijk van de mogelijkheden van de router.
©PXimport
Apparatuur
Om gebruik te maken van IPv6 in het thuisnetwerk, moeten de apparaten in dat netwerk het natuurlijk ondersteunen. Voor een pc of notebook is dat geen probleem, net zomin als voor de meeste tablets en smartphones.
Het grootste probleem zijn apparaten met embedded software, zoals veel ‘slimme’ en IoT-apparaten. Zeker wanneer deze al wat ouder zijn, is de kans groot dat er geen nieuwe firmware of software is die eventueel ontbrekende IPv6-ondersteuning toevoegt. Dat is best ironisch, want juist de komst van grote aantallen van deze apparaten zorgden ervoor dat de IPv4-adressen opraakten.
Voorlopig blijft het probleem beperkt, doordat IPv4 en IPv6 nog lange tijd naast elkaar gebruikt zullen worden. Het naast elkaar gebruiken van twee verschillende netwerken wordt ook wel ‘dual-stack’ genoemd (zie kader: ‘Hoe ver zijn de providers?’). NAT blijft onverminderd actief voor al het IPv4-verkeer. Dit is eigenlijk de minst gunstige van alle mogelijke vormen van dual-stack.
©PXimport
Tijd om te beginnen
De meeste gebruikers zullen weinig merken van de overgang naar IPv6. Het is niet zoals met 5G dat het internet ineens sneller wordt en er nieuwe toepassingen ontstaan. IPv6 biedt niet echt nieuwe mogelijkheden, het is meer een noodzakelijke aanpassing van het internet om te blijven functioneren en te kunnen blijven groeien.
Technische gebruikers hebben baat bij IPv6 wanneer ze apparaten op het eigen netwerk, zoals een eigen NAS, webcam of IoT-apparaat, direct willen kunnen benaderen. Doordat IPv6 zonder NAT werkt, kan de firewall specifieker hiervoor worden geopend. Biedt de internetprovider inmiddels IPv6, dan is het tijd ermee aan de slag te gaan en te leren. Want IPv6 maakt vooral duidelijk hoezeer we verknocht zijn geraakt aan zijn voorganger.