To IPv6 or not: verschil tussen versies
| (7 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
| Regel 158: | Regel 158: | ||
==ICMPv6== | ==ICMPv6== | ||
ICMPv6 (Internet Control Message Protocol version 6) is het zenuwstelsel van IPv6. Waar ICMP bij IPv4 vaak werd gezien als een bijzaak (voornamelijk voor ping), is het bij IPv6 een absoluut essentieel onderdeel van het protocol. Zonder ICMPv6 werkt IPv6 simpelweg niet. | |||
Dit komt omdat ICMPv6 verantwoordelijk is voor veel meer dan alleen foutmeldingen; het regelt de volledige communicatie tussen buren op een netwerk via het Neighbor Discovery Protocol (NDP). | |||
'''Het proces:''' | |||
*RS (Router Solicitation - Type 133): Een host komt online en stuurt een ICMPv6-vraag: "Is hier een router?" | |||
*RA (Router Advertisement - Type 134): De router antwoordt met een ICMPv6-bericht: "Ja, ik ben hier, en dit is het netwerkadres (prefix)." | |||
Wat doet RA nu allemaal: | |||
'''De "Hulpvaardige" Router''' | '''De "Hulpvaardige" Router''' | ||
| Regel 192: | Regel 202: | ||
Voordeel: Maximale controle voor de beheerder (handig voor auditing of strikte firewall-regels). | Voordeel: Maximale controle voor de beheerder (handig voor auditing of strikte firewall-regels). | ||
====Vertaald naar PfSense | ===vlaggen=== | ||
Deze vormen worden bepaald aan de hand van de M en de O vlag: | |||
*M-vlag (Managed Address Configuration): | |||
**0: geen adres via DHCP6, met de prefix van het RA bericht wordt een GA gemaakt | |||
**1: vraag een adres via DHCP6 | |||
*O-vlag (Other Configuration) | |||
**0: geen extra configuratie (DNS) van een DHCP, zoek het zelf maar uit (maar wel RDNSS) | |||
**1: Vraag extra configuratie aan de DHCP | |||
===Vertaald naar PfSense=== | |||
PfSense heeft dit vertaald naar een aantal instellingen: | PfSense heeft dit vertaald naar een aantal instellingen: | ||
*'''Disabled''': RADVD will not be enabled on this interface: De router stuurt geen RA-berichten. Hosts moeten alles handmatig doen (niet aanbevolen). | *'''Disabled''': RADVD will not be enabled on this interface: De router stuurt geen RA-berichten. Hosts moeten alles handmatig doen (niet aanbevolen). | ||
| Regel 202: | Regel 222: | ||
==Oefening== | ==Oefening== | ||
Voor de cursus heb ik een aantal virtuele machines voorbereid en leg ik uit hoe alles in elkaar steekt. Als je deze tekst volgt zonder de uitleg probeer ik hieronder sumier uit te leggen wat je allemaal moet doen om te beginnen aan het labo. | |||
Ten eerste, ik ben een enorme fan van real life virtualisatie. Ik bedoel, ik virtualiseer altijd echt computers en routers. Dus gebruik virtual box, VMware workstation, Windows Hyper-V en zorg ervoor dat je hiermee leert werken. | |||
===Oefening 1=== | |||
*installeer een router (pfSense CE) met 1 interface gebridged naar je eigen netwerk en 1 interface naar een geïsoleerd netwerk (LAN segment) | |||
*installeer een client (bijvoorbeeld lubuntu) | |||
*configureer via de client de firewall en configureer een fix IPv6 netwerkadres op alle clients in het netwerk fc00::1 voor de router en fc00::10 voor de client | |||
*test of je kan pingen van de router naar de client en van de client naar de router | |||
*clone de client zodat je een tweede virtuele pc hebt. Vergeet niet om deze client een andere naam te geven. Geef deze tweede client het IPv6 address fc00::11 | |||
===Oefening 2=== | |||
*Zoek een Unique local radom adres generator (bv https://www.unique-local-ipv6.com/). Genereer hiermee een radom ULA en configureer dit adres als fix IPv6 op de LAN poort van pfSense. Neem als host ID een het oude IP adres dec in hex (just for fun). | |||
*Deconfigureer het fix adres op je twee virtuele clients en kijk wat er gebeurd als je zonder extra configuratie het IPv6 adres laat ophalen door de client. Hopelijk merk je dat je alleen een Logical Link adres (fe80::) gaat krijgen. | |||
==Praktijk== | ==Praktijk== | ||
| Regel 234: | Regel 266: | ||
Approximate round trip times in milli-seconds: | Approximate round trip times in milli-seconds: | ||
Minimum = 3ms, Maximum = 5ms, Average = 4ms | Minimum = 3ms, Maximum = 5ms, Average = 4ms | ||
=je schoolnetwerk IPv6 configureren= | =je schoolnetwerk IPv6 configureren= | ||
| Regel 263: | Regel 281: | ||
**voor de bedraade netwerken assisted of ... kiezen | **voor de bedraade netwerken assisted of ... kiezen | ||
=bijlages, referenties en oplossingen= | =bijlages, referenties en oplossingen= | ||
==websites== | |||
*Websites om je eigen IPv6 te checken: | |||
**https://test-ipv6.run/ | |||
**http://speedtestv6.tools.uebi.net/ | |||
**https://www.ipv6speedtest.eu/ | |||
*Websites om te checken of een domein IPv6 klaar is | |||
**https://ready.chair6.net/ | |||
*Websites om bij te leren | |||
**https://www.netacad.com/ | |||
*Hoe moet je VMware installeren | |||
**https://knowledge.broadcom.com/external/article/368734 | |||
==youtube== | |||
https://youtube.com/playlist?list=PL29aTNTLFPTrdX5zJ53S5ePoKi5PREJx1&si=1nStqFIHWZJkMlUi | |||
==oefeningen== | ==oefeningen== | ||
===IPv6=== | ===IPv6: schrijf zo kort mogelijk=== | ||
1: 2001:0db8:0000:0000:0000:ff00:0042:8329 => 2001:db8::ff00:42:8329 | |||
1 | De drie groepen 0000 worden vervangen door ::, de 2 nullen voor de 42 mogen ook weggelaten worden | ||
2 | |||
3 | 2: fe80:0000:0000:0000:0202:b3ff:fe1e:8329 => fe80::202:b3ff:fe1e:8329 | ||
4 | Typisch Link-Local adres met veel nullen in het midden. | ||
5 | |||
3: 0000:0000:0000:0000:0000:0000:0000:0001 => ::1 | |||
De ultieme verkorting; alle groepen nullen vallen weg. | |||
4: 2001:0db8:0001:0000:0000:ab00:0000:0001 => 2001:db8:1::ab00:0:0:1 | |||
"Regel: vervang de langste reeks nullen. :: bij de drie nullen achteraan mag ook, maar is minder efficiënt." | |||
5: 2001:0000:0000:a000:0000:0000:0000:0100 => 2001:0:0:a000::100 | |||
De a000 en 100 mogen hun nullen aan de rechterkant niet verliezen! | |||
===IPv6 schrijf volluit=== | |||
1 2001:db8:a:: | 1: 2001:db8:a::152 => 001:0db8:000a:0000:0000:0000:0000:0015 | ||
2 fe80::215:5dff:fe32:1dec fe80:0000:0000:0000:0215:5dff:fe32:1dec Typisch EUI-64 adres. Let op de extra 0 voor 215. | Er zijn 4 groepen zichtbaar, dus de :: bevat 4 groepen nullen. | ||
3 ff02::1:ff32:45 ff02:0000:0000:0000:0000:0001:ff32:0045 Belangrijk: 45 wordt 0045, niet 4500. | |||
4 2001:db8:85a3::8a2e:370:7334 2001:0db8:85a3:0000:0000:8a2e:0370:7334 Hier vervangt de :: twee groepen nullen. | 2: fe80::215:5dff:fe32:1dec => fe80:0000:0000:0000:0215:5dff:fe32:1dec | ||
5 :: 0000:0000:0000:0000:0000:0000:0000:0000 Het "unspecified address". Wordt vaak gebruikt als bronadres bij het opstarten. | Typisch EUI-64 adres. Let op de extra 0 voor 215. | ||
3: ff02::1:ff32:45 => ff02:0000:0000:0000:0000:0001:ff32:0045 | |||
Belangrijk: 45 wordt 0045, niet 4500. | |||
4: 2001:db8:85a3::8a2e:370:7334 => 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | |||
Hier vervangt de :: twee groepen nullen. | |||
5: :: => 0000:0000:0000:0000:0000:0000:0000:0000 | |||
Het "unspecified address". Wordt vaak gebruikt als bronadres bij het opstarten. | |||
Huidige versie van 5 mei 2026 om 23:59
IPv6 werd voor het eerst voorgesteld in 1995 en in 1998 werd de eerste versie door de IETF goedgekeurd. Het protocol is dus allesbehalve nieuw. Tijdens mijn studies werd al voorspeld dat het niet lang zou duren voordat IPv6 overal de standaard zou worden. In de praktijk bleef die doorbraak echter uit.
Dankzij technieken zoals NAT en DNAT raakten IPv4-adressen niet meteen uitgeput. IPv6 werd nauwelijks toegepast in LAN netwerken. Ondertussen zijn we twintig jaar verder en rijst de vraag: is de overstap naar IPv6 onvermijdelijk, en riskeren we de trein te missen als we nu niet instappen?
Vanuit die bezorgdheid ben ik mij dit jaar opnieuw gaan verdiepen in IPv6, met als centrale vraag of en in welke mate onze netwerken hier vandaag al op aangepast moeten worden.
Zonder te veel te spoilen, kan alvast meedelen dat de IPv4-adressen effectief opgebruikt zijn. De laatste vrije adressenblokken werden in 2019 verdeeld. Vandaag is het enkel nog mogelijk om IPv4-adressen te herverdelen of over te kopen. Dit gebeurt via een grijze markt die niet schaalbaar of duurzaam is (dit is een eindig verhaal).
In werkelijkheid wordt IPv6 vandaag al veel meer gebruikt dan vaak wordt aangenomen, maar deze evolutie verloopt grotendeels onzichtbaar. In 2025 verliep ongeveer 43% van al het internetverkeer via IPv6 ( ref ). Regionaal lopen de cijfers sterk uiteen. In hetzelfde rapport wordt vermeld dat Frankrijk, Duitsland en India een IPv6-adoptiegraad hebben van respectievelijk 80%, 75% en 74%. In België ligt de IPv6-adoptiegraad rond de 69% ( ref ).
Mobiele netwerken zijn al geruime tijd IPv6-first. Internetproviders zorgen er bovendien voor dat SOHO- en thuisnetwerken meestal als dual-stack functioneren, waarbij IPv4 en IPv6 naast elkaar worden gebruikt. Moderne webbrowsers maken gebruik van het Happy Eyeballs-algoritme om automatisch te bepalen of een website via IPv4 of IPv6 wordt bereikt. Zonder dat gebruikers het expliciet merken, verloopt vandaag dus al een aanzienlijk deel van het netwerkverkeer via IPv6.
De redenen waarom er na meer dan dertig jaar nog steeds IPv4-netwerken bestaan, zijn relatief eenvoudig te verklaren:
- IPv6 is in de eerste plaats een infrastructurele aanpassing. Het biedt geen directe nieuwe functionaliteiten en loste lange tijd geen acuut probleem op.
- Lokale netwerken hadden nooit een tekort aan IP-adressen. Dankzij de private adresruimtes uit RFC 1918 (10.0.0.0/8, 172.16.0.0/12 en 192.168.0.0/16) beschikten netwerkbeheerders over meer dan voldoende adresruimte.
- NAT wekt de indruk extra veiligheid te bieden doordat interne systemen worden afgeschermd van het internet. Dit gevoel van veiligheid is echter misleidend. Reverse NAT, port forwarding en 'stoute' gebruikers maken duidelijk dat een degelijk geconfigureerde firewall onmisbaar is (en dat NAT mag worden uitgeschakeld).
Laat me je daarom meenemen in de mijn zoektocht naar IPv6:
Waarom IP
Om computers (clients en servers) met elkaar te laten communiceren (webbrowsen, emailen, berichten, meta-data, IoT, ...) hebben ze een unieke identificatie nodig. Een goede manier om dit te begrijpen is door netwerkverkeer te vergelijken met het sturen van brieven. In plaats van een continu gesprek, sturen computers elkaar namelijk "brieven" in de vorm van datapakketjes (van meestal 1500 bytes groot). Zoals een fysieke brief een naam, straat, postcode en land nodig heeft om aan te komen, heeft een datapakketje een IP-adres. Dit adres bevat alle informatie om een pakketje van de ene kant van de wereld naar de andere te sturen.
Van IPv4 (Classful & CIDR) naar IPv6
In de begindagen van IPv4 gebruikten we Classful Networking. Hierbij bepaalde de eerste bit(s) van een adres de klasse (A, B of C) en daarmee de vaste splitsing tussen het netwerk-ID en het host-ID. Dit systeem was echter niet schaalbaar en leidde tot enorme verspilling van adressen. Om dit op te lossen werd CIDR (Classless Inter-Domain Routing) geïntroduceerd, waarbij we een subnetmasker gebruiken om flexibel te bepalen welk deel van het adres bij het netwerk hoort.
Bij IPv6 stappen we af van die variabele complexiteit door volgende zaken:
- De Boundary: In IPv6 is de 64e bit de vaste grens (boundary). De laatste 64 bits (het Interface ID) zijn gereserveerd voor de host.
- Functieherkenning: Aan de hand van de eerste bits (de prefix) herkent een computer direct de functie van het adres, zoals Global Unicast (internet-routeerbaar), Unique-local (niet routeerbaar), Link-Local (alleen voor het eigen segment) of Multicast (het oude broadcast).
- Subnetting: Een ISP deelt meestal een prefix uit van bijvoorbeeld /48 of /56. Dit geeft jou als netwerkbeheerder respectievelijk 16 of 8 bits de ruimte om eigen subnets (VLAN's) te definiëren, terwijl de laatste 64 bits altijd voor de hosts blijven.
Laag 3 van het ISO-OSI model
Waarom hebben we dit dus nodig? IP bevindt zich op Laag 3 van het OSI-model (de Netwerklaag). Waar Laag 2 (Ethernet) zorgt voor communicatie binnen hetzelfde fysieke netwerk, zorgt laag 3 (en IP) ervoor dat data over verschillende netwerken heen gerouteerd kan worden. Zonder een uniek IP-adres is wereldwijde communicatie simpelweg onmogelijk.
Waarom IPv6?
De voorraad IPv4-adressen is officieel uitgeput. Met ongeveer 4,3 miljard adressen voor bijna 8 miljard mensen (die elk een smartphone, laptop, smartwatch en een slimme koelkast bezitten) is er geen toekomst in IPv4. Nu hoor ik je denken: "Wat is het probleem? Met NAT (Network Address Translation) kunnen we toch oneindig veel apparaten achter één publiek IP-adres verbergen?" Maar juist dat is eigenlijk het probleem. NAT was (of is ;-)) een goede tijdelijke oplossing, maar het heeft het de fundamentele end-to-end architectuur van het internet kapotgemaakt. Het internet is ontworpen voor directe punt-tot-punt communicatie. Omdat NAT dit blokkeert, moeten we complexe en onveilige "trucs" uithalen zoals NAT traversal, STUN/TURN-servers of het gebruik van externe tussenstations (relays) om apparaten van buitenaf bereikbaar te maken. Dit zorgt voor extra vertraging, hogere kosten en onnodige beveiligingsrisico's. Bovendien is de wereldwijd verdeling van IPv4-adressen oneerlijk gebeurd. Omdat het Westen als eerste aan tafel zat, bezitten enkele Amerikaanse universiteiten meer IPv4-adressen dan heel China of Afrika. In die regio’s is de noodzaak groter, waardoor de IPv6-adoptie daar vaak veel sneller gaat dan bij ons ref. Het belangrijkste om te beseffen: IPv6 wint gestaag terrein. Er komt een moment dat een cruciale service (bv een nieuwe leerlijn van een uitgever) alleen nog via IPv6 bereikbaar is. Als je wacht tot dat moment, moet je halsoverkop je hele schoolnetwerk omgooien terwijl je waarschijnlijk met andere prioriteiten bezig bent. In een SOHO-omgeving (Small Office/Home Office) is IPv6 vaak een kwestie van één vinkje aanzetten, maar in een gestructureerd bedrijfsnetwerk met VLAN’s, firewalls en routing-protocollen komt er aanzienlijk meer bij kijken. Een goede voorbereiding is dus essentieel. IPv6 heeft 128 bits gerekend voor het IP adres. Hoeveel is dit eigenlijk? Wel 2^128 zijn ongeveer 10^36 adressen. Ter vergelijking:
- Er zijn op aarde ongeveer 10^22 zandkorrels, dit is ongeveer 2^74. We kunnen dus elke zandkorrel een computernetwerk geven waarin je elke zandkorrel zoveel adressen kan geven als er zandkorrels op aarde zijn (ik weet dat ik een fout van 2^20 maak).
- Als een hacker een netwerkscanner zou bouwen die alle IPv6 adressen scant en hij slaagt erin om 1 miljoen adressen per seconde te scannen, heeft hij 10^30 seconden nodig om alles te scannen. Ons heelal is ongeveer 13,8 miljard jaar oud, of 1,38 x 10^10. In 1 jaar zitten ongeveer 3,1 x 10^7 seconden. Dus 10^30 (het aantal seconden nodig om alles te scannen) is ongeveer 10^13 keer het aantal seconden dat het heelal oud is. Dit lijkt absurd, maar met IPv6 ga je geen netwerkscan meer uitvoeren, dit is een onmogelijke taak, meer hierover verderop.
- Astronomen schatten het aantal sterren in het heelal op 10^24. Dus elke ster kan 10^12 aantal adressen krijgen. 10^12 is ongeveer 2^40 of elke ster kan 256 keer een IPv4 range krijgen.
Naast de grotere adresruimte hebben we natuurlijk nog redenen om IPv6 leuk te vinden:
- Geen NAT meer (End-to-End Connectivity): Dit is de grootste verandering voor netwerkarchitectuur. Omdat we genoeg adressen hebben, is Network Address Translation (NAT) technisch gezien niet meer nodig. Elke host kan een echt publiek adres krijgen. Dit herstelt de oorspronkelijke "end-to-end" visie van het internet.
- Efficiëntere Routing (Fixed Header): De IPv6-header heeft een vaste lengte van 40 bytes. Bij IPv4 was de header variabel (20 tot 60 bytes), wat betekende dat routers per pakketje moesten berekenen waar de data begon. Routers kunnen pakketjes veel sneller verwerken in de hardware.
- Geen Checksum van laag 3: IPv6-routers berekenen geen checksum meer op laag 3 (dat laten we over aan laag 2 en laag 4). Dit bespaart kostbare CPU-cycli op elke "hop" die een pakketje maakt.
- Stateless Address Autoconfiguration (SLAAC): In IPv4 heb je bijna altijd een DHCP-server nodig om adressen uit te delen. IPv6-apparaten kunnen zichzelf configureren zonder hulp van een server.
- Geen Broadcasts meer: In IPv4 kan een broadcast-storm een heel VLAN platleggen. IPv6 kent simpelweg geen broadcast meer. Vervanging: Alles wat vroeger broadcast was, gebeurt nu via Multicast. Voordeel: Alleen apparaten die daadwerkelijk geïnteresseerd zijn in een pakketje (bijv. alle routers of alle hosts) verwerken het verkeer. De rest van de netwerkkaarten negeert het pakketje al op hardware-niveau.
- Ingebouwde Beveiliging IPsec: Bij het ontwerp van IPv6 was IPsec een verplicht onderdeel, maar in de praktijk is het nog steeds optioneel. Alles zit wel klaar om alle verkeer in IPv6 te encrypteren.
- Mobility: IPv6 ondersteunt "Mobile IPv6" beter, waardoor als apparaten van netwerk wisselen (bijvoorbeeld van Wi-Fi naar 5G) hun actieve verbindingen/sessies niet verliezen.
theorie IPv6
Adresnotatie
Een IPv6-adres is 128 bits en ziet er bijvoorbeeld zo uit:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Dit lijkt op een MAC adres, maar dit is het niet. IPv4 was decimaal geschreven (elk octet was een getal tussen 0 en 256), een IPv6 adres wordt hexadecimaal geschreven (elk karakter gaat van 0 tot F en stelt 4 bit voor). De getallen worden gegroepeerd per 4, dit komt overeen met 16 bit, en zo'n 4 bit wordt een hextet genoemd. Bovenstaand adres komt in een packet sniffer als volgt tevoorschijn:
0010 0000 0000 0001 0000 1101 1011 1000 1000 0101 1010 0011 0000 0000 0000 0000 0000 0000 0000 0000 1000 1010 0010 1110 0000 0011 0111 0000 0111 0011 0011 0100
Het mag duidelijk zijn dat het onbegonnen werk is om op binair niveau met IPv6 te werken. En zelfs als je er hexadecimaal mee werkt heeft het een aantal uitdagingen. Daarom heeft IPv6 een aantal regels om de adressen leesbaarder te maken.
Schrijfregels
- herhaling: hexadecimale in groepjes van 4: een niet afgekort IPv6 adres bestaat uit 8 hextets.
2001:0db8:85a3:0000:0000:8a2e:0370:7334
- beginnullen in een hextet mogen weglaten worden
2001:db8:85a3:0:0:8a2e:370:7334
- Eén keer mag je een aaneengesloten reeks nullen vervangen door ::
2001:db8:85a3::8a2e:370:7334
Oefening
- schrijf volgende adressen zo eenvoudig mogelijk (oplossingen helemaal onderaan):
1)2001:0db8:0000:0000:0000:ff00:0042:8329 2)fe80:0000:0000:0000:0202:b3ff:fe1e:8329 3)0000:0000:0000:0000:0000:0000:0000:0001 4)2001:0db8:0001:0000:0000:ab00:0000:0001 5)2001:0000:0000:a000:0000:0000:0000:0100
- Schrijf volgende adressen volledig voluit (oplossingen helemaal onderaan):
1) 2001:db8:a::15 2) fe80::215:5dff:fe32:1dec 3) ff02::1:ff32:45 4) 2001:db8:85a3::8a2e:370:7334 5) :: (Ja, dit is een geldig adres!)
- Een IPv6 adres bestaat uit 3 delen:
- Een Netwerk deel (bit 1 tot 48): Global Routing Prefix: Dit bepaalt naar welk bedrijf, locatie op de wereld het pakket moet gestuurd worden.
- Een Subnet deel (bit 49-64): Subnet ID: Als je een gestructureerd netwerk hebt, kan je in dit gedeelte je VLAN'en definiëren.
- Een Host deel (bit 65 - 128): Host ID: De laatste 4 hextets definiëren de host. Er is eigenlijk een oneindig grote adres ruimte voorzien voor de hosts. Dit adres wordt op 4 verschillende manieren worden gedefieërd: EUI-64 (op basis van het mac adres),Privacy Extensions (random adres dat elke 24h veranderd voor privacy), DHCPv6 (voor bedrijfsnetwerken), statisch (voor routers, switchen, servers, ...)
| Global Routing Prefix | Subnet ID | Host ID |
|---|---|---|
| bit 0 -> bit 48 | bit 49 -> bit 64 | bit 65 -> bit 128 |
Global Routing Prefix
De eerste 10 bits worden gebruikt voor een adres een bepaalde functie te geven:
| Wat | Binair | hexadecimaal | uitleg |
|---|---|---|---|
| Global Adres | 001 | 2000::/3 | Het Global Unicast Adres (GUA) is het IPv6-equivalent van een publiek IPv4-adres. Het is wereldwijd uniek en routeerbaar over het volledige internet. In een ideale IPv6-wereld krijgt elk apparaat (je laptop, je printer, zelfs je slimme thermostaat) zijn eigen GUA, waardoor NAT (Network Address Translation) technisch gezien overbodig wordt. |
| Unique Local Adres (ULA) | 1111 110 | fc00::/7 | Een Unique Local Address (ULA) is bedoeld voor communicatie binnen een organisatie of tussen verschillende locaties van hetzelfde bedrijf (via bijvoorbeeld een VPN). Ze zijn niet routeerbaar op het openbare internet. Als een pakket met een ULA-bestemming bij een internetprovider aankomt, zal deze het onmiddellijk negeren (droppen). Het is de IPv6-tegenhanger van de bekende private IPv4-adressen (zoals 192.168.x.x, 172.16.x.x en 10.x.x.x). |
| Link-Local Adres | 1111 1110 10 | fe80::/10 | Zodra een netwerkinterface met IPv6-ondersteuning wordt geactiveerd, genereert deze automatisch een Link-local adres. Dit adres is herkenbaar aan de prefix fe80::/10. In tegenstelling tot IPv4, waarbij een interface meestal maar één IP-adres heeft, heeft een IPv6-interface er vrijwel altijd minstens twee: het Link-local adres voor interne communicatie en (indien geconfigureerd) een Global Unicast Adres voor internettoegang. Het wordt gebruikt voor netwerkfuncties zoals Neighbor Discovery Protocol (NDP, de vervanger van ARP) en voor de communicatie tussen je computer en de router (default gateway). |
| Multicast | 1111 1111 | ff00::/8 | Multicast is een verzendmethode waarbij één datapakket gelijktijdig naar een specifieke groep ontvangers wordt gestuurd. In plaats van het bericht naar iedereen te sturen (zoals bij broadcast) of naar elke ontvanger apart (zoals bij unicast), wordt de netwerkbelasting tot een minimum beperkt. In IPv6 vervangt het Broadcast verkeer. Waar IPv4 nog "schreeuwde" naar elk apparaat in het netwerk, gebruikt IPv6 nu multicast. Dit zorgt voor een veel rustiger netwerk, omdat enkel de apparaten die het bericht nodig hebben, het ook daadwerkelijk verwerken. |
Subnet ID
Het Subnet ID is het gedeelte van het IPv6-adres dat door netwerkbeheerders wordt gebruikt om de verschillende segmenten (VLAN's) van de school een uniek adres te geven. Omdat elk VLAN een eigen netwerksegment vereist en elk adres in principe Global Unicast (GUA) is, zorgt dit ID voor de juiste routering tussen de interne infrastructuur en het internet. De Prefix van de provideris meestal een /48 of /56 prefix. Dit laat respectievelijk 16 of 8 bits vrij voor het Subnet ID voordat je de /64 grens (de boundary) bereikt. Veel netwerkbeheerders kiezen ervoor om het VLAN ID direct te verwerken in het Subnet ID. Voorbeeld: Als VLAN 10 het administratieve netwerk is, krijgt dit het Subnet ID :0010:. VLAN 20 wordt :0020:, enzovoort. Deze methode zorgt voor enorme transparantie. Als je een IP-adres ziet in een logbestand, kun je aan de hand van het Subnet ID direct zien in welk fysiek of logisch deel van de school het apparaat zich bevindt, zonder in de administratie te hoeven kijken.
Host ID
Het Host ID (officieel de Interface Identifier of IID genoemd) beslaat de laatste 64 bits van een IPv6-adres. Waar de eerste 64 bits bepalen op welk netwerk je zit, bepalen deze laatste 64 bits wie jij bent op dat specifieke netwerk.
Hier zijn de drie belangrijkste dingen die je moet weten over dit gedeelte:
- De vaste lengte van 64 bits: In tegenstelling tot IPv4, waar de scheiding tussen net ID en host ID kan variëren (zoals bij een /24 of /25), is de "Host-ruimte" in IPv6 bijna altijd exact 64 bits. Dit is een bewuste keuze geweest om functies zoals SLAAC (waarbij een apparaat zichzelf een adres geeft) mogelijk te maken.
- Hoe wordt het bepaald? Er zijn vier manieren waarop een host zijn ID kiest:
- EUI-64: Het apparaat gebruikt zijn unieke MAC-adres van de netwerkkaart, knipt dit doormidden en plakt er `ff:fe` tussen.
- Privacy Extensions: De computer verzint een willekeurig getal. Dit verandert regelmatig, zodat je op internet niet te volgen bent aan de hand van een vast hardware-ID.
- Handmatig (Statisch): Voor servers of printers kies je zelf een herkenbaar ID, zoals ::1 of ::53.
- DHCP6: Als RA dit oplegt aan het netwerksegment. Zo kan je als netwerkbeheerder meer controle hebben over de adressen
- De onvoorstelbare ruimte: Omdat het Host ID 64 bits groot is, heb je per subnet 2^64 unieke adressen beschikbaar. Dat zijn 18.446.744.073.709.551.616 adressen.
- Dit is zo groot dat "scannen" van een netwerk door hackers (zoals in IPv4) onmogelijk is. Het zou honderden jaren duren om alle mogelijke Host ID's in één klein kamertje te pingen.
- Het betekent ook dat we nooit meer hoeven te "zuinig" hoeven te zijn met IP-adressen binnen een VLAN.
Kortom: Het Host ID is de digitale vingerafdruk van een apparaat. Of die vingerafdruk nu gebaseerd is op hardware (EUI-64), willekeur (Privacy) of beheer (Statisch), er is zoveel ruimte dat elk apparaat op aarde miljarden unieke ID's zou kunnen verslijten zonder dat het opraakt.
Speciale adressen:
Net zoals bij IPv4 hebben sommige adressen bepaalde functies:
- loopback (zoals 127.0.0.1 in IPv4):
::1 of 0000:0000:0000:0000:0000:0000:0000:0001
Dit kan je altijd pingen om te testen of je IPv6 stack werkt op je computer.
C:\Users\basis>ping -6 ::1 Pinging ::1 with 32 bytes of data: Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms
- Unspecified adres (::)
Dit adres bestaat volledig uit nullen. Functie: Het wordt door een apparaat gebruikt als "bronadres" wanneer het nog geen eigen IP-adres heeft, maar wel al een aanvraag over het netwerk wil sturen (bijvoorbeeld tijdens het opstarten).
- je vind meer in dit overzicht: https://www.ripe.net/media/documents/ipv6-address-types.pdf
ICMPv6
ICMPv6 (Internet Control Message Protocol version 6) is het zenuwstelsel van IPv6. Waar ICMP bij IPv4 vaak werd gezien als een bijzaak (voornamelijk voor ping), is het bij IPv6 een absoluut essentieel onderdeel van het protocol. Zonder ICMPv6 werkt IPv6 simpelweg niet.
Dit komt omdat ICMPv6 verantwoordelijk is voor veel meer dan alleen foutmeldingen; het regelt de volledige communicatie tussen buren op een netwerk via het Neighbor Discovery Protocol (NDP).
Het proces:
- RS (Router Solicitation - Type 133): Een host komt online en stuurt een ICMPv6-vraag: "Is hier een router?"
- RA (Router Advertisement - Type 134): De router antwoordt met een ICMPv6-bericht: "Ja, ik ben hier, en dit is het netwerkadres (prefix)."
Wat doet RA nu allemaal:
De "Hulpvaardige" Router Router Advertisement is een mechanisme binnen het Neighbor Discovery Protocol (NDP). Je kunt het vergelijken met een router die elke paar minuten door de gangen van het netwerk roept:
"Hoi iedereen! Ik ben de router voor dit netwerk. Mijn adres is fe80::1 en de netwerknaam (prefix) waar je op zit is 2001:db8:a::/64. Je mag zelf een adres verzinnen binnen deze reeks!"
De kernfuncties van RA Een RA-bericht wordt door een router verstuurd naar de multicast-groep ff02::1 (alle apparaten op het segment) en bevat cruciale informatie:
- De Prefix: Welk netwerkadres moeten de apparaten gebruiken?
- De Default Gateway: Naar welk adres moet het verkeer worden gestuurd om op internet te komen?
- De Configuratiemethode (Flags): De router vertelt de apparaten of ze hun eigen adres mogen verzinnen (SLAAC) of dat ze toch nog even bij een DHCPv6-server moeten aankloppen voor extra details.
- De MTU: De maximale grootte van pakketjes op dit specifieke netwerk.
Waarom is dit belangrijk? Dankzij RA kunnen apparaten in een IPv6-netwerk plug-and-play online gaan. Zodra je een laptop inplugt, hoeft deze niet te wachten op een traag DHCP-proces. Hij hoort de RA, combineert de prefix met zijn eigen Host ID, en is binnen een fractie van een seconde verbonden.
Soorten RA
Er zijn drie hoofdvormen van adresconfiguratie in IPv6:
SLAAC (Stateless Address Autoconfiguration)
Dit is de "pure" IPv6-methode en de meest gebruikte modus. Hoe het werkt: De router stuurt een RA met de netwerkprefix (bijv. 2001:db8:1::/64). De host ontvangt dit en plakt er zelf een Host ID achter (op basis van zijn MAC-adres of een willekeurig getal). Kenmerk: Er is geen centrale server die bijhoudt wie welk adres heeft. De router zegt alleen: "Dit is het plein, zoek zelf maar een plekje." Voordeel: Extreem snel en schaalbaar. Nadeel: Je moet handmatig je DNS instellen (is ook achterhaald)
Stateless DHCPv6
Dit is een hybride vorm. Hoe het werkt: De host gebruikt SLAAC om zijn eigen IP-adres te genereren (voor de verbinding), maar de router vertelt in de RA: "Vraag voor extra zaken zoals de DNS-server of de domeinnaam even na bij de DHCP-server." Kenmerk: De DHCP-server deelt geen IP-adressen uit, alleen aanvullende informatie. Voordeel: Je hoeft geen complexe database met IP-adressen bij te houden, maar hebt wel controle over je DNS-instellingen.
Stateful DHCPv6
Dit lijkt het meest op de ouderwetse IPv4-methode. Hoe het werkt: De router vertelt in de RA: "Verzin zelf niets! Ga naar de DHCPv6-server voor je IP-adres en al je andere instellingen." Kenmerk: De DHCP-server deelt de IP-adressen uit en houdt in een database (de state) bij welk adres aan welk apparaat is gegeven. Voordeel: Maximale controle voor de beheerder (handig voor auditing of strikte firewall-regels).
vlaggen
Deze vormen worden bepaald aan de hand van de M en de O vlag:
- M-vlag (Managed Address Configuration):
- 0: geen adres via DHCP6, met de prefix van het RA bericht wordt een GA gemaakt
- 1: vraag een adres via DHCP6
- O-vlag (Other Configuration)
- 0: geen extra configuratie (DNS) van een DHCP, zoek het zelf maar uit (maar wel RDNSS)
- 1: Vraag extra configuratie aan de DHCP
Vertaald naar PfSense
PfSense heeft dit vertaald naar een aantal instellingen:
- Disabled: RADVD will not be enabled on this interface: De router stuurt geen RA-berichten. Hosts moeten alles handmatig doen (niet aanbevolen).
- Router Only: Will advertise this router: Dit is de "puurste" vorm. pfSense zet de M- en O-vlaggen op 0. Hosts verzinnen hun eigen IP via SLAAC en DNS moet handmatig ingevuld worden.
- Unmanaged: Will advertise this router with Stateless Address Auto-Configuration (SLAAC): Ook SLAAC, maar pfSense voegt hier automatisch de RDNSS (DNS) informatie toe aan het RA-pakket. Dit is de beste keuze voor simpele netwerken.
- Managed: Will advertise this router with all configuration through a DHCPv6 server: De "Stateful DHCPv6" modus. pfSense zet de M-vlag op 1. De host negeert SLAAC en vraagt alles aan de DHCPv6-server.
- Assisted: Will advertise this router with configuration through a DHCPv6 server and/or SLAAC: De "hybride" modus. pfSense zet de M-vlag op 0 maar de O-vlag op 1. Hosts gebruiken SLAAC voor hun IP, maar kloppen aan bij de DHCPv6-server voor DNS en andere extra's.
- Stateless: DHCP Will advertise this router with SLAAC and other configuration information available via DHCPv6:
Oefening
Voor de cursus heb ik een aantal virtuele machines voorbereid en leg ik uit hoe alles in elkaar steekt. Als je deze tekst volgt zonder de uitleg probeer ik hieronder sumier uit te leggen wat je allemaal moet doen om te beginnen aan het labo. Ten eerste, ik ben een enorme fan van real life virtualisatie. Ik bedoel, ik virtualiseer altijd echt computers en routers. Dus gebruik virtual box, VMware workstation, Windows Hyper-V en zorg ervoor dat je hiermee leert werken.
Oefening 1
- installeer een router (pfSense CE) met 1 interface gebridged naar je eigen netwerk en 1 interface naar een geïsoleerd netwerk (LAN segment)
- installeer een client (bijvoorbeeld lubuntu)
- configureer via de client de firewall en configureer een fix IPv6 netwerkadres op alle clients in het netwerk fc00::1 voor de router en fc00::10 voor de client
- test of je kan pingen van de router naar de client en van de client naar de router
- clone de client zodat je een tweede virtuele pc hebt. Vergeet niet om deze client een andere naam te geven. Geef deze tweede client het IPv6 address fc00::11
Oefening 2
- Zoek een Unique local radom adres generator (bv https://www.unique-local-ipv6.com/). Genereer hiermee een radom ULA en configureer dit adres als fix IPv6 op de LAN poort van pfSense. Neem als host ID een het oude IP adres dec in hex (just for fun).
- Deconfigureer het fix adres op je twee virtuele clients en kijk wat er gebeurd als je zonder extra configuratie het IPv6 adres laat ophalen door de client. Hopelijk merk je dat je alleen een Logical Link adres (fe80::) gaat krijgen.
Praktijk
- Je eigen IP checken: Probeer eerst eens na te kijken of je eigen computer al via IPv6 verbonden is. In windows ipconfig of ifconfig in linux
C:\Users\basis>ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : bendevanboechout.be
IPv6 Address. . . . . . . . . . . : 2a0f:69c0:487f:b500:e24e:a482:a022:bb6a
Temporary IPv6 Address. . . . . . : 2a0f:69c0:487f:b500:b930:5d4e:e870:93c8
Link-local IPv6 Address . . . . . : fe80::c49e:a25c:fcff:705e%16
IPv4 Address. . . . . . . . . . . : 192.168.178.96
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::20c:29ff:fe90:729f%16
192.168.178.1
- Ping in IPv6: Linux/macOS: ping6 ipv6.google.com, Windows: ping -6 ipv6.google.com
C:\Users\basis>ping -6 google.be
Pinging google.be [2a00:1450:400c:c02::5e] with 32 bytes of data:
Reply from 2a00:1450:400c:c02::5e: time=5ms
Reply from 2a00:1450:400c:c02::5e: time=4ms
Reply from 2a00:1450:400c:c02::5e: time=3ms
Reply from 2a00:1450:400c:c02::5e: time=5ms
Ping statistics for 2a00:1450:400c:c02::5e:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 3ms, Maximum = 5ms, Average = 4ms
je schoolnetwerk IPv6 configureren
WAN configureren
- Configureer IPv6 op alle WAN verbindingen die je hebt. Deze configuratie is afhankelijk van je provider:
- Eurofiber: zij geven een vast IP adres en je moet ook een IPv6 range aanvragen. Normaal ga je dan 2 adressen krijgen. een /124 adres voor je modem (over deze verbinding gaat enkel het netwerkverkeer van de modem en 1 prefix voor al je netwerken, meestal een /48 waardoor je gemakkelijk al je ip-ranges (vlans) een subnet kan geven.
- proximus/orange/fiberklaar: Alle ISP's die over een GPON verbinding binnenkomen. Hier ga je het IPv4 adres bekomen via een PPPoE verbinding, het IPv6 adres krijg je via DHCPv6. Dit kan een dynamisch of vast IP adres zijn. In beide gevallen krijg je een adres voor de modem en een prefix voor je interne netwerken. Dit is meestal een /56 netwerk waardoor je nog extra vlannen kan configureren.
- Telenet: hier krijgen IPv4 en IPv6 een adres via DHCP. Als je een vast adres wil krijgen, moet je het mac adres voor IPv4 en het DUID adres voor IPv6 registreren op mijn telenet. De prexif is ook een /56 netwerk
Je weet dat je configuratie werkt als je vanuit de router kan pingen naar een IPv6 adres. Je zal ook altijd een IPv6 adres krijgen voor de modem en een prefix om je netwerk IPv6 connectiviteit te geven. Vergeet niet als je een vast IP adres hebt, de DNS gegevens in te vullen.
- Configureer je LAN-netwerken met een IPv6 adres:
- Als je een prefix hebt gekregen van DHCP, moet/mag je track interface gebruiken. Dit komt omdat de prefix kan veranderen (omdat je dynamisch adres heb). Heb je een vast adres aangevraagd bij telenet, kan je eventueel de interne netwerken handmatig configurern
- Als je een echt vast IP adres hebt zoals bij Eurofiber, moet je alle netwerken intern handmatig configureren. Het gemakkelijkste is dat je je prefix neemt en hier in het laatste hex van de prefix je vlan nummers zet.
- RA configureren
- voor de wifi netwerken kan je best stateless of unmanaged kiezen
- voor de bedraade netwerken assisted of ... kiezen
bijlages, referenties en oplossingen
websites
- Websites om je eigen IPv6 te checken:
- Websites om te checken of een domein IPv6 klaar is
- Websites om bij te leren
- Hoe moet je VMware installeren
youtube
https://youtube.com/playlist?list=PL29aTNTLFPTrdX5zJ53S5ePoKi5PREJx1&si=1nStqFIHWZJkMlUi
oefeningen
IPv6: schrijf zo kort mogelijk
1: 2001:0db8:0000:0000:0000:ff00:0042:8329 => 2001:db8::ff00:42:8329 De drie groepen 0000 worden vervangen door ::, de 2 nullen voor de 42 mogen ook weggelaten worden 2: fe80:0000:0000:0000:0202:b3ff:fe1e:8329 => fe80::202:b3ff:fe1e:8329 Typisch Link-Local adres met veel nullen in het midden. 3: 0000:0000:0000:0000:0000:0000:0000:0001 => ::1 De ultieme verkorting; alle groepen nullen vallen weg. 4: 2001:0db8:0001:0000:0000:ab00:0000:0001 => 2001:db8:1::ab00:0:0:1 "Regel: vervang de langste reeks nullen. :: bij de drie nullen achteraan mag ook, maar is minder efficiënt." 5: 2001:0000:0000:a000:0000:0000:0000:0100 => 2001:0:0:a000::100 De a000 en 100 mogen hun nullen aan de rechterkant niet verliezen!
IPv6 schrijf volluit
1: 2001:db8:a::152 => 001:0db8:000a:0000:0000:0000:0000:0015 Er zijn 4 groepen zichtbaar, dus de :: bevat 4 groepen nullen. 2: fe80::215:5dff:fe32:1dec => fe80:0000:0000:0000:0215:5dff:fe32:1dec Typisch EUI-64 adres. Let op de extra 0 voor 215. 3: ff02::1:ff32:45 => ff02:0000:0000:0000:0000:0001:ff32:0045 Belangrijk: 45 wordt 0045, niet 4500. 4: 2001:db8:85a3::8a2e:370:7334 => 2001:0db8:85a3:0000:0000:8a2e:0370:7334 Hier vervangt de :: twee groepen nullen. 5: :: => 0000:0000:0000:0000:0000:0000:0000:0000 Het "unspecified address". Wordt vaak gebruikt als bronadres bij het opstarten.