Manuel FreeBSD
Précédent | Chapitre 30. Administration réseau avancée | Suivant

# 30.10. IPv6

Ecrit original de Aaron Kaplan. Restructuré et ajouté par Tom Rhodes. Complété par Brad Davis.

L'IPv6 (également connu sous le nom de IPng “IP nouvelle génération”) est la nouvelle version du très célèbre protocole IP (aussi connu sous le nom d'IPv4). Comme les autres systèmes BSD, FreeBSD utilise l'implémentation IPv6 KAME. Votre système FreeBSD est donc fourni avec tout ce dont vous aurez besoin pour tester l'IPv6. Cette section se concentre sur la configuration et l'utilisation d'IPv6.

Au début des années 90, on a pris conscience de la diminution rapide de l'espace d'adresses IPv4. Etant donné le taux d'expansion de l'Internet, deux problèmes majeurs apparaissaient:

- Le manque d'adresses. Aujourd'hui ce n'est plus vraiment un problème puisque les espaces d'adresses privées RFC1918 (`10.0.0.0/8`, `172.16.0.0/12`, et `192.168.0.0/16`) et la translation d'adresses (NAT) sont utilisés.

- Les tables des routeurs devenaient trop importantes. C'est toujours un problème actuellement.

L'IPv6 remédie à ces problèmes et à de nombreux autres:

- Espace d'adressage sur 128 bits. Ou plus précisément, il y a 340 282 366 920 938 463 463 374 607 431 768 211 456 adresses disponibles. Cela équivaut à approximativement 6.67 * 10^27 adresses IPv6 par kilomètre-carré de surface de notre planète.

- Les routeurs ne stockeront que des regroupements d'adresses dans leurs tables de routage réduisant donc l'espace moyen d'une table de routage à 8192 entrées.

IPv6 présente également de nombreuses autres intéressantes fonctionnalités telles que:

- L'autoconfiguration des adresses (RFC2462)

- Adresses unicast (“une parmi plusieurs”)

- Adresses multicast (multidestinataires) obligatoires

- IPsec (protocole de sécurité IP)

- Struture d'entête simplifiée

- IP mobile

- Mécanismes de transition IPv6-vers-IPv4

Pour plus d'informations consultez les références suivantes:

- Généralités sur l'IPv6 à playground.sun.com

- KAME.net

- 6bone.net

## 30.10.1. Les adresses IPv6

Il existe différent types d'adresses IPv6: unicast, anycast et multicast.

Les adresses unicast (mono-destinataire) sont les adresses classiques. Un paquet envoyé à une adresse unicast arrive à l'interface correspondant à l'adresse.

Les adresses anycast ne sont normalement pas distinguables des adresses unicast mais correspondent à un groupe d'interfaces. Un paquet destiné à une adresse anycast arrivera à l'interface la plus proche (en terme d'unité de distance du protocole de routage). Les adresses anycast devraient n'être utilisées que par les routeurs.

Les adresses multicast identifient un groupe d'interfaces. Un paquet destiné à une adresse multicast arrivera sur toutes les interfaces appartenant au groupe multicast.

> Note : L'adresse de diffusion IPv4 (généralement `xxx.xxx.xxx.255`) est exprimée par des adresses multicast en IPv6.

Tableau 30-2. Adresses IPv6 réservées

Adresse IPv6 | Longueur du préfixe (bits) | Description | Notes
--- | --- | --- | ---
`::` | 128 bits | non-spécifiée | similaire à `0.0.0.0` sous IPv4
`::1` | 128 bits | adresse de boucle | similaire à `127.0.0.1` sous IPv4
`::00:xx:xx:xx:xx` | 96 bits | IPv4 encapsulé | Les 32 bits de poids faible sont l'adresse IPv4. Egalement appelée “adresse IPv6 compatible IPv4”.
`::ff:xx:xx:xx:xx` | 96 bits | adresse IPv6 mappée IPv4 | Les 32 bits de poids faible sont l'adresse IPv4. Destinées aux machines ne supportant pas l'IPv6.
`fe80::` - `feb::` | 10 bits | lien-local | similaire à l'interface de boucle sous IPv4
`fec0::` - `fef::` | 10 bits | site-local |
`ff::` | 8 bits | multicast |
`001` (base 2) | 3 bits | unicast globale | Toutes les adresses unicast globales sont assignées à partir de ce pool. Les trois premiers bits de l'adresse sont “001”.

## 30.10.2. Lecture des adresses IPv6

La forme canonique est représentée suivant le schéma: `x:x:x:x:x:x:x:x`, où chaque “x” est une valeur héxadécimale sur 16 bits. Par exemple `FEBC:A574:382B:23C1:AA49:4592:4EFE:9982`

Souvent dans une adresse on aura de longues sous-parties constituées de zéros, une telle sous-partie peut être abrégée par “::”. Les trois “0”s de poids fort de chaque quartet hexadécimal peuvent également être omis. Par exemple `fe80::1` correspond à la forme canonique `fe80:0000:0000:0000:0000:0000:0000:0001`.

Une troisième forme est d'écrire les derniers 32 bits dans le style IPv4 bien connu (décimal) avec des points “.” comme séparateurs. Par exemple `2002::10.0.0.1` correspond à la représentation canonique (hexadécimale) `2002:0000:0000:0000:0000:0000:0a00:0001` qui est à son tour équivalente à l'écriture `2002::a00:1`.

Maintenant le lecteur devrait être en mesure de comprendre ce qui suit:

    # 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` est une adresse de lien local configurée automatiquement. Elle est générée à partir de l'adresse MAC dans le cas de l'autoconfiguration.

Pour plus d'informations sur la structure des adresses IPv6 consultez la RFC3513.

## 30.10.3. Se connecter

Actuellement, il y a quatre façons de se connecter à des machines et des réseaux utilisant l'IPv6:

- Rejoindre le réseau expérimental 6bone

- Obtenir un réseau IPv6 auprès de votre fournisseur d'accès. Contactez votre fournisseur d'accès Internet pour plus d'informations.

- Utilisation d'un tunnel 6-vers-4 (RFC3068)

- Utilisation du logiciel porté `net/freenet6` si vous utilisez une connexion par modem.

Ici nous ne parlerons que de la manière de se connecter au réseau 6bone puisque cela semble être aujourd'hui la méthode de connexion la plus populaire.

Consultez tout d'abord le site 6bone et recherchez une connexion 6bone proche de vous. Contactez le responsable et avec un peu de chance on vous donnera les instructions à suivre pour configurer votre connexion. Généralement cela implique la mise en place d'un tunnel GRE (gif).

Voici un exemple typique de configuration d'un tunnel gif(4):

    # ifconfig gif0 create
    # ifconfig gif0
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    # ifconfig gif0 tunnel MON_ADR_IPv4 MON_ADR_IPv4_ASSIGNEE_A_LAUTRE_BOUT_DU_TUNNEL
    # ifconfig gif0 inet6 alias MON_ADR_IPv6_ASSIGNEE_A_LEXTREMITE_DU_TUNNEL MON_ADR_IPv6_ASSIGNEE_A_LAUTRE_BOUT_DU_TUNNEL

Remplacez les mots en majuscules par les informations que vous avez reçues du point d'accès 6bone.

Ceci établit le tunnel. Vérifiez si le tunnel fonctionne en utilisant ping6(8) sur l'adresse `ff02::1%gif0`. Vous devriez récevoir les réponses aux requêtes ping.

> Note : Au cas où vous seriez intrigué par l'adresse `ff02:1%gif0`, sachez que c'est une adresse multicast. `%gif0` précise que l'adresse multicast de l'interface `gif0` doit être utilisée. Puisque nous utilisons `ping` sur une adresse multicast, l'autre bout du tunnel devrait également répondre.

Désormais, la mise en place d'une route vers votre lien 6bone devrait être relativement directe:

    # route add -inet6 default -interface gif0
    # ping6 -n MON_LIEN_MONTANT

    # traceroute6 www.jp.FreeBSD.org
    (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
         1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
         2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
         3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
         4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
         5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
         6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms

La sortie pourra être différente d'une machine à une autre. Maintenant vous devriez être en mesure d'atteindre le site IPv6 www.kame.net et de voir la tortue dansante — et cela si vous disposez d'un navigateur supportant l'IPv6 comme `www/mozilla`, Konqueror qui fait partie du logiciel `x11/kdebase3`, ou `www/epiphany`.

## 30.10.4. DNS dans le monde IPv6

A l'origine, il existait deux types d'enregistrement DNS pour l'IPv6. L'organisme IETF a déclaré obsolète l'enregistrement A6. Les enregistrements AAAA sont aujourd'hui le standard.

L'utilisation des enregistrements AAAA est assez direct. Assignez votre nom de machine à la nouvelle adresse IPv6 que vous venez d'obtenir en ajoutant:

    MYHOSTNAME           AAAA    MYIPv6ADDR

à votre fichier de zone DNS primaire. Dans le cas où vous ne gérez pas vos propres zones DNS contactez le responsable de votre DNS. Les versions actuelles de bind (version 8.3 et 9) et `dns/djbdns` (avec le correctif IPv6) supportent les enregistrements AAAA.

## 30.10.5. Effectuer les changements nécessaires dans le fichier `/etc/rc.conf`

### 30.10.5.1. Paramétrage du client IPv6

Ces paramètres vous permettront de configurer une machine qui sera sur votre réseau local et sera un client, non pas un routeur. Pour que rtsol(8) configure automatiquement votre interface réseau au démarrage tout ce dont vous avez besoin d'ajouter est:

    ipv6_enable="YES"

Pour assigner une adresse IP statique telle que `2001:471:1f11:251:290:27ff:fee0:2093`, à votre interface `fxp0`, ajoutez:

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

Pour assigner le routeur par défaut `2001:471:1f11:251::1`, ajoutez ce qui suit au fichier `/etc/rc.conf`:

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

### 30.10.5.2. Paramétrage d'un routeur/passerelle IPv6

Ceci vous aidera à mettre en oeuvre les instructions que votre fournisseur de tunnel, tel que 6bone, vous a donné et à les convertir en paramètres qui seront conservés à chaque démarrage. Pour rétablir votre tunnel au démarrage, utilisez quelque chose comme ce qui suit dans le fichier `/etc/rc.conf`:

Listez les interfaces génériques de tunnel qui seront configurées, par exemple `gif0`:

    gif_interfaces="gif0"

Pour configurer l'interface avec une adresse (extrémité) locale `MY_IPv4_ADDR` vers une adresse (extrémité) distante `REMOTE_IPv4_ADDR`:

    gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"

Pour utiliser l'adresse IPv6 que l'on vous a assigné en vue d'être utilisée pour votre extrémité du tunnel IPv6, ajoutez:

    ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"

Ensuite tout ce qu'il reste à faire est de définir la route par défaut pour l'IPv6. C'est l'autre extrémité du tunnel IPv6:

    ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"

### 30.10.5.3. Paramétrage d'un tunnel IPv6

Si le serveur doit router de l'IPv6 entre votre réseau et le reste du monde, le paramètre suivant sera également nécessaire dans votre fichier `/etc/rc.conf`:

    ipv6_gateway_enable="YES"

## 30.10.6. Annonce du routeur et auto-configuration

Cette section vous aidera à configurer rtadvd(8) pour l'annonce de la route IPv6 par défaut.

Pour activer rtadvd(8), vous devrez ajouter ce qui suit à votre fichier `/etc/rc.conf`:

    rtadvd_enable="YES"

Il est important que vous indiquiez l'interface sur laquelle le routeur IPv6 sera sollicité. Par exemple pour que rtadvd(8) utilise `fxp0`:

    rtadvd_interfaces="fxp0"

Nous devons maintenant créer le fichier de configuration `/etc/rtadvd.conf`. Voici un exemple:

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

Remplacez `fxp0` avec l'interface que vous allez utiliser.

Ensuite remplacez `2001:471:1f11:246::` avec votre préfixe.

Si vous êtes un sous-réseau `/64` dédié, il ne sera pas nécessaire de modifier quelque chose d'autre. Sinon, vous devrez modifier `prefixlen#` avec la valeur correcte.

Précédent | Sommaire | Suivant
IP sur liaison parallèle (PLIP) | Niveau supérieur | ATM (“Asynchronous Transfer Mode”)

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.