32.12. IPv6

Origineel geschreven door Aaron Kaplan. Geherstructureerd en toegevoegd door Tom Rhodes. Uitgebreid door Brad Davis.

IPv6 (ook bekend als IPng “IP next generation”) is de nieuwe versie van het welbekende IP-protocol (ook bekend als IPv4). Net zoals de andere huidige *BSD-systemen, bevat FreeBSD de referentie-implementatie van KAME IPv6. Het FreeBSD-systeem wordt dus geleverd met alles wat nodig is om met IPv6 te experimenteren. Deze sectie richt zich op het ingesteld en draaiend krijgen van IPv6.

In de vroege jaren 1990 werden mensen zich bewust van de snel krimpende adresruimte van IPv4. De uitbreidingssnelheid van het Internet baarde twee grote zorgen:

IPv6 behandelt deze en vele andere zaken:

IPv6 heeft ook vele andere nuttige eigenschappen zoals:

Bekijk voor meer informatie:

32.12.1. Achtergrond over IPv6 adressen

Er zijn verschillende soorten IPv6-adressen: unicast, anycast, en multicast.

Unicast-adressen zijn de bekende adressen. Een pakket dat naar een unicast-adres wordt verzonden arriveert precies op de interface dat bij dat adres hoort.

Anycast-adressen zijn syntactisch niet van unicast-adressen te onderscheiden maar ze adresseren een groep interfaces. Een pakket dat bestemd is voor een anycast-adres zal bij de dichtstbijzijnde interface arriveren (in router-metrieken). Anycast-adressen mogen alleen door routers worden gebruikt.

Multicast-adressen identificeren een groep interfaces. Een pakket dat bestemd is voor en multicast-adres zal bij alle interfaces die bij de multicast-groep horen arriveren.

Opmerking: Het broadcast-adres van IPv4 (gewoonlijk xxx.xxx.xxx.255) wordt in IPv6 met multicast-adressen uitgedrukt.

Tabel 32-3. Gereserveerde IPv6-adressen

IPv6-adres Prefixlengte (bits) Beschrijving Opmerkingen
:: 128 bits niet gespecificeerd cf. 0.0.0.0 in IPv4
::1 128 bits teruglusadres cf. 127.0.0.1 in IPv4
::00:xx:xx:xx:xx 96 bits ingebouwd IPv4 De laagste 32 bits zijn het IPv4-adres. Ook “IPv4 compatibel IPv6-adres” genoemd.
::ff:xx:xx:xx:xx 96 bits IPv4-afgebeeld IPv6-adres De laagste 32 bits zijn het IPv4-adres. Voor hosts die geen IPv6 ondersteunen.
fe80:: - feb:: 10 bits link-lokaal cf. teruglusadres in IPv4
fec0:: - fef:: 10 bits site-lokaal  
ff:: 8 bits multicast  
001 (base 2) 3 bits globale unicast Alle globale unicast-adressen worden vanuit deze pool toegewezen. De eerste 3 bits zijn “001”.

32.12.2. IPv6-adressen lezen

De canonieke vorm wordt weergegeven als: x:x:x:x:x:x:x:x, waarbij elke “x” een 16-bits hexadecimale waarde is. Bijvoorbeeld FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

Vaak bevat een adres lange deelstrings van allen nullen, daarom kan per adres één zo'n deelstring worden afgekort als “::”. Ook kunnen maximaal drie voorlopende “0”'s per hexadecimaal viertal worden weggelaten. Bijvoorbeeld, fe80::1 komt overeen met de canonieke vorm fe80:0000:0000:0000:0000:0000:0000:0001.

Een derde vorm is het schrijven van de laatste 32 bits in de bekende (decimale) IPv4-stijl met punten “.” als scheidingstekens. Bijvoorbeeld, 2002::10.0.0.1 komt overeen met de (hexadecimale) canonieke representatie 2002:0000:0000:0000:0000:0000:0a00:0001 wat weer hetzelfde is als 2002::a00:1.

Op dit punt dient de lezer het volgende te begrijpen:

# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
        inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
        ether 00:00:21:03:08:e1
	media: Ethernet autoselect (100baseTX )
        status: active

fe80::200:21ff:fe03:8e1%rl0 is een automatisch ingesteld link-lokaal adres. Het is als deel van de automatische instelling vanuit het MAC-adres aangemaakt.

Kijk voor verdere informatie over de structuur van IPv6-adressen op RFC3513.

32.12.3. Verbinding krijgen

Er zijn momenteel vier manieren om met andere IPv6-hosts en -netwerken te verbinden:

32.12.4. DNS in de IPv6-wereld

Er waren twee soorten DNS-records voor IPv6. De IETF heeft A6-records overbodig verklaard. AAAA-records zijn nu de standaard.

AAAA-records gebruiken gaat rechttoe-rechtaan. Wijs de hostnaam toe aan het nieuwe IPv6-adres dat net ontvangen is door het volgende aan de DNS-bestand voor primaire zones toe te voegen:

MIJNHOSTNAAM          AAAA    MIJNIPv6ADRES

Vraag het aan de DNS-provider indien de DNS-zones niet zelf worden geserveerd. De huidige versies van bind (versie 8.3 en 9) en dns/djbdns (met de IPv6-patch) ondersteunen AAAA-records.

32.12.5. De benodigde wijzigingen doorvoeren in /etc/rc.conf

32.12.5.1. IPv6-cliëntinstellingen

Deze instellingen helpen bij het configureren van een machine in het LAN die als cliënt in plaats van router dienst zal doen. Om rtsol(8) automatisch de interface tijdens het opstarten te laten configureren op FreeBSD 9.X en nieuwer dient het volgende aan rc.conf toegevoegd te worden:

ipv6_prefer="YES"

Voeg voor FreeBSD 8.X en ouder het volgende toe:

ipv6_enable="YES"

Voeg het volgende toe om statisch een IP-adres zoals 2001:471:1f11:251:290:27ff:fee0:2093 aan de interface fxp0 toe te voegen voor FreeBSD 9.X:

ifconfig_fxp0_ipv6="2001:471:1f11:251:290:27ff:fee0:2093 prefixlen 64"

Opmerking: Zorg ervoor dat prefixlen 64 wordt vervangen door de juiste waarde voor het subnet van de computer.

Voeg voor FreeBSD 8.X het volgende toe:

ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"

Voeg het volgende aan /etc/rc.conf toe om een standaardrouter 2001:471:1f11:251::1 toe te wijzen:

ipv6_defaultrouter="2001:471:1f11:251::1"

32.12.5.2. IPv6 router/gateway instellingen

Deze paragraaf helpt bij het opvolgen van de aanwijzingen die de tunnelprovider heeft gegeven en ze om te zetten in instellingen die blijven na een herstart. Om de tunnel tijdens het opstarten te herstellen kan het volgende in /etc/rc.conf gebruikt worden:

Noem de generieke tunnelinterfaces die zullen worden ingesteld, bijvoorbeeld gif0:

gif_interfaces="gif0"

Om de interface met een lokaal eindpunt MIJN_IPv4_ADRES in te stellen naar een ver eindpunt VER_IPv4_ADRES:

gifconfig_gif0="MIJN_IPv4_ADRES VER_IPv4_ADRES"

Voeg het volgende toe om het IPv6-adres dat is toegewezen als het eindpunt van de IPv6-tunnel te gebruiken voor FreeBSD 9.X en nieuwer:

ifconfig_gif0_ipv6="inet6 MIJN_TOEGEWEZEN_IPv6_TUNNEL_EINDPUNT_ADRES"

Voeg voor FreeBSD 8.X en eerder het volgende toe:

ipv6_ifconfig_gif0="MIJN_TOEGEWEZEN_IPv6_TUNNEL_EINDPUNT_ADRES"

Nu hoeft alleen de standaardroute voor IPv6 ingesteld te worden. Dit is de andere kant van de IPv6-tunnel:

ipv6_defaultrouter="MIJN_IPv6_VER_TUNNEL_EINDPUNT_ADRES"

32.12.5.3. IPv6-tunnelinstellingen

Indien de server gebruikt wordt om IPv6 tussen de rest van het netwerk en de wereld te routen, is ook de volgende instelling in /etc/rc.conf nodig:

ipv6_gateway_enable="YES"

32.12.6. Routeradvertentie en automatische hostconfiguratie

Deze sectie helpt bij het instellen van rtadvd(8) om de standaard IPv6-route te adverteren.

Het volgende is nodig in /etc/rc.conf om rtadvd(8) aan te zetten:

rtadvd_enable="YES"

Het is belangrijk om de interface te specificeren waarop het IPv6-routerverzoek plaatsvindt. Om bijvoorbeeld rtadvd(8) te vertellen om fxp0 te gebruiken:

rtadvd_interfaces="fxp0"

Nu dient het instellingenbestand /etc/rtadvd.conf aangemaakt te worden. Hier is een voorbeeld:

fxp0:\
	:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:

Vervang fxp0 door de interface die gebruikt gaat worden.

Vervang vervolgens 2001:471:1f11:246:: met de prefix van uw toewijzing.

Indien een /64 subnet is toegewezen, hoeft er verder niets veranderd te worden. In andere gevallen dient de juiste waarde voor prefixlen# gebruikt te worden.