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
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-2. 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”. |
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.
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.
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.
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"
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"
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"
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.