OpenWRT

OpenWRT dans mon réseau domestique

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 4K
Schéma représentant mon réseau avant le confinement

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 AC2100
Routeur Xiaomi Redmi AC2100

Le but de la manœuvre était de :

  • Remplacer le routeur de la Freebox 4K par OpenWRT.
  • Placer un Access Point à l’étage pour avoir une bonne qualité de réception (j’ai du RJ-45 qui distribue le réseau dans chaque pièce de la maison).
  • Avoir une gestion intelligente des déplacements au sein de la maison. Pour cela j’utilise le Wi-Fi 802.11r, c’est à dire le fast roaming qui permet de passer d’un AP à un autre facilement.

Configuration de la Freebox

Mon réseau sous OpenWRT
Mon réseau avec 2 routeurs 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 OpenWRT
Interface web Luci 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.

OpenDNS
Configuration du contrôle parental sous OpenDNS

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 AdBlock
Interface d’AdBlock sur Luci

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.

Avatar de Guillaume Kulakowski

À propos de l’auteur

Commentaires

26 réponses à « OpenWRT dans mon réseau domestique »

  1. Avatar de Alban
    Alban

    Bonjour, j’ai essayé d’installé Openwrt sur un Redmi AC2100 mais en lançant la commande :
    sudo python3 pppoe-simulator.py

    J’ai une erreur au bout de quelque secondes, il ne s’affiche pas Client->Server mais :
    Waiting for packets
    Traceback (most recent call last):
    File « pppoe-simulator.py », line 183, in
    sniff(prn=packet_callback, filter= »pppoed or pppoes », lfilter=isNotOutgoing)
    File « /usr/lib/python3/dist-packages/scapy/sendrecv.py », line 780, in sniff
    r = prn(p)
    File « pppoe-simulator.py », line 63, in packet_callback
    for tag in pkt[PPPoED][PPPoED_Tags].tag_list:
    NameError: name ‘PPPoED_Tags’ is not defined

    Avez-vous été confronté à ce problème ?
    Merci.

    1. Avatar de Guillaume Kulakowski

      Non par contre je suis passé en root pas en sudo.

  2. Avatar de Nati
    Nati

    Hi Alban, i handle the same issue, did you solve it ?

    root@nati-VirtualBox:/home/nati/ac2100-openwrt-guide-master# python3 pppoe-simulator.py
    WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
    Waiting for packets
    Traceback (most recent call last):
    File « pppoe-simulator.py », line 183, in
    sniff(prn=packet_callback, filter= »pppoed or pppoes », lfilter=isNotOutgoing)
    File « /usr/lib/python3/dist-packages/scapy/sendrecv.py », line 603, in sniff
    r = prn(p)
    File « pppoe-simulator.py », line 63, in packet_callback
    for tag in pkt[PPPoED][PPPoED_Tags].tag_list:
    NameError: name ‘PPPoED_Tags’ is not defined

  3. Avatar de Alban
    Alban

    Hello, I was given a workaround. I’ve read on internet that the firmware version I had was corrected, it didn’t have this way to install openwrt anymore, maybe it was related.
    Luckily, this new firmware also had a new way to install openwrt, really easier. I found a video explaining this other solution.

    1. Avatar de Guillaume Kulakowski

      It’s not possible to downgrade ?

  4. Avatar de Alban
    Alban

    I tried to downgrade using the official redmi software and an older firmware file but I still had the same issue. But the new way to get access to the router to install orpnwrt is really easier.

  5. Avatar de Ricardo
    Ricardo

    Bonsoir,
    J’envisage d’installer AdGuard sur mon routeur/firewall Xiaomi, mais je ne sais pas quel package MIPS choisir.
    Mon routeur dispose du même processeur que le vôtre, à savoir un Mediatek MT7621A MIPS.
    Pourriez-vous me conseiller ?
    Ricardo.

    1. Avatar de Guillaume Kulakowski

      Franchement en dessous de 512Mo de RAM laisse tomber… AdGuard c’est top mais un gouffre en RAM.

      Si tu veux quand même tester: https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/packages/

  6. Avatar de Ricardo
    Ricardo

    Je m’en doutais. Merci pour votre conseil !
    Je vais me contenter de AdBlock pour l’instant !
    Cordialement.

  7. Avatar de Ricardo
    Ricardo

    Moi aussi ! J’attends avec impatience un portage fiable sur Openwrt.
    @+ Ricardo

  8. Avatar de Bartounet

    Salut.
    Ca fait longtemps que je monte moi même mes routeur firewall.
    Et franchement cela fait quelques temps que je trouve Pfsense idéal.

    Qu’est ce qui te fait préférer DD-WRT à Pfsense ?

    1. Avatar de Guillaume Kulakowski

      C’est pas DD-WRT mais OpenWRT. Et ça tiens sur un équipement réseau de type routeur la où pfsense est plus sur un serveur non ?

  9. Avatar de cyril
    cyril

    Bonjour,
    Est-ce que une fois passer sur WRT, on peux faire du Multi-SSID et gérer les Vlans sur les diffèrent SSID ?

    Merci d’avance

    1. Avatar de Guillaume Kulakowski

      Tout à fait. J’ai un SSID guest avec un vlan dédié

  10. Avatar de cyril
    cyril

    est il pourrait en faire 4 différends ?

    1. Avatar de Guillaume Kulakowski

      J’ai pas testé… Mais pas sûr que tu ais une limite…

  11. Avatar de cyril
    cyril

    Serait-il possible de faire un test avec au moins 3 SSID et me montrer a quoi ressemble cette parti d’interface. j’hésite a l’acheter mes je veux être sur que ça peux fonctionné avec ma config actuel

    Merci

  12. Avatar de Guillaume Kulakowski

    Je viens de faire le test avec 2 SSID et 2 VLAN concrètement isolé avec juste des passerelles très limitées et ça marche. Je viens de rajouter un 3ème SSID juste pour voir si ça passait et ça passe (pas allé plus loin dans mon tests par contre).

  13. Avatar de cyril
    cyril

    Salut, je viens de recevoir mon routeur, le flash sous OpenWRT c’est bien passer.
    Pour la parti multi SSID j’ai pas de problème .
    Par contre pour la partie Vlan d’après ceux que j’ai vu il faudrait passer en ligne de commande avez vosu une autre solution j’ai rien trouver sur Luci comme option

    Merci

    1. Avatar de Guillaume Kulakowski

      Je mixe les 2 Luci et la ligne de commande

  14. Avatar de cyril
    cyril

    j’ai trouvé la solution qui été toute bête il suffit de crée une interface sans protocole et comme interface physique il faut personnaliser lan1.100 (100 étant le VLAN et de rattacher le SSID a cette interface

  15. Avatar de Ricardo
    Ricardo

    Bonjour,
    Je voudrais savoir comment vous utilisez le VPN Wireguard que vous avez installé sur Openwrt !
    Car je l’ai installé sur ma config (qui est très proche de la vôtre) et tout semble fonctionner correctement.
    Sauf que, lorsque je suis sur mon poste client connecté en VPN sur mon routeur Openwrt, je n’ai accès qu’à certains services, par exemple « ping » ou « ssh » qui fonctionnent bien.
    En revanche des services comme les partages SMB ou FTP ne fonctionnent pas du tout !
    Est-ce que vous rencontrez ce genre de problèmes !
    PS :
    Pour l’installation de Wireguard j’ai suivi la doc Openwrt (https://openwrt.org/docs/guide-user/services/vpn/wireguard/start) et deux autres tutos.
    Ricardo

  16. Avatar de BJD
    BJD

    Bonjour

    J’ai pour projet de faire quasi la même structure réseau pour ma domotique:
    Freebox en 192.168.0.254 et un routeur (Xiaomi R3G) sous OpenWRT pour créer un réseau Wlan en 192.168.1.x.
    Le problème est que le DMZ doit être fait sur un IP 192.168.0.x et que je n’arrive pas configurer mon routeur sous OpenWRT pour avoir le port ETH1 en 192.168.0.x et le reste(Wlan) en 192.168.1.x. …
    C’est possible d’avoir des explications pour cette configuration ou tout simplement un Screenshot de l’interface sous luci-ssl pour me donner un exemple ?

    BJD

Derniers articles sur le journal

  • SeedboxSync v4.1 : Authentification OIDC, Gravatar et refonte de l’administration
    Découvrez les nouveautés de SeedboxSync v4.1 : intégration d’un système d’authentification natif et OIDC (SSO), support de Gravatar, gestion des utilisateurs en CLI, formulaires Flask-WTForm et transition vers Peewee-Migrate.
  • De Jellystat à Jellydash : moderniser le suivi de mon serveur Jellyfin
    Pourquoi et comment j’ai remplacé Jellystat par Jellydash pour le suivi des statistiques de mon serveur Jellyfin. Retour d’expérience sur la découverte de cet outil moderne, léger et prometteur repéré dans la newsletter selfh.st.
  • SeedboxSync 4.0 : Fusion de l’IHM et du CLI
    La v4.0.0 de SeedboxSync marque un tournant majeur : fusion du CLI et du frontend en une seule application, migration de la configuration en base de données, planificateur Python natif et passage à SQLite WAL. Tour d’horizon des nouveautés et des changements d’architecture.
  • Modernisation du tooling dev sur SeedboxSync : Just, pnpm, uv & Ruff
    SeedboxSync fait peau neuve côté tooling ! Retour sur la modernisation de mon environnement de dev : abandon du bon vieux Makefile au profit de Just, transition vers pnpm pour un gain de temps spectaculaire côté frontend, et adoption de uv et Ruff pour booster l’écosystème Python. Moins de friction, plus de vitesse : découvrez le détail de cette mise à jour.

Articles à la une