Il y a pas trĂšs longtemps sur Twitter, j'annoncais avoir installĂ© OpenWRT sur des bornes Cisco Meraki MR42 (non pas sans mal). 😅

Lien du Tweet en question : https://twitter.com/ju_hnny5/status/1679581547513389057?s=20

Avant de commencer, j'imagine que le projet OpenWRT ne parle pas à tout le monde, pour faire sur ce qu'est ce projet puisque sa présentation n'est pas le but de cet article est :

  • Un firmware open source (basĂ© sur GNU/Linux) permettant de recycler du vieux matĂ©riel ou du matĂ©riel propriĂ©taire en routeur libre. 😍

Ce n'est pas forcémment toujours trÚs facile à déployer mais ça a le mérite de permettre de recycler du matériel voué à la poubelle (comme le matériel Cisco Meraki, qui sans licence ne sert à rien).

J'avais d'aillers dĂ©jĂ  Ă©crit un prĂ©cĂ©dent article sur le dĂ©ploiement d'OpenWRT sur une borne MR33 qui est lisible ici. 😎

Intéressant mais commençons à détailler ce qu'est OpenWISP.

Qu'est-ce qu'un contrĂŽleur Wi-Fi ? đŸ€Ș

Avant de parler d'OpenWISP, j'aimerais simplement faire un rappel de ce qu'est un contrĂŽleur Wi-FI, de son intĂ©rĂȘt pour que vous puissiez facilement comprendre l'intĂ©rĂȘt d'OpenWISP. 😋

Ainsi un contrĂŽleur Wi-Fi va principalement servir Ă  :

  • GĂ©rer de maniĂšre centralisĂ©e un ensemble de bornes Wi-Fi (leurs configurations, leurs utilisateurs; leurs mises Ă  jours, etc).
  • Collecter (superviser) l'Ă©tat en temps rĂ©el des diffĂ©rentes bornes.
  • Fournir des informations rapide sur l'emplacement des bornes et intĂ©ragir avec elles.
  • Fournir de l'accĂšs dynamique (via RADIUS ou autre) et/ou un portail captif (pratique dans des contextes de lieux publiques comme des hĂŽtels, restaurants mais aussi du BYOD).
  • Et bien d'autres choses ! 😎

Ok cool, mais OpenWISP dans tout ça ? Eh bien globalement il fait tout ce qui est citĂ© plus haut ! đŸ€“

Installer OpenWISP 2

Globalement, la meilleure maniĂšre (et surtout la plus simple), c'est par le biais de la collection Ansible fournit par OpenWISP.

Pour ce faire, il faut commencer par install cette collection :

ansible-galaxy install openwisp.openwisp2
ansible-galaxy collection install "community.general:>=3.6.0"
ansible-galaxy collection install "ansible.posix"

On va crĂ©er ensuite le dossier oĂč l'on va travailler :

mkdir ~/openwisp2-ansible-playbook
cd ~/openwisp2-ansible-playbook

On va créer le fichier d'inventaire :

[controller]
openwisp.homelab.lan

Et maintenant créer le playbook.yml :

- hosts: controller
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.homelab.lan
  vars:
    openwisp2_default_from_email: "contact@homelab.lan"

Ne reste plus qu'Ă  appliquer le playbook :

BiensĂ»r, il faudra remplacer <user> par votre nom d'utilisateur souhaitĂ© ! 😁

Il ne restera plus qu'à tenter d'accéder à l'interface Web :

  • https://mon_ip/admin

Maintenant, nous devons y joindre nos bornes Wi-Fi.

Installer l'agent OpenWISP 2

Ce n'est pas magique, pour qu'OpenWISP soit capable de dĂ©ployer des configurations et intĂ©rragir avec les bornes, il faut dĂ©ployer l'agent sur celles-ci. 😄

Pour ce faire :

opkg update
opkg install https://storage.googleapis.com/downloads.openwisp.io/openwisp-config/latest/openwisp-config_1.1.0a-1_all.ipk

Il faut redémarrer le service aprÚs installation :

/etc/init.d/openwisp_config start

On va à présent configurer l'agent pour qu'il sache qui contacter en éditant le fichier /etc/config/openwisp et en ajoutant le contenu suivant :

config controller 'http'
        option url 'https://192.168.4.1'
        option verify_ssl '0'
        option management_interface 'br-lan'
        option uuid '4917xxxxxxxx'
        option key '91d9xxxxxx'
        option shared_secret 'dPacHxxxxxx'

Il ne restera qu'à redémarrer une nouvelle fois le service :  

/etc/init.d/openwisp_config start

A noter que la partie uuid, key et shared_secret est Ă  rĂ©cupĂ©rer dans l'interface lorsque vous dĂ©clarez votre nouvel AP. 😇

Une fois que c'est OK, on peut visualiser les bornes ici :

Publier un SSID en roaming đŸ„ž

Comme premiÚre configuration, nous allons déployer un nouveau réseau Wi-Fi (visible via le SSID) en roaming, quand je parle de roaming, je parle de la norme 802.11r.

Cette norme permet aux appareils de se dĂ©placer sans se dĂ©connecter en passant d'une borne Ă  l'autre (ce que l'on appelle Ă©galement donc du "roaming"). 😎

Sur le lab, nous avons 3 bornes espacées pour que le roaming puisse fonctionner.

Ainsi pour commencer, nous allons crĂ©er un nouveau "template" de configuration dans la section du mĂȘme nom dans l'interface.

Dans notre cas, nous allons le nommer "SSID Home" (mais peu importe son nom Ă  vrai dire ...).

Pour simplifier la suite de la configuration, nous allons devoir ajouter 2 variables qui seront réutilisées, à savoir le nom du SSID et le mot de passe :

Ensuite, il faudra ajouter une nouvelle interface que l'on nommera wlan0 si celle-ci n'est pas déjà utilisée sur vos bornes :

Dans mon cas je vais utiliser la radio2 de mes bornes Cisco Meraki MR42 car c'est celle qui est compatible avec le plus de normes.

Il nous faudra utiliser notre variable wlan0_ssid pour référer le SSID. A noter que le moteur de templating est jinja2 puisque l'application est écrite en Python 3.

Il faudra absolument cocher les cases :

  • Roaming
  • FT PSK Generate local

Les autres sont normalement prĂ©-cochĂ©es. 🙃

Pour continuer on va déclarer la carte réseau qui fournira le réseau, dans notre cas il se nomme "lan". Et pour terminer la configuration, on va spécifier le type de chiffrement de mot de passe et la clé.

Cette configuration devrait s'appliquer automatiquement sur vos bornes. Pour vĂ©rifier, vous pouvez vous rendre sur l'interface LuCI des bornes. â˜ș

Conclusion

Vous l'aurez compris, on peut facilement dĂ©ployer de la configuration par le bias d'OpenWISP sur des bornes OpenWRT sans trop de difficultĂ© et ainsi maintenir un parc homogĂšne en terme de configuration. 😇