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 30% complete.
Outdated translations are marked like this.


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

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
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

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.

FILE /etc/dhcpcd.confRequest 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
See also
Dhcpcd
Attention !
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
Attention !
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.

Remarque
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.

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 !
Conseil
Further information is available in man radvd.conf.

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

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.

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.

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.

Remarque
There is no issue adding USE="ipv6" to /etc/portage/make.conf, but this is often unnecessary.
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é.

See Also

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.