Guide du routeur IPv6

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page IPv6 router guide and the translation is 53% complete.
Outdated translations are marked like this.


This guide provides details on setting up IPv6 routing on a Gentoo Linux system.

Préliminaires

Configuration basique du noyau

N'importe quel arbre basé sur un noyau 2.6 disponible dans Gentoo prend facilement en charge les connexions IPv6. La nouvelle pile IPv6 USAGI est intégrée das le noyau depuis Linux 2.6.0.

root #emerge --ask sys-kernel/gentoo-sources

Vous êtes désormais prêt à entrer dans le répertoire des sources du noyau et à commencer la configuration de votre noyau.

root #cd /usr/src/linux
root #make menuconfig
Remarque
Ceci assume que le lien symbolique /usr/src/linux pointe sur les sources que vous allez utiliser.
KERNEL 'make menuconfig' options
Networking support --->
  Networking options --->
    <*> The IPv6 protocol --->
## (Les options IPv6 sous celle-ci peuvent être utiles pour beaucoup d'autres applications,
## mais ne devraient pas être nécessaires pour une installation basique.)

## (Cette option n'est nécessaire que si vous utilisez  ptrtd pour des conversions  6 vers 4 )
Device Drivers --->
  Network device support --->
    <*> Universal TUN/TAP device driver support

Tester la prise en charge de l'IPv6

Après avoir activé les options recommandées, recompilez votre noyau et redémarrez avec votre nouveau noyau pour lequel IPv6 est activé.

Si vous n'avez pas encore iproute2 installé, nous vous enjoignons de le faire maintenant. iproute2 est une suite de configuration de réseau qui contient ip, le remplaçant célèbre de ifconfig, route , iptunnel et autres...

root #emerge --ask sys-apps/iproute2
Attention !
L'utilisation de ifconfig peut vous causer de sérieuses prises de tête si vous avez de multiples périphériques tunnel. Vous devez retirer les tunnels dans l'ordre inverse, ce qui signifie que le dernier créé doit être retiré le premier et ainsi de suite. Vous êtes prévenu !

Si IPv6 fonctionne, le périphérique de boucle de retour (loopback device) devrait indiquer une adresse IPv6 :

root #ip -6 addr show lo
1: lo: <LOOPBACK,UP> mtu 16436
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
    ## (Les lignes ci-dessus montrent que tout fonctionne correctement)

Avant d'aller plus loin, assurez-vous que vous avez ajouté « ipv6 » à votre liste des options de la variable USE dans le fichier make.conf, de telle façon que les installations futures des paquets incluront la prise en charge de l'IPv6.

Configuration des tunnels

Configuration de base

La plupart des FAI n'offre pas de connexion IPv6 nativement. Pour contourner cette limitation, il y a plusieurs plusieurs « courtiers en tunnels » de par le monde qui offrent des tunnels IPv6 libres. Ceci vous permet de créer un tunnel pour toutes vos connexions IPv6 via une connexion IPv4.

Courtier Localisation
Hurricane Electric North America, Europe, Asia
Freenet6 US
Sixxs Europe
Singnet Singapore
Aarnet Australia/South Pacific

Ci-dessous, nous présentons deux exemples de création de tunnel avec deux courtiers populaires nord américains, Hurricane Electric (s'applique tout aussi bien aux tunnels non heartbeat de sixx) et Freenet6.

Hurricane Electric

Hurricane Electric (HE en abrégé) propose des tunnels IPv6 et réserve un bloc d'adresses /64 pour vous. Il autorise aussi la configuration du DNS inverse. Obtenir un tunnel de HE est aussi simple que de se rendre sur https://www.tunnelbroker.net/ et de remplir un formulaire.

Remarque
L'enregistrement comprend des informations telles que votre adresse et votre numéro de téléphone.

Dès qu'un tunnel vous a été accordé et que vous avez un bloc d'adresses /64 alloué, vous pouvez configurer votre système Gentoo. HE fournit des exemples de configuration basés sur les utilitaires ifconfig et iproute. Les deux exemples qui suivent supposent que vous avez la configuration suivante :

Local IPv4 Address (eth0) 68.36.91.195
HE IPv4 Address 64.71.128.82
Local IPv6 tunnel Address 2001:470:1F00:FFFF::189
IPv6 Block 2001:470:1F00:296::/64

En utilisant le paquet iproute2 et en exécutant la commande ip vous pourrez faire ceci :

Créer un tunnel entre l'IPv4 local (eth0) et l'adresse IPv4 distante de HE.

root #ip tunnel add he6 mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0

Extraire le surcoût du « tunnelling » du MTU :

root #ip link set he6 mtu 1280

Démarrer le tunnel :

root #ip link set he6 up

Assigner l'adresse IPv6 à ce tunnel :

root #ip addr add 2001:470:1F00:FFFF::2 dev he6

Router toutes les adresses IPv6 unicast à travers votre périphérique tunnel 'sixbone' :

root #ip route add 2000::/3 dev he6

The following example shows how to establish this at boot time:

CODE netifrc example
iptunnel_he6="mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0"
depend_he6="net.eth0"
config_he6="2001:470:1F00:FFFF::2/64"
routes_he6="default via 2001:470:1F00:FFFF::1 dev he6"
mtu_he6="1280"

To make this device start on boot:

root #cd /etc/init.d
root #ln -s net.lo net.he6
root #rc-update add net.he6 default
Remarque
If there is no default policy of ACCEPT for the IPv4 iptables then add:
root #iptables -A INPUT -i eth0 -p ipv6 -j ACCEPT

When tunneling IPv6 over IPv4, the packets will first come through the IPv4 chain before being passed to the IPv6 chain.

Tester votre connexion

Maintenant que votre tunnel est configuré, vous pouvez tester votre connexion. La manière la plus facile de le faire est d'utiliser l'utilitaire ping6 et d'essayer d'obtenir un écho d'un hôte IPv6.

root #emerge --ask iputils
user $ping6 www.kame.net
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=1 ttl=52 time=290 ms
64 bytes from orange.kame.net: icmp_seq=2 ttl=52 time=277 ms
64 bytes from orange.kame.net: icmp_seq=3 ttl=52 time=280 ms
64 bytes from orange.kame.net: icmp_seq=4 ttl=52 time=279 ms
64 bytes from orange.kame.net: icmp_seq=5 ttl=52 time=277 ms
--- www.kame.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4038ms
rtt min/avg/max/mdev = 277.040/281.041/290.046/4.699 ms

Prise en charge de l'IPv6 par les applications

Réinstaller des paquets

Sauf si vous avez déclaré l'option ipv6 de la variable USE dans votre fichier /etc/portage/make.conf auparavant, vous aurez probablement besoin de réinstaller un ensemble de paquets pour les recompiler avec la prise en charge de l'IPv6. Pour obtenir la liste des paquets installés qui seront affectés par le changement d'options de la variable USE, utilisez l'option --newuse ( -N ) de la commande emerge.

root #emerge -uDNav @world

Si vous avez changé beaucoup d'options de la variable USE, cette liste peut s'avérer très longue. Il est recommandé de maintenir votre système à jour, ainsi ça ne causera aucun dommage si vous recompilez tous les paquets affectés.

Remarque
Quelques paquets détectent la prise en charge de l'IPv6 automatiquement et ne possèdent par conséquent pas d'option IPv6 pour la variable USE. En conséquence, il pourra y avoir certains paquets, qui devraient prendre en charge l'IPv6, qui ne le feront pas si vous ne les avez pas compilés avec un noyau pour lequel l'IPv6 était activé.

Paquets spécifiques IPv6

Il existe quelques paquets qui concernent spécifiquement des items IPv6. La plupart est localisée dans /usr/portage/net-misc.

Package Description
net-misc/ipv6calc Converts an IPv6 address to a compressed format
net-misc/netcat6 netcat version that supports IPv6 and IPv4
dev-perl/Socket6 IPv6 related part of the C socket.h defines and structure manipulators

Mise en place du DNS

IPv6 et DNS

Tout comme DNS utilise des enregistrements A pour l'IPv4, DNS utilise des enregistrements AAAA pour IPv6.(Ceci est dû au fait que IPv4 est un espace d'adressage de 2^32 alors que IPv6 est un espace d'adressage de 2^128). Pour le DNS inverse, la norme INT est déconseillée, car en voie d'obsolescence, mais encore largement prise en charge. ARPA est la norme actuelle. La prise en charge du format ARPA sera décrite ici.

Configuration de BIND

Des versions récentes de BIND incluent une excellente prise en charge de l'IPv6. Cette section suppose que vous avez au moins une connaissance minimale sur la configuration et l'utilisation de BIND. Elle suppose également que vous n'exécutez pas BIND dans un environnement obtenu après changement de racine. Si c'était le cas, ajoutez le préfixe de cet environnement à la majorité des chemins indiqués dans la section qui suit.

Tout d'abord, vous devez ajouter des entrées pour, à la fois, les fichiers des zones DNS directes et ceux des zones DNS inverses dans /etc/bind/named.conf.

FILE /etc/bind/named.confnamed.conf entries
## (Nous autorisons  bind à écouter des adresses IPv6 .
## Utiliser  'any' est la seule manière de le faire avant  bind-9.3)
options {
    [...]
    listen-on-v6 { any; }
    [...]
};
## (Ceci fournira  le DNS direct pour le domaine 'ipv6-rules.com':)
zone "ipv6-rules.com" IN {
    type master;
    file "pri/ipv6-rules.com";
};
## (Ce format pour le DNS inverse est "bitwise"(bit par bit). Il est formé en prenant le préfixe IPv6, 
## inversant l'ordre de chiffres et mettant un point entre chaque chiffre.)
zone "6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa" {
        type master;
        file "pri/rev-ipv6-rules.com.arpa";
};

Maintenant vous devez créer ces fichiers de zone et ajouter des entrées pour tous vos hôtes :

FILE /etc/bind/pri/ipv6-rules.com
$TTL    2h
@       IN      SOA     ipv6-rules.com. webmaster.ipv6-rules.com.  (
                                2003052501 ; Serial
                                28800      ; Refresh
                                14400      ; Retry
                                3600000    ; Expire
                                86400 )    ; Minimum
                NS      ns1.ipv6-rules.com
 
IN      AAAA    2001:470:1f00:296::1 ; address for ipv6-rules.com
host1   IN      AAAA    2001:470:1f00:296::2 ; address for host1.ipv6-rules.com
host2   IN      AAAA    2001:470:1f00:296::3:3 ; address for host2.ipv6-rules.com
FILE /etc/bind/pri/rev-ipv6-rules.com.arpa
$TTL 3d ; Default TTL (bind 8 needs this, bind 9 ignores it)
@       IN SOA ipv6-rules.com. webmaster.ipv6-rules.com. (
                        2003052501      ; Serial number (YYYYMMdd)
                        24h             ; Refresh time
                        30m             ; Retry time
                        2d              ; Expire time
                        3d )            ; Default TTL
        IN      NS     ns1.ipv6-rules.com.
; IPv6 PTR entries
$ORIGIN 6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa.
 
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     ipv6-rules.com.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host1.ipv6-rules.com.
3.0.0.0.3.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host2.ipv6-rules.com.

Configuration de DJBDNS

Il existe actuellement quelques correctifs de tierces parties à DJBDNS disponibles à http://www.fefe.de/dns/ qui lui permettent d'assurer le service de noms IPv6. DJBDNS peut être installé avec ces correctifs en l'installant avec l'option ipv6 de la variable USE.

Attention !
Tous les types d'enregistrements ne sont pas pris en charge actuellement avec ces correctifs. En particulier, les enregistrements NS et MX ne sont pas pris en charge.
root #emerge --ask net-dns/djbdns

Dès que djbdns est installé, il peut être configuré en lançant tinydns-setup et en répondant à quelques questions du type, à quelles adresses IP lier, où installer tinydns, etc.

root #tinydns-setup

En supposant que vous avez installé tinydns dans /var/tinydns , vous pouvez maintenant éditer /var/tinydns/root/data. Ce fichier contiendra toutes les données nécessaires à tinydns pour prendre en charge le DNS pour votre délégation IPv6.

CODE sample data file
## (*.ipv6-rules.com is authoritatively handled by 192.168.0.1)
.ipv6-rules.com:192.168.0.1:a:259200
## (Authoritative reverse DNS for 2001:470:1f00:296::/64)
.6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa:192.168.0.1:a
## (Specify the IPs for host1 and host2)
6host1.ipv6-rules.com:200104701f0002960000000000000001:86400
6host2.ipv6-rules.com:200104701f0002960000000000000002:86400
## (Point www to host1)
3www.ipv6-rules.com:200104701f0002960000000000000002:86400

Les lignes préfixées par un 6 auront à la fois des enregistrement AAAA et PTR créés.Celles préfixées par un 3 n'auront qu'un enregistrement AAAA créé. En plus d'éditer manuellement le fichier data, vous pouvez utiliser les scripts add-host6 et add-alias6 pour ajouter de nouvelles entrées. Après que les changements au fichier data sont faits, il vous suffit d'exécuter make depuis /var/tinydns/root. Cela créera le fichier /var/tinydns/root/data.cfb que tinydns utilisera comme source d'information pour les requêtes DNS.

Routeur IPv6

Configurer le routage

Des compléments doivent être apportés à la configuration si vous voulez utiliser votre système comme un routeur pour d'autres clients désireux de se connecter au monde extérieur en IPv6. Vous devez activer le transfert de paquets IPv6. Cela peut se faire de deux manières :

Soit vous définissez la valeur 1 dans le pseudo fichier de transfert :

root #echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
root #echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Soit vous utilisez la commande sysctl :

root #sysctl -w net.ipv6.conf.all.forwarding=1
Attention !
Le script d'initialisation radvd présenté dans le chapitre suivant active (et désactive) le transfert, rendant l'étape suivante inutile.

Pour activer le transfert au démarrage, vous devez éditer le fichier /etc/sysctl.conf et y ajouter la ligne suivante :

CODE sysctl.conf addition
## (Si vous avez choisi d'utiliser  radvd, cette étape n'est pas nécessaire)
net.ipv6.conf.default.forwarding=1

Le trafic devrait maintenant être transféré de ce système à travers le tunnel que vous avez établi chez votre courtier.

Pour attribuer des adresses IPv6 aux clients, la spécification IPv6 autorise à la fois l'attribution d'adresses IP sans état et avec état. Les attributions sans état utilisent un processus appelé Router Advertisement (publicité de routeur) et permettent aux clients d'obtenir une adresse IP et une route par défaut en activant une interface. Elles sont appelées sans état parce qu'il n'y a pas d'enregistrement de l'adresse IP attribuée et de l'hôte auquel elle est attribué.L'attribution avec état est prise en charge par DHCPv6. Elle est dite avec état parce que le serveur conserve un état du client qui a requis les adresses IP et les a reçues.

Configuration sans état

La configuration sans état est facilement réalisée en utilisant le démon Router Advertisement(publicité de routeur), ou radvd.

root #emerge --ask radvd

Après avoir installé radvd, vous devez créer un fichier /etc/radvd/radvd.conf qui contient l'information précisant à partir de quel bloc d'adresses IP attribuer les adresses IP. Voici un exemple de fichier radvd.conf utilisant le préfixe attribué par le courtier en tunnel.

CODE Sample radvd.conf
interface eth1
{
        ## (Send advertisement messages to other hosts)
        AdvSendAdvert on;
        ## (Fragmentation is bad(tm))
        AdvLinkMTU 1280;
        MaxRtrAdvInterval 300;
        ## (IPv6 subnet prefix we've been assigned by our PoP)
        prefix 2001:470:1F00:296::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};
Attention !
Assurez-vous que l'interface sur la première ligne est correcte de telle manière que vous diffusiez la publicité du routeur sur votre intranet et non pas vers votre FAI !

Une information plus complète est disponible dans la page de manuel man radvd.conf.

root #/etc/init.d/radvd start
root #rc-update add radvd default

Configuration avec état

Attention !
Dibbler project is concluded.

Si vous désirez avoir une configuration avec état, vous devez installer et configurer net-misc/dibbler.

root #emerge --ask dibbler

Vous devez maintenant configurer le client dibbler en éditant le fichier /etc/dibbler/client.conf .

CODE Sample dibbler client configuration
iface ppp0 {
	rapid-commit yes
	pd
	option dns-server
}

Vous pouvez maintenant démarrer le client dibbler, et le configurer pour qu'il soit lancé au démarrage

root #/etc/init.d/dibbler-client start
root #rc-update add dibbler-client default

Clients IPv6

Utiliser radvd

Les clients derrière ce routeur devraient désormais être capables de se connecter au reste d'Internet via IPv6. Si vous utilisez ravd, la configuration des hôtes devrait être aussi facile que de démarrer les interfaces. (Ceci est probablement déjà fait par votre script d'initialisation net.ethX).

root #ip link set eth0 up
root #ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP> mtu 1400 qdisc pfifo_fast qlen 1000
    link/ether 00:01:03:2f:27:89 brd ff:ff:ff:ff:ff:ff
    inet6 2001:470:1f00:296:209:6bff:fe06:b7b4/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::209:6bff:fe06:b7b4/64 scope link
       valid_lft forever preferred_lft forever
    inet6 ff02::1/128 scope global
       valid_lft forever preferred_lft forever

Should this not work ensure that the IPv6 firewall is allowing ICMPv6 packets through:

root #ip6tables -A INPUT -p icmpv6 -j ACCEPT

Ressources externes

Il y a de nombreuses et excellentes ressources sur IPv6 en ligne.

Sur IRC, vous pouvez essayer #ipv6 sur Freenode. Vous pouvez vous connecter au serveur Freenode en utilisant un client IPv6 et on vous connectant à irc.ipv6.freenode.net.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Peter Johanson, Jorge Paulo, Camille Huot, Pasi Valminen, , Markos Chandras (Hwoarang)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.