Guide du routeur IPv6
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
Ceci assume que le lien symbolique /usr/src/linux pointe sur les sources que vous allez utiliser.
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
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.
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:
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
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.
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.
## (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 :
$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
$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.
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.
## (*.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
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 :
## (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.
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;
};
};
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
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 .
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.
- www.ipv6.org - General IPv6 information
- www.linux-ipv6.org/ - USAGI project
- www.deepspace6.net - Linux/IPv6 site
- www.kame.net - *BSD implementation
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.