Passer en IPv6 sur free avec Debian
Je suis aussi passé en IPv6 sur ma connexion personnelle. Je n’étais pas spécialement pressé, craignant un impact sur la qualité de la connexion, notamment au niveau des résolutions DNS, mais les choses se sont apparemment améliorées sur ce plan-là, grâce à un algorithme nommé Happy Eyeballs
.
Pour l’instant donc, je n’ai pas vu de quelconque dégradation de la connexion. Je vais donc détailler de manière très succinte la procédure que j’ai suivie, et qui a quand même impliqué de consulter de la documentation et des articles, pour bien comprendre où je mettais les pieds. En fait, j’ai passé la journée d’hier là-dessus (en plus du billet précédent).
D’abord, rendez-vous sur ce site très bien fait : ipv6-test.com. En principe, vous allez obtenir une note dégueulasse si vous êtes en IPV4 (autre site très bien fait et avec plus d’informations techniques).
Ensuite, connectez-vous à l’interface de la freebox puis allez dans Paramètres de la freebox
- mode avancé
- Configuration ipv6
et cochez la case Activer l’IPv6
. Ça, c’est pour la freebox révolution. Pour la freebox v5, je sais que la procédure est un peu différente et nécessitera un redémarrage de la box pour que le changement soit pris en compte. Voyez ce site qui montre en image la procédure sus-dite, et aussi celle pour la freebox v5 : aide.ma-freebox.fr/ipv6.html.
La freebox route maintenant les paquets utilisant le protocole IPv6. Il faut s’assurer que Linux soit capable de traiter correctement ces paquets. Si comme moi, vous avez désactivé IPv6 au niveau du système, il est temps de faire l’opération inverse.
- Grub
- Éditez le fichier /etc/default/grub et retirez ipv6.disable=1 de la ligne de boot dans la variable
GRUB_CMDLINE_LINUX
. Ensuite, on lance la commande update-grub, puis on redémarre la bête. - sysctl
- Retirez la ligne net.ipv6.conf.all.disable_ipv6 = 1 ou équivalent. Cela a pu être fait dans /etc/sysctl.conf ou dans un sous-fichier de configuration dans /etc/sysctl.d/, ou peut-être aussi dans /etc/rc.local, mais j’ai des doutes.
- module ipv6 (pas sur debian ou le module ipv6 est compilé en dur dans le noyau)
- Vérifiez que le chargement du module ipv6 n’est pas bloqué dans /etc/modprobe.conf ou dans la sous-configuration présente dans /etc/modprobe.d/. Cherchez les occurences de
net-pf-10
ouipv6
Dans le cas de sysctl, une commande sysctl -p && service network-manager restart devrait suffire au lieu d’un redémarrage complet.
Une fois que c’est fait, lancez la commande ifconfig pour vérifier que votre interface réseau dispose bien de ses adresses IPv6. Les lignes commençant par adr inet6: sont celles qui nous intéressent. Vous devez en avoir au moins deux, une adresse IPv6 locale dite dans le scope lien-local
et une autre dans le scope global
, celle qui est utilisée sur Internet.
Si vous n’avez toujours pas de connectivité IPv6, cela peut aussi être dù à une désactivation dans la configuration de NetworkManager donc vérifiez aussi ce point.
Si vous retournez sur ipv6-test.com, votre note devrait avoir sensiblement augmenté. Vous êtes bien connecté en utilisant le protocole IPv6 et les résolutions DNS se font correctement. Au début, j’avais IPv4 comme choix par défaut pour le navigateur, et une erreur dans le cas de figure DNS6 + IP6
, mais ça c’est résolu par la suite.
Vous aurez sans doute aussi un avertissement concernant le SLAAC
. Le SLAAC
est la procédure dite d’auto-configuration sans état
permettant à une machine de s’auto-configurer au sein d’un sous-réseau ipv6, de s’attribuer elle-même une IP, bref, de se passer de serveur DHCP. C’est une des grandes améliorations de l’IPv6 par rapport à son précédesseur.
Le problème ici est que la machine utilise l’adresse MAC de votre interface réseau pour créer cette IP, ce qui signifie que cette IP identifie du point de vue matériel la machine à laquelle elle est liée. Cela peut poser des problèmes de confidentialité.
Si vous êtes sensible à cette problématique, vous pouvez activer le mécanisme consistant à générer aléatoirement la partie locale de l’adresse IP qui sera rattachée à votre interface. Pour cela, il faut activer cette fonctionnalité dans Linux, car ce n’est pas le cas par défaut.
Créez un fichier à l’emplacement /etc/sysctl.d/10-ipv6-privacy.conf avec le contenu suivant :
net.ipv6.conf.all.use_tempaddr=2 net.ipv6.conf.default.use_tempaddr=2 net.ipv6.conf.eth0.use_tempaddr=2 # adaptez le nom de l'interface si besoin
Éditez également la configuration de votre connexion configurée dans NetworkManager. Il faut le faire manuellement car l’interface ne nous donne pas d’accès à l’option que l’on veut mettre en place. Le fichier à éditer est /etc/NetworkManager/system-connections/Votre_connexion. Votre section ipv6
doit comporter la ligne ip6-privacy=2, comme ceci :
[ipv6] method=auto ip6-privacy=2
Redémarrez la connexion réseau et retournez voir sur ipv6-test.com et ça devrait être un quasi 20/20. Il n’y qu'une chose qu’on ne peut pas corriger pour l’instant, c’est le reverse DNS sur votre préfixe IPv6. Free n’offre pas encore cette possibilité, donc on ne peut pas faire de résolution inverse sur notre IPv6, là où en IPv4, on obtient de base (pour les abonnés free) un nom d’hôte tel quel a0017-1-votre_ipv4.fbx.proxad.net.
Pensez également à activer le pare-feu (c’est pas déjà le cas ??). Utilisez par exemple ufw (vérifiez /etc/default/ufw et IPV6=yes) et interdisez les connexions entrantes par défaut (c'est le cas dans la config par défaut il me semble), puis autorisez tel ou tel port, au cas par cas, en utilisant les règles par défaut d’ufw si elles suffisent. En ajoutant vos propres règles s’il le faut. Dans mon cas :
nog bobe # ufw status Status: active To Action From -- ------ ---- Sopcast ALLOW Anywhere xDeluge ALLOW Anywhere 49200 ALLOW 192.168.1.0/24 xDeluge (v6) ALLOW Anywhere (v6) Sopcast (v6) ALLOW Anywhere (v6) 49200 ALLOW 2001:db8::/64
Vérifiez d’ailleurs que les services que vous activez (ssh, postfix, ...) sont bien ipv6-aware. Dans mon cas, j’avais ajouté AddressFamily inet dans la config du client ssh et inet_protocols ipv4 dans celle de postfix :D
Bon, maintenant, si vous voulez vous attribuer une IP fixe, éditez de nouveau le fichier de configuration de votre connexion /etc/NetworkManager/system-connections/Votre_connexion. Votre section ipv6
doit doit ressembler à ça :
[ipv6] method=manual address1=2001:db8::b0be/64 ip6-privacy=2
address1 doit contenir le préfixe IPv6 fourni par free suivi par les 4 blocs 16 bits composant la partie locale de votre adresse (contracté ici en ::b0be :D) puis /64 qui précise la longueur du préfixe (4 x 16 bits).
le mot de la fin : une extension firefox pour vider le cache dns du navigateur pour le site sur lequel on se trouve. Par effet de bord, cela permet de savoir si le site en question a été accédé en ipv6 ou en ipv4. DNS flusher.