OpenWRT dans mon réseau domestique

Guillaume KulakowskiGuillaume Kulakowski
 

Tags : Free Freebox grafana OpenMediaVault OpenWRT Xiaomi

OpenWRTOpenWRT
 

Jusqu’à présent j’avais un réseau domestique assez simple : 1 Freebox mini 4K qui faisait office de routeur et gérait également mon Wi-Fi. Le problème est qu’avec le confinement et le fait de connecter plus de PCs dans toute la maison on a vite rencontré des problèmes de stabilité Wi-Fi sur la box.

Schéma basée sur la Freebox 4KSchéma basée sur la Freebox 4K

Choix du routeur et mise en place d’OpenWRT

Bref, ça me trottait dans la tête depuis un petit moment et j’ai donc décidé de profiter d’une promo sur AliExpress pour acheter non pas 1 mais 2 routeurs Wi-Fi ! J’ai fait le choix de Xiaomi Redmi AC2100 pour leur rapport qualité / prix (32€ l’un !) mais surtout pour leur compatibilité avec OpenWRT. En effet, le firmware open-source s’installe facilement avec uniquement des manipulations software sans passer par la case fer à souder !

Xiaomi Redmi AC2100Xiaomi Redmi AC2100
 

Le but de la manœuvre était de :

Configuration de la Freebox

Mon réseau sous OpenWRTMon réseau sous OpenWRT

Concernant la Freebox, je n’ai pas encore fait le grand saut de la passer en mode bridge. Pour le moment, j’ai juste activé une DMZ qui renvoie tout sur mon routeur. J’ai sécurité les accès à mon serveur domestique en coupant les accès SSH ainsi que le gestionnaire d’administration (OpenMediaVault) grâce à la mise en place d’un VPN Wireguard.

Luci sous OpenWRTLuci sous OpenWRT

Contrôle parental avec OpenWRT & OpenDNS

Confinement toujours, mon grand utilise de plus en plus un PC, j’ai donc mis en place un contrôle parental. Le contrôle est basé sur OpenDNS et des baux statiques liés aux adresses MAC. Pour finir j’ai également mis en place des plages horaires d’utilisation.

OpenDNSOpenDNS

Anti-pub avec AdBlock

La Freebox possède un anti pub mais on n’a pas la main dessus. Grace à OpenWRT, j’ai entièrement repris le contrôle sur mon anti pub en installant AdBlock directement sur le routeur.

Luci AdBlockLuci AdBlock

Monitoring

Pour monitorer tout ceci, je passe par Collectd, InfluxDB et Grafana. Le monitoring me permet notamment de visualiser les bascules entre fréquences et AP du 802.11r.

 

OpenWRT derrière une Freebox: IPv6, DMZ et Bridge

Guillaume KulakowskiGuillaume Kulakowski
 

Tags : Free Freebox IPv6 OpenWRT

OpenWRTOpenWRT
 

Bien que je sois le très récent et heureux possesseur d’une Freebox Pop, j’ai fait le choix de continuer à déléguer la gestion de mon réseau ainsi que de mon partage Wi-Fi, non pas à la Pop, mais à OpenWRT.

Les avantages pour moi sont les suivants :

Je reviendrai sur pas mal de ces points dans différents billets à venir, mais pour le moment je ne m’intéresserai qu’à la base : avoir un réseau avec une gestion IPv4 / IPv6 (notons que l’IPv6 est obligatoire pour OQee).

Rappel de mon installation sous OpenWRT

Comme évoqué précédemment, j’ai une installation et un réseau domestique assez étendu, le tout propulsé par 2 routeurs Xiaomi Redmi AC2100 (pas cher sur AliExpress). Ils me permettent d’étendre mon Wi-Fi sur les 2 étages que comporte ma maison. Mes routeurs sont tous les 2 dépouillés de leur firmware chinois pour tourner sous OpenWRT dans sa dernière version (19.07.4 à ce jour).

Pour cette configuration, je me suis basé sur différentes sources :

Configuration de la Freebox

Mode « Routeur + DMZ » VS mode « Bridge »

Lors de ma première mis en place d’OpenWRT, j’ai un peu raté ma configuration de l’IPv6. En effet, je suis resté en mode Routeur + DMZ sans configurer l’IPv6. Autant je suis passé à côté avec la Freebox 4K, autant avec la Pop, je m’en suis rendu compte de suite via OQee qui doit obligatoirement passer en IPv6. Du coup, j’ai basculé en mode Bridge histoire d’avoir plus la main. J’en étais pleinement satisfait mais avec la fibre et seulement 1/4 d’IP (le partage d’IP selon Free) cette solution ne fonctionnait plus.

Exemple d'IP partagée chez FreeExemple d'IP partagée chez Free

Du coup j’ai refait une installation, tout aussi fonctionnelle, en mode Routeur et fait en parallèle une demande d’IP full stack. Mais la configuration Routeur me donnant parfaitement satisfaction, j’ai décidé de rester dessus.

Comme je suis gentil, je vous laisse les 2 hypothèses et vous laisse argumenter en commentaire. Notez cependant que le mode Routeur vous éloigne de la loi de Murphy 😉 en vous offrant un mode rescue.

La troisième hypothèse étant le double NAT mais là on complexifie et on est à la limite du dégueulasse.

Hypothèse n°1 : Le mode « Routeur » de la Freebox avec une DMZ

Pour passer en mode routeur, il suffit de laisser la configuration de base de la Freebox. Notez que j’ai juste choisi un sous réseau différent de mon sous réseau OpenWRT (192.168.0.1/24 VS 192.168.1.1/24).

Freebox - Mode Réseau - RouteurFreebox - Mode Réseau - Routeur

Ensuite on donne un bail statique au routeur OpenWRT en fonction de son adresse MAC. Dans mon cas 192.168.0.1.

Freebox - Réseau local - DHCP - Baux statiquesFreebox - Réseau local - DHCP - Baux statiques

Et après on utilise l’option DMZ pour balancer tout le trafic dessus :

Freebox - Connexion Internet - Gestion des ports - DMZFreebox - Connexion Internet - Gestion des ports - DMZ

Hypothèse n°2: Bascule en mode Bridge

Freebox - Mode Réseau - BridgeFreebox - Mode Réseau - Bridge

Tout d’abord nous allons basculer la Freebox en mode bridge. Ça se passe depuis l’interface de gestion de la Freebox: http://mafreebox.freebox.fr. Vous allez devoir accepter qu’en passant en mode Bridge vous perdez tout un tas de fonctionnalités mais au final, quand on en est à mettre OpenWRT à la place de la Freebox on ne devrait pas trop avoir de soucis pour valider ses choix.

Etes-vous sûr de vouloir passe en mode BridgeEtes-vous sûr de vouloir passe en mode Bridge

Prise en charge de l’IPv6

A partir de là que vous soyez en mode Routeur ou Bridge c’est pareil.

Récupération de l’IPv6 du lien local d’OpenWRT

Tout d’abord, il va vous falloir récupérer l’IPv6 d’OpenWRT. Pour cela, il suffit de se connecter dessus en SSH et d’utiliser ifconfig pour récupérer l’IPv6 de lien local (Scope:Link). Dans mon cas fe80::8ac3:xxxx:xxxx:xxxx :

ifconfig eth0 | grep "Scope:Link"

inet6 addr: fe80::8ac3:xxx:xxx:xxx/64 Scope:Link

Configuration de la délégation de préfixe IPv6

On va récupérer l’IPv6 déterminée précédemment et la configurer dans l’interface IPv6 de la Freebox en tant « Next hop » du second nœud de délégation de préfixe :

Configuration IPv6 - Délégation de prefixeConfiguration IPv6 - Délégation de prefixe

Notez bien quelque part ces 2 informations, vous en aurez besoin plus tard :

Remarquez également que l’on désactive le firewall IPv6 de la Freebox, ainsi que le DHCPv6 et les DNS IPv6 (je n’utilise pas ceux de Free) :

Configuration IPv6 - DHCPv6Configuration IPv6 - DHCPv6
Configuration IPv6 - DNS IPv6Configuration IPv6 - DNS IPv6

Voilà, la partie configuration de la Freebox est finie ! On peut maintenant passer sur l’interface d’OpenWRT.

Configuration d’OpenWRT

Installation des dépendances

Tout d’abord on suppose que vous ayez LuCi d’installée avec quelques outils ainsi que le support de l’IPv6, sinon :

opkg install luci-ssl-openssl luci-theme-material luci-i18n-base-fr luci-i18n-firewall-fr luci-i18n-opkg-fr luci-i18n-attendedsysupgrade-fr luci-i18n-uhttpd-fr \
ipset curl diffutils speedtest-netperf \
kmod-ipt-nat6

Interfaces WAN & WAN6

Pour la partie WAN/WAN6, la configuration est assez simple :

LuCi - Interfaces » WANLuCi - Interfaces » WAN
LuCi - Interfaces » WAN6LuCi - Interfaces » WAN6
LuCi - Interfaces » WAN6 (Paramètres avancé)LuCi - Interfaces » WAN6 (Paramètres avancé)

Interface LAN

Là encore, la configuration est facile :

OpenWRT - Interfaces » LAN (Paramètres généraux)OpenWRT - Interfaces » LAN (Paramètres généraux)
OpenWRT - Interfaces » LAN (Serveur DHCP / Paramètres IPv6)OpenWRT - Interfaces » LAN (Serveur DHCP / Paramètres IPv6)

Ici la question du service DHCPv6 se pose pour l’attribution de baux statiques IPv6. J’ai fait le choix de laisser la Freebox attribuer les IPv6 locales car au final elles sont basées sur SLAAC (Stateless Address Auto Configuration) et ne bougent pas (statiques).

J’avais essayé d’utiliser la fonction DHCP d’OpenWRT en jouant sur les suffixes d’IPv6 et les DUID mais cette solution exigeait de passer en mode serveur et posait des soucis sur certains devices. J’ai donc des baux statiques (comme en IPv4) mais je n’ai pas la main sur l’IP générée vu qu’elle est fonction de l’adresse MAC.

Route

A ce stade un ping6 google.fr n’est toujours pas opérationnel sur mes machines. Reste à rajouter une route statique depuis l’interface de LuCi. On va router 2000::/3 vers l’adresse IPv6 du lien local que vous avez noté précédemment :

OpenWRT - Routes statiques (Routes IPv6 statiques)OpenWRT - Routes statiques (Routes IPv6 statiques)

Pour comprendre le pourquoi du comment, je vous invite à lire ce sujet.

Tester

Pour tester, vous pouvez utiliser plusieurs solutions :

Êtes-vous prêt pour l'Internet du futur ?Êtes-vous prêt pour l'Internet du futur ?

Je suis maintenant l’heureux possesseur d’un réseau pleinement compatible IPv6 et mes services sont exposés à la fois en IPv4 et en IPv6… Mais ça, ça sera le sujet d’un prochain article.