Archives par mot-clé : buildroot

Installer OpenWRT sur un routeur TP-Link WR941ND

OpenWRT écran principal (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2014/03/OpenWRT_WR941ND_main NULL.png)Voici un sujet qui sort un peu de la radio et plaira au geeks. Il plaira aussi à ceux qui comme moi ont abordé les télécommunications par la voie des réseaux et des routeurs. Pour faire bref, en conclusion, avec un matériel à 40 € et un logiciel open-source on fait aussi tout ce qu’on aurait aimé qu’un équipement à 10 000 € fasse il y a quinze ans. Si vous cherchez à mettre en place un vrai routeur complètement configurable avec un firewall complet, un accès ligne de commande SSH et une interface web avec SSL, des VLAN entre les ports du switch Ethernet et un cloisonnement avec le WiFi, des statistiques en temps réel complète et une visibilité totale sur ce que fait votre routeur, alors installez OpenWRT sur un routeur TP-Link WR941ND ou équivalent (http://wiki NULL.openwrt NULL.org/toh/tp-link/tl-wr941nd). Le matériel est bon marché et vous pourrez même ajouter des modules supplémentaires à OpenWRT comme le DynDNS ou l’AX25 (http://wiki NULL.openwrt NULL.org/doc/howto/start)Pour ceux qui ont des besoins de Hot-Spot (et qui se reconnaîtront), c’est du côté de WiFiDog qu’il faut regarder (http://dev NULL.wifidog NULL.org/).

J’ai une problématique. Mes chambres d’hôtes s’étendent sur deux maisons et un terrain de 1000m2. La maison principale est en brique et béton armé, pas le mieux pour laisser passer les ondes radios du WiFi. La solution que j’avais depuis quelques années était de mettre un routeur avec WiFi à la fenêtre du bureau du deuxième étage. La couverture sur la maison en bois était excellente, et par réflexions j’arrivais à couvrir presque toutes les pièces de la maison principale.

Le problème c’est qu’au fil des années mes voisins deviennent plus nombreux et surtout s’équipent aussi en WiFi. Je ne compte pas moins de 11 réseaux visibles depuis le bureau du haut. Les interférences sont donc nombreuses, et à chaque coupure électrique les routeurs redémarrent et changent de canal rendant impossible toute planification du réseau. Pour améliorer la couverture dans ma propre chambre (le point faible), j’avais donc ajouté un routeur en relai WiFi WDS. Bien que fonctionnel, les débits sont catastrophiques et la fiabilité de la connexion aléatoire.

TP-Link WR941ND routeur WiFi (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2014/03/TL-WR941ND-V5-03 NULL.jpg)D’un autre côté j’avais dans un placard un routeur plus récent avec 3 antennes sensées lui donner une meilleure couverture. Le problème, c’est que pour une raison inconnue, il ne fonctionnait pas bien avec l’iPhone et l’iPad de mon épouse… Après plusieurs tentatives de configuration infructueuses je décidais donc de tenter le tout pour le tout en remplaçant le firmware d’origine du fabricant par un logiciel interne libre basé sur Linux : OpenWRT. D’autres solutions existaient telles que DD-WRT, mais OpenWRT me semblait offrir plus de flexibilité et de possibilité de paramètrage pour régler mes problèmes.

Ma première expérience n’était pas ce qu’on peut appeler une réussite. J’ai commencé par installer la dernière version officielle d’OpenWRT, Attitude Adjustment sortie en avril 2013. Après un redémarrage hésitant, j’arrivais à configurer le routeur via l’interface web LuCI et lui installer quelques modules supplémentaires (SSL, sudo…). Il fonctionnait parfaitement entre mon réseau local et mon poste de travail. Mais voilà, voulant faire mon malin, je lui envoie une commande “reboot” et là plus moyen de reprendre la main! J’essaye toutes les procédures de failsafe possible (http://wiki NULL.openwrt NULL.org/doc/howto/generic NULL.failsafe), la documentation ne correspondant pas toujours au comportement de mon routeur, mais rien n’y fait, impossible de me connecter. Après une bonne journée à chercher dans toutes les directions, je tombe enfin sur un billet dans un forum qui explique que la version que j’ai installé à un bogue et que dès qu’un des ports ethernet est physiquement connecté, le routeur ne démarre plus correctement! Un peu gênant pour un routeur sensé être en production. Effectivement, en démarrant le routeur sans aucun câble relié, tout redevient normal.

LConfiguration WiFi OpenWRT (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2014/03/OpenWRT_WR941ND_Wifi NULL.png)a solution c’est d’utiliser une version plus récente d’OpenWRT, une version dite trunk (http://downloads NULL.openwrt NULL.org/snapshots/trunk/) c’est-à-dire en cours de développement. Le risque c’est qu’elle soit instable car insuffisamment testée. Avec cette version installée, le routeur fonctionne normalement mais un nouveau problème se pose c’est l’absence d’interface web LuCI pour la configuration. En principe pas de problème car on peut installer des modules supplémentaires via le gestionnaire de paquet opkg (http://wiki NULL.openwrt NULL.org/doc/packages). Sauf que mon routeur n’ayant de 4Mo de Flash, la place est insuffisante! En effet, quand on installe des modules a posteriori, ils sont plus volumineux que ceux intégrés au firmware car ce dernier est compressé (voir les systèmes de fichier SquashFS et JFFS2 (http://wiki NULL.openwrt NULL.org/doc/techref/filesystems)).

Je me décide donc à compiler ma propre version de OpenWRT avec je l’avoue pas mal d’appréhension. Les documentations sont un peu plus succinctes et le risque c’est de me retrouver avec un routeur bricked totalement inutilisable et potentiellement bon pour la poubelle. Je crée donc une machine virtuelle VirtualBox sous Debian dans laquelle j’installe l’environnement de développement et tous les paquets nécessaires (http://wiki NULL.openwrt NULL.org/doc/howto/buildroot NULL.exigence). Ensuite je télécharge les fichiers source d’OpenWRT et je commence la configuration du make et je lance la compilation (http://wiki NULL.openwrt NULL.org/doc/howto/build). Choisir les modules à intégrer n’est pas simple car ceux-ci sont parfois obscures et pas trop documenté. Finalement mon choix ne s’est pas avéré trop mauvais et un seul élément sera superflu (luci-mod-failsafe) mais désactivable dans l’interface. La compilation (cross-compilation vers une architecture RISC MIPS) est plutôt longue et a pris environ 5 heures sur mon iMac Core 2 Duo (http://xv4y NULL.radioclub NULL.asia/2013/06/07/reparation-de-mon-imac-intel-early-2008/) qui n’est plus de première jeunesse. A la fin un fichier “.bin” d’une taille d’environ 3,2 Mo est produit. Quelques ultimes hésitations et vérifications puis je le transfert dans la RAM (32 Mo) de mon routeur pour le flasher via la procédure de sysupgrade (http://wiki NULL.openwrt NULL.org/doc/howto/generic NULL.sysupgrade). Je ne vous cache pas mon soulagement quand le routeur démarre correctement et qu’il devient accessible via la ligne de commande SSH et l’interface web!

Statistiques OpenWRT (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2014/03/OpenWRT_stats NULL.png)A l’usage, c’est vraiment un régal. D’une part j’ai résolu mes problèmes de couverture WiFi en poussant la puissance à 23dBm et les débits sont excellents. D’autre part j’ai enfin toute la latitude de configuration que je souhaite et je dispose de statistiques et d’outils de monitoring qui me permettent de savoir ce qui se passe sur le réseau. L’accès au routeur est toujours très réactif et même en chargeant totalement l’accès internet fibre optique (limité à 12Mbps c’est vrai), le routeur ne dépasse pas 5-10% de charge dont la moitié doivent être pris par le moteur de stats lui-même.