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
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
Emerge
root #
emerge --ask sys-apps/iproute2
root #
emerge --ask net-misc/radvd
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.
Additional software
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/radvd | Router advertisement daemon |
net-misc/dhcpd | ISC DHCP server, DHCPv4 and DHCPv6 capability |
net-misc/dibbler | DHCPv6 server |
net-misc/ipv6calc | Converts an IPv6 address to a compressed format |
dev-perl/Socket6 | IPv6 related part of the C socket.h defines and structure manipulators |
Confirming IPv6 status
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)
Routeur IPv6
Obtaining an address and prefix
dhcpcd can be used to obtain a single, host only, /128 IPv6 address for the WAN interface, and a /64 IPv6 prefix for the LAN interface.
/etc/dhcpcd.conf
Request a IPv6 prefix for eth0.lan and eth0.management to be routed publicly with eth0.wan.# Disable router solicitations for all interfaces, enable only for selected ones
noipv6rs
# Interface configuration for the wan vlan on the eth0 interface
interface eth0.wan
# Enable router solicitation for this interface
ipv6rs
# Request a normal address usins iaid 1 for interface eth0.wan
ia_na 1
# Request a prefix using iaid 2 and assign it to the eth0.lan interface using sla_id 0 and prefix size of 64
ia_pd 2 eth0.lan/0/64
Dhcpcd
rfc6177 is barely seen as a recommendation by residential ISPs, Prefix Delegation may not work.
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 :
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 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.
The IPv6 Stateless Address Autoconfiguration configures IP routing and connectivity, the DHCPv6 is required to assign IPv6 addresses, and provide information such as DNS servers.
Configuration sans état
La configuration sans état est facilement réalisée en utilisant le démon Router Advertisement(publicité de routeur), ou 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 !
Further information is available in man radvd.conf.
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
Service
OpenRC
To start radvd and start it on boot:
root #
/etc/init.d/radvd start
root #
rc-update add radvd default
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.
/etc/bind/named.conf
named.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 :
/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
/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.
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.
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
Troubleshooting
Package is missing IPv6 support
Packages will typically emerge with the ipv6
USE flag, but if IPv6 is not working on a specific program, checking that it is built with that is a good first step.
There is no issue adding
USE="ipv6"
to /etc/portage/make.conf, but this is often unnecessary.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é.
See Also
- IPv6 — the most recent version of the Internet Protocol (IP)
- IPv6 tunnels
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
- RFC 4861 - Neighbor Discovery for IP version 6 (IPv6)
- RFC 4862 - IPv6 Stateless Address Autoconfiguration
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.