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

ATTENTION, il s'agit ici du firewall IPv6, donc ip6table si c'est celui que vous utilisez, à ne pas confondre avec son cousin iptables qui ne travaille qu'en IPv4

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:~# 

  1. 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) 

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