OpenWRT

14 views
Skip to first unread message

Laurent Caillette

unread,
Sep 1, 2018, 3:34:59 AM9/1/18
to tec...@googlegroups.com

Tout ce que tu dois retenir de ce billet, c'est que si tu ne sais pas ce qu'est "OpenWRT"
, c'est probablement que tu en as besoin.

Dit plus prosaïquement, OpenWRT est une version de Linux dédiée aux routeurs et à des utilisations embarquées.

Plus précisément, OpenWRT c'est :
- Une infrastructure de compilation.
- Une collection de binaires précompilés.
- Une communauté.

Historiquement, OpenWRT est un fourchage de LEDE (Linux Embedded Development Environment), ensuite réconcilié sous le nom d'OpenWRT. Mais on trouve toujours des références à LEDE dans la doc. On peut également voir passer des mentions de produits équivalents comme DD-WRT ou Tomato. Parmi tous ces projets, OpenWRT est le mieux suivi et le plus développé. C'est //le// système d'exploitation à qui tu dois confier ton routeur. Deux raisons :
- La sécurité.
- Les fonctionnalités.

On ne va pas refaire le débat sur la supériorité des sources ouvertes en matière de sécurité. Une petite visite de "Router Security"
suffit à convaincre que les logiciels propriétaires dans les routeurs sont tous à la rue, avec souvent des conséquences désastreuses.

Pour les fonctionnalités, tout le monde n'a pas besoin faire clignoter les lampes de façade au son d'une musique rééchantillonnée en flux tendu pendant qu'on la télécharge à travers un tunnel GRE. D'un autre côté, celui qui ne sait pas ce dont est capable OpenWRT aura tendance à chercher la solution dans l'ajout d'équipements. 


== Besoins personnels

Le fournisseur d'accès Internet de mon pays de résidence m'a équipé d'un ravissant modem et routeur CISCO dont le logiciel de fabrique n'a pas été mis à jour depuis qu'on y a découvert au moins une belle faille de sécurité. De plus le Wi-Fi en `5 GHz` plante régulièrement. Donc je l'ai reconfiguré en modem seul ("bridge mode") pour y brancher un routeur AirPort Extreme de 2006, d'une qualité plus que correcte, si ce n'est qu'Apple va "cesser de vendre des routeurs"
donc plus la peine d'espérer des correctifs de quoique ce soit.

Après il m'est venu l'envie d'accéder à du contenu filtré par géolocalisation de l'adresse IP alors que je me trouvais à l'étranger. J'ai laissé tourner un démon sshd sur un vieil ordinateur portable dont le ventilateur fait un bruit de mobylette au ralenti. On peut apprécier l'AirPort Extreme pour sa compacité, mais avec le portable à côté c'est moins glorieux.

Après j'ai eu la tentation de journaliser de tout le trafic Internet passant par le routeur, juste par curiosité. Là il aurait fallu interposer un boîtier entre le routeur et le modem. La "Minnow Board"
a l'air parfaite avec ses 2 cartes réseau mais ça fait 200 balles et de la câblasse en plus pour un besoin très épisodique. Plus un écran HDMI et un clavier. 

J'ai également caressé le projet defaire tourner un démon I2P quelque part, à titre de support actif du projet. 

Une solution d'intégration c'est de coller le modem, l'AirPort Extreme et la Minnow Board dans une boîte à chaussures percée de trous pour la ventilation. Mais ça ne résoud pas le problème du logiciel propriétaire dans l'AirPort Extreme et l'absence de mises à jour futures. 

C'est là que j'ai entendu parler d'OpenWRT, qui ressemble de loin à un monstre ésotérique créé par et pour des linuxiens frappés du syndrôme d'Asperger. Mais la peur est mauvaise conseillère.


== Premiers pas avec OpenWRT 

C'est vrai que la documentation d'OpenWRT a l'air assez bordélique, mais en général il suffit choisir un routeur dans la liste des "matériels supportés"
puis de "vérifier la somme de contrôle"
avant d'effectuer la mise à jour du logiciel de fabrique du routeur.

Bien sûr l'AirPort Extreme ne figure pas dans les matériels supportés. 


== Linksys EA8500

Je me suis donc fait plaisir avec un Linksys EA-8500 à `200 €`. J'en apprécie :
- Le Wi-Fi à 5 GHz (`802.11 ac`) et 2.4 GHz simultanément.
- Le chipset Atheros, apparemment le mieux supporté par Linux.
- La (relative) puissance : 2 cœurs, 512 MB de RAM.
- Le connecteur eSATA pour ajouter une mémoire de masse rapide.

Je déconseille l'EA8500 si l'achat doit se faire aux USA. Dans cette version il n'y a pas moyen de mettre à jour avec un firmware non-signé, ce qui nécessite d'ouvrir la bête pour "se brancher sur l'interface JTAG"
, de quoi donner des frissons aux adorateurs de Mr Robot.

Une fois l'EA8500 sorti du carton et branché sur le routeur existant (ce qui provoque une double NAT, pas grave) on a droit à l'interface d'administration propriétaire de Linksys, très jolie. Je conseille de s'y connecter avec une page de navigation anonyme, sinon elle pourrit le cache du navigateur avec des redirections permanentes. En fouillant un peu on trouve comment sauter les étapes d'enregistrement à des fins commerciales. L'installation d'une nouvelle image se fait à partir du menu "Connect", bizarrement.

Pour moi la mise à jour du logiciel interne s'est bien passée. Je n'ai pas eu besoin de m'intéresser aux options de restauration à partir d'une mémoire secondaire. Au bout de quelques minutes l'EA8500 fonctionnait sur `OpenWRT 18.06`, la dernière version stable. Ça confirme la tendance observée avec Ubuntu : les distros Linux deviennent plus faciles à installer que les logiciels propriétaires.


== Autres routeurs

=== Turris Omnia

Sur la liste des matériels supportés par OpenWRT je découvre à l'instant le "Turris Omnia"
conçu et réalisé par des bidouilleurs tchèques. Le logiciel est basé sur OpenWRT. Le matériel regorge d'idées brillantes, comme les diodes électroluminescentes d'intensité réglable, un connecteur SFP (fibre optique), un connecteur mSATA interne et un port GPIO comme sur un Raspberry Pi. Vendu à part, il y a aussi un boîtier "Hacker Pack" avec des orifices pour accéder aux connecteurs de la carte mère, dont un port série. Encore plus fort : un boîtier de plus grande taille pour faire cohabiter le routeur avec 2 disques durs. Le coup de grâce est donné par le "LTE Pack" qui ajoute des antennes et un modem 3G par-dessus le connecteur SIM, pour avoir une liaison de secours en cas de défaillance de la liaison filaire à Internet. 

Ai-je mentionné qu'on peut acheter l'Omnia équipé de 2 Go de RAM ? À `330 €` le routeur, c'est pas pire qu'Apple. Il y a quelques options inattendues comme les mises à jour automatiques et l'analyse automatique de vulnérabilité à travers la génération automatique de pot-au-miel ("honeypot"), qui remonte les informations à Turris mais ça doit pouvoir se désactiver. Au moins voilà des mecs, ils ont compris le potentiel du routeur domestique. 


=== A5-V11

Le routeur compatible OpenWRT le moins cher est un anonyme basé sur le circuit "A5-V11"
, dont le boîtier est de la taille d'un briquet. Il y a un connecteur USB `2.0 type A` pour brancher une clé 3G, ainsi qu'un connecteur USB micro-B pour l'alimentation. Et un connecteur RJ45. La quantité de mémoire vive varie entre 4 et 32 Mo, le produit n'est pas vraiment défini, les versions des logiciels de fabrique changent n'importe comment, des fois la mise à jour plante ou il n'y a pas assez de mémoire, mais ça fait un routeur à `10 €` pour qui veut bricoler. 


=== Gamme GL-iNet

Juste avant de publier cet article je découvre la gamme de "GL-iNet"
qui propose des solutions compactes ou extensibles avec OpenWRT en standard, notamment le "GL-AR750"
avec du `5 GHz`, un lecteur de carte SD, et une option pour alimentation par câble Ethernet ("PoE") pour `52 €`.

Si ça se trouve il y a un marché conséquent mais peu visible pour ce genre de produit.


== Premiers pas avec OpenWRT

Tu branches ton ordi à l'EA8500 avec un câble RJ45 et tu vas sur `192.168.1.1` avec ton navigateur, ou par SSH. Tu mets un mot de passe, tu actives le Wi-Fi et tu es content. Ça devrait //toujours// être comme ça. Les routeurs grand public avec le Wi-Fi activé par défaut c'est mal et ça ne simplifie rien. On ne parlera même pas du WPS et de l'UPnP.

Ça vaut le coup de fonctionner quelques jours avec la double NAT, comme ça tu peux te connecter au Wi-Fi de l'ancien routeur si tu broutes la configuration et que tu veux chercher de l'aide sur le Web sans quitter ton fauteuil.

== LuCI

LuCI est l'interface Web d'administration d'OpenWRT. Elle est tout simplement grandiose.

Dans LuCI quand tu ouvres la page "Firewall" tu vois les règles d'iptables avec leurs compteurs. Quand tu ouvres la page "Realtime Graphs" puis "Connexions" tu vois les dernières connexions, au point où le routeur lui-même devient quasiment un outil de surveillance et de mise au point -- sans parler de l'installation de modules spécialisés-_.

Dans les options des interfaces radio tu peux faire des trucs assez fous, comme empêcher qu'une machine voie les autres machines du sous-réseau, ou doser la puissance d'émission. 

Il y a une page de rappel des options non-sauvegardées. Je n'avais jamais vu ça. Encore plus fort : quand tu appliques une option, le routeur attend un accusé de réception de la part du navigateur. S'il tarde trop ça provoque un retour automatique à l'état précédent.

Donc c'est bien au-dessus de tout ce que j'ai pu voir pour des routeurs domestiques, sans être beaucoup plus compliqué (si tu ne comprends pas tu touches pas). Les mecs d'OpenWRT ont fait un boulot phénoménal.


== Modules

Comme OpenWRT c'est un Linux on peut faire tourner plein de logiciels rigolos, faciles à installer grâce à leur préconditionnement. 

Tout le catalogue est navigable à partir de LuCI. On trouve des trucs de DNS, de routage, de proxy, de tunnel et de pare-feu comme s'il en pleuvait. Des serveurs de phonie et de flux vidéo. Des aspirateurs de contenu et des bloqueurs de publicité. Des bases de données, des démons de surveillance (Collectd, Zabbix), des encodeurs de son et d'image, des polices de caractères, des outils d'intéropérabilité avec AirPlay et iTunes. Des serveurs de tout et n'importe quoi. Des trucs, tu te demandes ce que ça vient faire sur un routeur, genre des pilotes d'appareil photo et de numériseurs à plat. Genre de la virtualisation (LXC, QEMU). Genre un démon de géolocalisation par GPS. 

Il y a bien sur git, gcc, make, des interpréteurs de Ruby, LUA, Perl et Python, et plein d'outils de développement. On retrouve nos amis I2P et iodine, avec un I2P réécrit en `C++` pour être moins gourmand. 

Mis bout à bout tout cela ouvre de nouveaux horizons. Ça fait longtemps qu'on sait s'accommoder d'une IP publique qui peut changer grâce à un DNS dynamique comme `afraid.org` qui supporte les champs TXT, donc les certificats gratuits LetsEncrypt. Certes un routeur comme l'EA8500 n'offre que la puissance d'une toute petite machine virtuelle hébergée, mais c'est largement suffisant dans plein de cas, et on bénéficie de la proximité pour les liaisons sans-fil et les périphériques. Il y a tout une gamme d'utilisations qui n'ont pas encore été explorées dans ce registre du fait de l'appel d'air provoqué par les applications de type "nuage" qui s'efforcent de masquer l'éloignement. OpenWRT fournit une plateforme de choix pour expérimenter à bas coût la réappropriation de la proximité.


== Notes sur les fichiers de configuration

Le Wiki d'OpenWRT a parfois l'air d'un dépotoir, mais quand on met le nez dans le logiciel c'est autre chose. Les fichiers de configuration sont normalisés, on peut les modifier en ligne de commande (un peu comme un ``git config``), et comme c'est du texte on peut differ des sauvegardes de la configuration pour voir ce qui a été vraiment modifié. C'est d'ailleurs ce que fait LuCI pour indiquer les changements non-appliqués. C'est aussi élégant que pratique, tout Linux devrait fonctionner comme ça.


== Utilisation dans VirtualBox

Pour ceux qui voudraient jouer avec OpenWRT mais qui ont peur de casser des choses, j'ai appliqué avec succès la procédure "Run OpenWrt as a Virtualbox virtual machine"
. Au bout de 30 mn j'avais ma connexion SSH.

(Rappel : si on veut utiliser une interface virtuelle "Bridged" il faut se souvenir qu'on donne à la machine virtuelle un accès direct à la pile réseau de la machine qui l'héberge. Avant de l'activer il faut //systématiquement// restreindre la connexion SSH à l'interface "Host-only " et n'autoriser que l'authentification par clé publique. Et après il faut se souvenir que si on change de réseau local -- avec un autre point d'accès Wi-Fi par exemple -- il faut éteindre et rallumer la machine virtuelle pour que la nouvelle adresse soit prise en compte.)


== Conclusion 

Au XXI^e siècle le routeur domestique c'est la projection numérique du chez soi. Libre à toi de te faire exproprier par des logiciels propriétaires. Si tu as un routeur autre que celui de ton fournisseur d'accès Internet, précipite-toi sur le site d'OpenWRT pour voir s'il est supporté. Sinon, achètes-en un et fais le grand saut. Ça n'est pas si compliqué qu'on veut bien le dire et ça vaut le coup rien que pour la sécurité. 

Reply all
Reply to author
Forward
0 new messages