Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Configurer un routeur UniFi et une Freebox pour disposer d'un réseau IPv6

Suite à plusieurs mises à jour de l'application MyCanal sur notre téléviseur tournant sous Android TV, foireuse pour la première, changeant le mode de connexion et étant incomplète pour la seconde, je me suis mis en tête de trouver une alternative pour regarder les chaines de la TNT en direct.

Molotov me plaisait moyennement, je trouve son interface austère et n'ai jamais été convaincu.
Il y a bien les applications de chaque chaîne, MyTF1, 6Play, ArteTV, Pluto, ... mais ce n'est pas pratique du tout, devoir changer d'application en fonction de ce qu'on regarde, en plus de devoir créer un compte pour chacune d'entre elles.

Etant chez Free en tant que fournisseur d'accès à Internet, j'ai regardé si je ne pourrais pas configurer le flux m3u qu'ils mettent à disposition des abonnés, mais la qualité est moindre et l'intégration dans une application sur la tv n'était pas optimale. Finalement, en naviguant sur le site de Free, un nom m'a attiré, l'oeil, OQEE. Après vérification de ce qui était proposé, et notamment que c'était bien disponible pour mon abonnement (Freebox Révolution), je l'ai installée et ai tenté de regarder la TV par ce biais.

Et là, c'est le drame !

Et oui, vu que je n'utilise pas le player tv de Free, et qu'en plus j'ai un routeur UniFi Dream Machine pour gérer mon réseau domestique, je n'avais pas configuré l'IPv6, n'en ayant pas le besoin. Nous allons voir ensemble comment configurer la Freebox et l'UDM pour disposer d'une connectivité IPv6 sur votre réseau.


Dans mon cas, le routeur UniFi est un UDM (UniFi Dream Machine) mais la configuration que je vais décrire s'applique également à l'UDM Pro ou à l'USG / USG Pro.

Nous allons en premier lieu récupérer l'adresse IPv6 de l'interface WAN de l'UDM. Pour cela, connectez-vous en SSH à votre routeur et utilisez la commande ip addr | grep "global dynamic" -B2 -A3.

Nous allons renseigner cette adresse dans la page de configuration de la Freebox. Connectez-vous sur http://mafreebox.freebox.fr, lancez les "Paramètres de la Freebox" et choisissez "Configuration IPV6". Il faut coller l'adresse IPv6 de l'UDM dans le second Next Hop uniquement pour déléguer un préfixe. Notez également le préfixe associé, nous allons en avoir besoin pour la suite de la configuration sur l'UDM.

Attention ! Il est important de ne pas modifier le Next Hop du premier subnet.

Sur votre contrôleur UniFi, rendez-vous dans "Settings", "Internet" et choisissez de configurer l'accès WAN.
Basculez les réglages avancés en manuel, activez le DHCPv6 pour la connection IPv6, et configurez une taille de délégation de préfixe de 64. Appliquez les changements.

Passons maintenant à la configuration de l'IPv6 pour le réseau local. Toujours dans l'interface du contrôleur UniFi, rendez-vous cette fois dans la partie "Networks" et choisissez de configurer le réseau local.
Si les réglages avancés ne sont pas déjà activées en manuel, c'est le moment de le faire ! Descendez en bas pour configurer l'IPv6, et choisissez de configurer le type d'interface sur "Static". Renseignez en tant que "IPv6 Gateway" le préfixe IPv6 du second  "Next Hop" de la Freebox.
Activez le RA (Router Advertisement), qui permet aux périphériques sur le réseau de configurer leur route par défaut automatiquement.
Activez également le DHCPv6, la plage d'adresses se renseignera en se basant sur le préfixe du sous-réseau.

A partir de ce moment, votre réseau est configuré pour fonctionner en IPv6 aussi bien qu'en IPv4, dépendant si les périphériques en sont capables ou non.

Pour vérifier que c'est bien le cas, vous pouvez exécuter un ping en IPv6 ou un nslookup pour résoudre un nom de domaine en IPv6.

guillaume ~ % ping6 google.fr
PING6(56=40+8+8 bytes) 2a01:e0a:99e:ec1:e01e:2d:d5ef:60a1 --> 2a00:1450:4007:809::2003
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=0 hlim=116 time=4.214 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=1 hlim=116 time=4.979 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=2 hlim=116 time=5.454 ms
16 bytes from 2a00:1450:4007:809::2003, icmp_seq=3 hlim=116 time=5.165 ms
--- google.fr ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.214/4.953/5.454/0.459 ms
guillaume ~ % nslookup -query=AAAA google.fr
Server:		2a01:e0a:99e:ec1::
Address:	2a01:e0a:99e:ec1::#53

Non-authoritative answer:
google.fr	has AAAA address 2a00:1450:4007:81a::2003

Bon très bien, la connectivité IPv6 fonctionne bien depuis un ordinateur, il reste à tester à nouveau l'application OQEE depuis la TV sous Android TV.

Mince, ça ne fonctionne toujours pas !! Après quelques recherches, et en discutant de ce problème avec un ami, il me dit qu'il a déjà eu le même besoin et avait rencontré le même problème, et qu'il y a un bug dans le firmware UniFi qui fait que le RA n'est pas bien activé, et qu'il faut le forcer à l'aide d'un script.

Attention ! Les étapes suivantes sont nécessaires au moment de l'écriture de cet article.
Un correctif devrait être déployé par Ubiquiti dans le futur pour corriger ce bug. (Le changelog de la mise à jour 1.12.22 de l'UDM pouvait le laisser penser, mais il n'en est rien.)

Le prérequis pour  mettre en place ce script est d'avoir installé les scripts udm-utilities de bootschiken, et configuré les "On-Boot-Script".
Si ce n'est pas déjà fait, il vous faudra suivre le tutoriel suivant :

Libérez votre Ubiquiti Unifi Dream Machine
L’Unifi Dream Machine est un équipement réseau tout-en-un (routeur, switch, point d’accès wifi) puissant et sur lequel on peut ajouter d’autres services.

Pour configurer ce nouveau script dans le but d'activer le RA correctement sur votre réseau local, accédez en SSH à l'UDM et rendez-vous à l'emplacement habituel des scripts personnalisés avec la commande cd /mnt/data/on_boot.d.

Créez un premier fichier de configuration avec la commande vi ipv6-ra.conf et éditez-le afin d'y coller le contenu suivant :

#
# Generated automatically by ubios-udapi-server
#

# Configuration of DHCP Server 'net_LAN_br0_192-168-1-0-24_IPV6'
no-dhcp-interface=lo
interface=br0
enable-ra
ra-param=br0,high,0
domain=local
dhcp-range=set:net_LAN_br0_192-168-1-0-24_IPV6,IPV6:IPV6::IP,IPV6:IPV6::IP,ra-only,64,86400
dhcp-option=tag:net_LAN_br0_192-168-1-0-24_IPV6,option6:dns-server,[::]
Attention ! Il faut bien entendu adapter le nom de l'interface, le domaine, ainsi que la plage d'adresse IPv6 en fonction des valeurs de votre réseau.

Vous pouvez vérifier le contenu du fichier créé par UniFi avec la commande cat /run/dnsmasq.conf.d/dhcp*IPV6.conf. Nous avons seulement rajoutés l'option ra-only dans la configuration DHCPv6.

Le deuxième fichier à créer est le script qui sera exécuté au démarrage de l'UDM. Créez-le avec la commande vi ipv6-ra.sh et collez-y le contenu suivant :

#!/bin/sh
cp /mnt/data/on_boot.d/ipv6-ra.conf /run/dnsmasq.conf.d/dhcp.dhcpServers-net_LAN_br0_192-168-1-0-24_IPV6.conf
start-stop-daemon -K -q -x /usr/sbin/dnsmasq

Rendez le script exécutable avec la commande chmod +x ipv6-ra.sh et exécutez-le tout de suite avec la commande ./ipv6-ra.sh pour appliquer la configuration.

On redémarre la TV pour forcer une reconnexion au réseau, et on se rend dans les paramètres réseaux pour vérifier qu'elle a bien récupérée une adresse IPv6.

Oui ! C'est bon cette fois !

Lançons OQEE et surtout tentons de visionner une chaîne en direct pour valider le bon fonctionnement :

C'est bon, on peut confirmer que ça fonctionne correctement !


Conclusion

Merci d'avoir lu cet article jusqu'au bout, j'espère qu'il vous aura servi pour configurer votre réseau local en IPv6, et potentiellement pour ceux qui pourraient être concernés, à vous permettre de regarder les chaînes de télévision avec l'application OQEE de Free.

Si vous avez des questions ou simplement souhaitez échanger avec nous, n'hésitez pas à laisser des commentaires ou à venir sur notre groupe Telegram.