IPv6: Een korte introductie

door Daniël de Kok, daniel apestaart taickim punt net

Introductie

IP versie 6 is het nieuwe internet protocol dat IPv4 moet gaan opvolgen. IPv6 biedt een groter adresbereik, en meer veiligheid dankzij integratie met IPsec. Dit artikel geeft een inleiding in IPv6, en beschrijft kort de basis van de configuratie van IPv6.

Geschiedenis

IPv6, ook wel IPng (Next Generation Internet Protocol) genoemd, is in 1994 als standaard aangenomen door de Internet Engineering Steering Group. De naam IPv6 is verkozen boven IPv5, omdat de naam IPv5 al vergeven was aan een opvolger van een protocol dat eind jaren 70 ontwikkeld was (het Internet Stream Protocol), namelijk ST2.

Het OSI-model is een verzameling afspraken over de manieren van communiceren tussen twee of meerdere computersystemen van eventueel verschillende merken. Dit model kent zeven lagen:

IPv6 is een (nieuw) protocol in de netwerklaag. Overigens moet software in hogere lagen vaak ook aangepast worden wegens de gewijzigde adressering.

De eerste IPv6 implementaties verschenen rond 1996. De eerste IPv6 code is in november 1996 aan de Linux 2.1.8 kernel toegevoegd. Uiteindelijk is de implementatie enigszins verwaarloosd, omdat wijzigingen aan de standaard meestal niet geïmplementeerd werden. Een aantal mensen is in 2000 het USAGI project begonnen met als doen de FreeBSD KAME-gebaseerde stack naar Linux te porten. USAGI patches zijn zowel voor Linux kernel 2.4.x als 2.6.x verkrijgbaar.

Het IPv6 adresbereik

Zoals is gezegd, is één van de voordelen van IPv6 dat het een veel groter adresbereik heeft. In IPv4 (het internetprotocol dat hedendaags de standaard is) zijn adressen 32-bit. Het bereik van 32-bit adressen is bijna volledig gebruikt, en er is een tekort aan IPv4 adressen. IPv6 gebruikt 128-bit adressen, dit biedt een ongekend groot aantal mogelijke IP(v6) adressen (2^128 adressen). Daarnaast gebruikt IPv6 een andere notatie voor adressen; ten eerste worden getallen hexadecimaal genoteerd, in plaats van decimaal. Daarnaast worden adressen genoteerd in paren van 16 bits, en gescheiden met dubbele punten (":"). Laten we kijken naar een voorbeeldadres:

fec0:ffff:a300:2312:0:0:0:1

Een blok met opeenvolgende nullen kan vervangen worden met twee dubbele punten ("::"). Overigens kan dit slechts eenmaal in een adres, anders is het niet mogelijk te bepalen hoeveel nullen door twee dubbele punten gerepresenteerd worden. Het bovenstaande adres is dus te herschrijven tot:

fec0:ffff:a300:2312::1

Elk IPv6 adres heeft een prefix. Gewoonlijk bestaat de prefix uit twee elementen: 32-bits die de adresruimte die aan u toegewezen is aangeven, en een 16-bit nummer dat het netwerk adres specificeert. Deze twee elementen vormen de prefix, in dit geval is de prefix 32 + 16 = 48 bits. Dus, als je een /48 prefix hebt kun je 2 ^ 16 sub-netten maken, met 2^80 hosts op elke sub-net. Het onderstaande figuur geeft de structuur weer van een IPv6 adres met een 48-bit prefix.

Figuur 1 - De anatomie van een IPv6 adres.

Overigens zijn er ook providers die een 64-bit prefix gebruiken; in dit geval is wordt de adresruimte aangegeven met een 48-bit adres en is er een 16-bit ruimte voor het maken van sub-netten. Er blijft dan dus 64-bit per sub-net over voor het toewijzen van IP adressen aan hosts.

Er zijn een aantal gereserveerde adresbereiken, de belangrijkste zijn:

BereikBeschrijving
fe80::Link local adressen, deze adressen worden niet gerouted en gewoonlijk automatisch toegekend aan een interface.
fec0::Site local adressen, worden in tegen stelling tot link local adressen wel gerouted, maar niet op of naar het internet.
2002::6to4 adressen, dit bereik wordt gebruikt voor de overgang van IPv4 naar IPv6. Achter deze prefix wordt IPv6 notatie van het IPv4 adres toegevoegd, op die manier kunnen 6to4 gateways hosts op basis van IPv4 adressen IPv6 connectiviteit verlenen.

Als je adressen wilt toewijzen aan een lokaal netwerk, dan kun je dus het beste adressen maken gebruik maken van de fec0:: prefix.

Kernel ondersteuning

Sommige distributies bieden standaard kernel modules voor IPv6 ondersteuning, bij andere distributies moet IPv6 ondersteuning in de kernel gecompileerd worden. De IPv6 module kan geladen worden met modprobe:

# modprobe ipv6

U kunt controleren of de IPv6 ondersteuning goed geladen is door naar de uitvoer van de kernel te kijken met behulp van het dmesg commando:

$ dmesg
[..]
IPv6 v0.8 for NET4.0

IPv6 ondersteuning kan permanent aangeschakeld worden door te zorgen dat de ipv6 module altijd geladen wordt. Op Debian-gebaseerde distributies kan de module toegevoegd worden aan /etc/modules. Op Slackware Linux moet de volgende regel aan /etc/rc.d/rc.modules toegevoegd worden:

/sbin/modprobe ipv6

Toevoegen van een IPv6 adres aan een interface

Gewoonlijk worden interfaces geconfigureerd met ifconfig, maar het is aan te bevelen IPv6 instellingen met het ip commando te doen. Op Debian is dit commando onderdeel van de iproute package, Slackware heeft ip in de n/iproute2 package.

Als er een router advertiser is op één van de netwerken die u gebruikt, dan is de kans groot dat de desbetreffende network interfaces al in IPv6 adres hebben gekregen toen de IPv6 kernel support is geladen. Als dit niet het geval is kun je met het ip commando een IPv6 adres toevoegen aan een interface. Veronderstel dat je het adres fec0:0:0:bebe::1 wilt toevoegen aan de eth0 interface, met een prefixlengte van 64 bit (wat betekent dat fec0:0:0:bebe de prefix is). Dit kan gedaan worden met de volgende ip syntaxis:

# ip -6 addr add <ip6addr>/<prefixlen> dev <device>

Het bovenstaande IP adres kan dus aan de eth0 interface toegevoegd worden met het volgende commando:

# ip -6 addr add fec0:0:0:bebe::1/64 dev eth0

Als je dit automatisch wilt doen bij het opstarten kun je, afhankelijk van de distributie, de instellingen aan de netwerkconfiguratie toevoegen, of de ip commando's die je gebruikt toevoegen aan een opstartbestand als rc.local (Slackware).

Resolving

Voor kleinere lokale netwerken kun je het /etc/hosts bestand blijven gebruiken voor het omzetten van namen naar IPv6 adressen. Je kunt IPv6 adressen gewoon toevoegen aan het hosts bestand zoals je van IPv4 adressen gewend bent. Dit is een voorbeeld van een /etc/hosts bestand met IPv4 en IPv6 adressen:

# IPv4 entries
127.0.0.1               localhost
192.168.1.1             tazzy.linuxfans.org tazzy
192.168.1.2             tweety.linuxfans.org

# IPv6 entries
::1                     localhost
fec0:0:0:bebe::2        flux.linuxfans.org

Zoals je kunt zien is ::1 de standaard IPv6 loopback.

Referenties

 

© 2002-2008 - Linux-box.nl en bijdragende auteurs