FreeBSD handboek
Terug | Hoofdstuk 32. Geavanceerde netwerken | Volgende

# 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:

- Geen adresruimte meer. Tegenwoordig is dit niet zo'n probleem meer aangezien RFC1918 voor privé-adresruimte (`10.0.0.0/8`, `172.16.0.0/12`, en `192.168.0.0/16`) en Network Address Translation (NAT) worden gebruikt.

- De regels in de routeertabellen werden te groot. Dit is tegenwoordig nog steeds een probleem.

IPv6 behandelt deze en vele andere zaken:

- 128-bits adresruimte. Met andere woorden, er zijn theoretisch 340.282.366.920.938.463.463.374.607.431.768.211.456 adressen beschikbaar. Dit betekent dat er ongeveer 6,67 * 10^27 IPv6-adressen per vierkante meter op onze planeet beschikbaar zijn.

- Routers zullen alleen netwerkaggregatie-adressen in hun routeertabellen opslaan en dus de gemiddelde ruimte van een routeertabel verkleinen tot 8192 regels.

IPv6 heeft ook vele andere nuttige eigenschappen zoals:

- Automatische adresconfiguratie (RFC2462)

- Anycast-adressen (ééen-van-velen)

- Verplichte multicast-adressen

- IPsec (IP security)

- Versimpelde structuur van de headers

- Mobiele IP

- Overgangsmechanismen voor IPv6 naar IPv4

Bekijk voor meer informatie:

- IPv6-overzicht op playground.sun.com

- KAME.net

## 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:

- Neem contact op met de Internetprovider om te zien of ze al IPv6 aanbieden.

- SixXS biedt wereldwijd tunnels met eindpunten aan.

- Tunnelen via 6-naar-4 (RFC3068)

- Gebruik de poort `net/freenet6` indien er een inbelverbinding wordt gebruikt.

## 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 dient het volgende toegevoegd te worden:

    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:

    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:

    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.

Terug | Begin | Volgende
Parallel Line IP (PLIP) | Omhoog | Asynchronous Transfer Mode (ATM)