Principe
Pour que l'IPv6 fonctionne sur votre dédibox, il est indispensable, au préalable, de demander une plage d'IPv6. Ceci se fait dans la console de gestion.
Il faut ensuite mettre en œuvre la délégation de préfix (PD pour Prefix Delegation), c'est à dire vous authentifier auprès du routeur et lui demander de router votre préfix IPv6 vers votre dédibox.
ATTENTION : Si vous possédez plusieurs dedibox, seule l'une d'entre elle pourra se connecter en IPv6. Ceci est dû à l’implémentation choisie par online qui route toute votre classe d'IPv6 sur une seule machine.
Enfin, comme pour de l'IPv4 il faut configurer une adresse IPv6 sur votre dedibox et lui indiquer le routeur par défaut (default gateway)
Commander son bloc d'IPv6
Une fois votre bloc IPv6 commandé, vous devez trouver dans votre console de gestion :
- Votre bloc IPv6 sous la forme
2a01:0e0b:xxxx::/48
- Votre DUID, c'est à dire votre identifiant unique sur le réseau sous la forme
00:xx:xx:xx:xx:xx:xx:xx:xx:xx
Ces 2 informations vous seront indispensables
Délégation de préfixe
Afin de demander au routeur de router les paquets IPv6 de votre bloc vers votre serveur, il faut, en utilisant le protocole DHCPv6 vous authentifier auprès de lui.
Installation de dibbler
Pour cela, commençons par installer dibbler (implémentaiton DHCPv6)
root@localhost:~# apt-get install dibbler
[...]
root@localhost:~# service dibbler-client stop
Configuration de dibbler
Editer / créer le fichier /var/lib/dibbler/client-duid
et y mettre le DUID fourni par la console dedibox (garder ce DUID "secret" c'est votre identifiant pour récupérer votre /48)
Votre bloc IPv6 0a00:0e00:0000::/48
Duid 00:00:00:00:00:00:00:00:00:00
root@localhost:~# cat /var/lib/dibbler/client-duid
00:00:00:00:00:00:00:00:00:00
Configurez ensuite le fichier de conf /etc/dibbler/client.conf
:
# Defaults for dibbler-client.
# installed at /etc/dibbler/client.conf by the maintainer scripts
duid-type duid-ll
# 8 (Debug) is most verbose. 7 (Info) is usually the best option
log-level 8
# To perform stateless (i.e. options only) configuration, uncomment
# this line below and remove any "ia" keywords from interface definitions
# stateless
iface eth0 {
# prefix delegation
pd
# ask for options
# option dns-server
# option domain
# option ntp-server
# option time-zone
# option sip-server
# option sip-domain
# option nis-server
# option nis-domain
# option nis+-server
# option nis+-domain
}
Configuration du firewall
Si vous avez un firewall sur votre dedibox, assurez vous que les paquets UDP sur le port 546 sont bien autorisés
Par exemple :
root@localhost:~# ip6tables -A INPUT -p udp --dport 546 -j ACCEPT
Lancement de dibbler (et lecture des logs)
Lancer dibbler
root@localhost:~# service dibller-client start
Puis jetez un oeil dans le fichier de log /var/log/dibbler/dibbler-client.log
qui devrait ressembler à ceci :
2013.09.06 22:18:26 Client Notice | Dibbler - a portable DHCPv6, version 0.8.2 (CLIENT, Linux port)
2013.09.06 22:18:26 Client Notice My pid (28896) is stored in /var/lib/dibbler/client.pid
2013.09.06 22:18:26 Client Notice Detected iface eth1/3, MAC=aa:bb:cc:dd:ee:ff.
2013.09.06 22:18:26 Client Notice Detected iface eth0/2, MAC=aa:bb:cc:dd:ee:ff.
2013.09.06 22:18:26 Client Notice Detected iface lo/1, MAC=00:00:00:00:00:00.
2013.09.06 22:18:26 Client Notice Parsing /etc/dibbler/client.conf config file...
2013.09.06 22:18:26 Client Debug Prefix delegation option found.
2013.09.06 22:18:26 Client Debug Parsing /etc/dibbler/client.conf done, result=0
2013.09.06 22:18:26 Client Debug 1 interface(s) specified in /etc/dibbler/client.conf
2013.09.06 22:18:26 Client Info Interface eth0/2 configuation has been loaded.
2013.09.06 22:18:26 Client Debug DUID's value = 00:00:00:00:00:00:00:00:00:00 was loaded from client-duid file.
2013.09.06 22:18:26 Client Info My DUID is 00:00:00:00:00:00:00:00:00:00.
2013.09.06 22:18:26 Client Info Loading old address database (client-AddrMgr.xml), using built-in routines.
2013.09.06 22:18:26 Client Info DB timestamp:1378498106, now()=1378498706, db is 600 second(s) old.
2013.09.06 22:18:26 Client Debug Loaded PD from a file: t1=1800, t2=3600, iaid=1, iface=2
2013.09.06 22:18:26 Client Debug Parsed prefix 2a01:xxxx:xxxx::/48, pref=3800, valid=3800,ts=1378498106
2013.09.06 22:18:26 Client Debug Parsed PD, pdid=1, t1=1800, t2=3600
2013.09.06 22:18:26 Client Debug Client 00:00:00:00:00:00:00:00:00:00:00:00:00:00 loaded from disk successfuly (0/1/0 ia/pd/ta).
2013.09.06 22:18:26 Client Debug Bind reuse enabled (multiple instances allowed).
2013.09.06 22:18:26 Client Notice Creating control (::) socket on the lo/1 interface.
2013.09.06 22:18:26 Client Notice Creating socket (addr=fe80::0000:0000:0000:8a4f) on eth0/2 interface.
2013.09.06 22:18:26 Client Debug Initialising link-state detection for interfaces: eth0/2
2013.09.06 22:18:26 Client Notice CONFIRM support compiled in.
2013.09.06 22:18:26 Client Info Creating SOLICIT message with 0 IA(s), no TA and 1 PD(s) on eth0/2 interface.
2013.09.06 22:18:26 Client Debug Sending SOLICIT(opts:1 25 8 ) on eth0/2 to multicast.
2013.09.06 22:18:26 Client Debug Sleeping for 1 second(s).
2013.09.06 22:18:26 Client Debug Received 133 bytes on interface eth0/2 (socket=4, addr=fe80::6e41:6aff:fec7:72ff.).
2013.09.06 22:18:26 Client Info Received ADVERTISE on eth0/2,TransID=0xecc4ba, 4 opts: 25 2 1 7
2013.09.06 22:18:26 Client Info ADVERTISE message with prefrence set to 255 received, so wait time for other possible ADVERTISE messages is skipped.
2013.09.06 22:18:26 Client Info Creating REQUEST. Backup server list contains 1 server(s).
2013.09.06 22:18:26 Client Debug Advertise from Server ID=00:00:00:00:00:00:00:00:00:00:00:00:00:00, preference=255, no auth info.[using this]
2013.09.06 22:18:26 Client Debug Authentication is disabled, not including auth options in message.
2013.09.06 22:18:26 Client Debug Sending REQUEST(opts:1 25 2 8 ) on eth0/2 to multicast.
2013.09.06 22:18:26 Client Debug Not executing external script (Notify script disabled).
2013.09.06 22:18:26 Client Debug Sleeping for 1 second(s).
2013.09.06 22:18:26 Client Debug Received 127 bytes on interface eth0/2 (socket=4, addr=fe80::6e41:6aff:fec7:xxxx.).
2013.09.06 22:18:26 Client Info Received REPLY on eth0/2,TransID=0xdcc722, 4 opts: 25 2 1 7
2013.09.06 22:18:26 Client Warning PD: Prefix 2a01:0000:0000::/48 is already assigned to this PD.
2013.09.06 22:18:26 Client Notice PD: Adding prefix 2a01:0000:0000::/48 to all interfaces (prefix will be split to /56 prefixes if necessary).
2013.09.06 22:18:26 Client Debug PD: Interface eth1/3 is down, ignoring.
2013.09.06 22:18:26 Client Debug PD: Interface eth0/2 is the interface, where prefix has been obtained, skipping.
2013.09.06 22:18:26 Client Debug PD: Interface lo/1 is not multicast capable, ignoring.
2013.09.06 22:18:26 Client Info PD: Using 0 suitable interface(s):
2013.09.06 22:18:26 Client Warning Suitable interfaces not found. Delegated prefix not split.
2013.09.06 22:18:26 Client Debug RENEW will be sent (T1) after 1800, REBIND (T2) after 3600 seconds.
2013.09.06 22:18:26 Client Debug Not executing external script (Notify script disabled).
2013.09.06 22:18:26 Client Debug Sleeping for 1800 second(s).
Assurez vous avant toute chose que l'échange s'est bien passé et que votre bloc IPv6 a bien été attribué à votre dedibox.
2013.09.06 22:18:26 Client Notice PD: Adding prefix 2a01:0000:0000::/48 to all interfaces (prefix will be split to /56 prefixes if necessary).
Ensuite, vous remarquerez que le log contient l'IP du routeur qui vous a répondu. Notez là, vous en aurez besoin plus tard (ce sera votre default gateway).
2013.09.06 22:18:26 Client Debug Received 127 bytes on interface eth0/2 (socket=4, addr=fe80::6e41:6aff:fec7:xxxx.).
Configuration de l'interface
Il vous reste ensuite simplement à configurer une IP de votre bloc sur l'interface de votre dedibox. Le plus simple est de prendre la première1, c'est à dire 2a01:0e0b:0000::1
si votre prefix est 2a01:0e0b:0000::/48
Ajoutez (i.e. APRES la config IPv4) les lignes suivantes à votre fichier /etc/network/interfaces
iface eth0 inet6 static
address 2a01:0e0b:0000::1
netmask 48
Veuillez à bien adapter l'adresse à votre cas. L'adresse est une adresse que vous choisissez dans votre bloc.
Et pour ma default Gateway ?
Automatiquement - Les paquets RA
Les routeurs d'online passent leur temps à arroser le réseau avec l'adresse IPv6 du routeur par lequel votre dedibox doit passer. Il s'agit de paquet RA. pour une explication détaillée du fonctionnement : http://blog.bashy.eu/2011/03/paquet-router-advertisement/
Normalement, donc, votre default gateway se met toute seule en place et vous n'avez rien à faire. Néanmoins, les vérifications suivantes peuvent s'avérer nécessaires :
- Les paquets ICMPv6 doivent arriver à votre machine, donc ne pas être droppés par le firewall
- Les paquets multicast ne doivent pas être droppés.
- La machine doit accepter les paquets RA. Ces variables kernel doivent être à 1 :
root@localhost:~# sysctl -a | grep 'accept_ra ='
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth1.accept_ra = 1
net.ipv6.conf.lo.accept_ra = 1
- Le forwarding doit être désactivé, sinon le noyau est en mode routeur et n'accepte pas les paquest RA. à moins de forcer l'acceptation des paquets RA même avec le forwarding activé en positionnant les variables accept_ra à 2 plutôt qu' à 1.2 C'est probablement le cas si vous avez installé openvpn ou un logiciel de firewalling qui a activé le forward.
Lorsque ces conditions sont réunies, cétotomatix
Manuellement parce que ça ne marche pas
Si le paragraphe précédent ne vous a pas permis de bénéficier de la configuration automatique, dites vous :
- Que vous êtes un boulet, comme moi
- Qu'il y a toujours possibilité de définir manuellement sa défault gateway
Pour se faire, comme on a l'adresse du routeur (souvenez vous, elle est dans les logs de dibbler), il suffit d'ajouter au fichier /etc/network/interfaces
dans la section inet6 une ligne
gateway fe80::6e41:6aff:fec7:xxxx
Y'a plus qu'à
relancez le tout et testez :
root@localhost:~# service networking restart
networking stop/waiting
networking start/running
root@localhost:~# ping6 ipv6.google.com
PING ipv6.google.com(we-in-x67.1e100.net) 56 data bytes
64 bytes from we-in-x67.1e100.net: icmp_seq=1 ttl=55 time=9.80 ms
64 bytes from we-in-x67.1e100.net: icmp_seq=2 ttl=55 time=9.83 ms
64 bytes from we-in-x67.1e100.net: icmp_seq=3 ttl=55 time=9.74 ms
^C
--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 9.741/9.793/9.835/0.039 ms
root@localhost:~#
-
En fait, c'est la seconde, puisque la première est l'adresse 0. Contrairement à l'IPv4, l'IPv6 permet d'utiliser toutes les adresses, de la première (0) à la dernière (ffff) ↩
-
Voir à ce sujet http://www.mattb.net.nz/blog/2011/05/12/linux-ignores-ipv6-router-advertisements-when-forwarding-is-enabled/ ↩
Comments
comments powered by Disqus