Il y a plusieurs mois de ça, mon routeur principale, un ubiquiti Edgepro Lite 3 ports a sauté. C’est arrivé durant une panne de courant, bien sûr, mon système de télécom est branché sur un UPS mais ca n’envoie pas le signal de faire un shutdown clean comme je le fais pour mes serveurs. Bref, lors du retour du courant électrique, mon routeur démarre mais ne fonctionne plus. Les lumières allumes mais rien ne route et je ne suis même pas en mesure de communiquer avec, que ce soit par l’interface web ou un simple ping. Le temps étant une donnée trop précieuse pour moi, au lieu de vérifier quel était le problème, je décide simplement d’utiliser mon autre vieux router, un cisco RV042G, qui fonctionne très bien et qui surtout à encore en mémoire mon paquet de règle de firewall qui est long a reconfigurer…
Bref après plusieurs mois et un après midi tranquille de disponible, je décide de voir ce qui ne marche pas avec mon vieux Edgepro Lite3. Première chose que j’essaie, c’est bien sur, le factory reset. Après avoir appliquer la procédure, qui se déroule sans problème, les lumières réagissent selon la documentation. Le Edgepro est maintenant retourné en mode “factory default”. Je configure mon laptop avec une adresse IP statique pour parler au routeur, mais hélas, ça ne fonctionne pas plus. Même après avoir fait le “factory reset” 3 fois en ligne.
Pourtant les lumières d’activitées clignotent, il a bel et bien de la vie dans ce routeur… Il me reste une solution, c’est de savoir ce qui se passe directement sur la console du router, pour cela il me faut le fameux câble de RJ45 à DB9. Dans une de mes vie passé, j’avais ce câble avec moi, lorsque je travaillais avec du Cisco plus fréquemment qu’aujourd’hui. Donc, je n’en ai plus avec moi. Qu’à cela ne se tienne, j’en commande un nouveau et 2 jours plus tard, je retourne à mon opération.
Une fois le câble console branché dans le port série, je pars putty et je laisse l’opération de démarrage du routeur rouler. Je réalise rapidement que le système de fichier du routeur SquashFS (qui roule sous linux) est totalement corrompue :
Je suis familier avec Linux et les système de fichiers en générale mais pas avec cette version de Linux spécifiquement et ni ce système de fichiers. Une recherche rapide avec Google m’apprends par contre que ce problème de corruption semble être fréquent avec les routeurs d’Ubiquiti, assez pour que la compagnie ait mis disponible un outil qui permet de charger en TFTP, L’OS originale du produit.
Par contre, étant moi-même, pourquoi faire simple quand je peux faire plus compliqué, je trouve une solution alternative. Cette solution implique de sortir du router la mémoire qui est loader, sur une clé USB de 4 Gigs. Vous avez bien lue, elle n’est pas souder sur la carte du routeur mais bien sur une clé USB. La preuve ;
On remarque à droite, la clé USB, facilement détachable.
La procédure que j’ai trouvé est très simple, il suffit d’insérez la clé USB sur une machine Linux, réparer le filesystem, télécharger la dernière version disponible de l’OS du routeur et le copier sur la partition à cet effet sur la clé. De cette façon, si je fais un factory reset, je ne retourne pas plusieurs version en arrière. Une solution qui est beaucoup plus élégante selon moi. Une fois tout cela fini, je redémarre le router et avec mon câble console je vérifie si l’OS se charge correctement dans la mémoire ;
Le routeur fonctionne maintenant. Ce que je réalise rapidement, c’est qu’avec n’importe quel routeur de type consommateur résidentiel, jamais je n’aurais pus réparer le sytème de fichier et l’OS du routeur. J’aurais été obligé de le jeter au poubelle et de m’en acheter un nouveau. Il ne me reste maintenant qu’à reconfigurer mon paquet de règle pour le firewall, et cette fois-çi, je ferais une copie de la configuration en backup. Comme ça, je n’aurais pas à le refaire si jamais je perds encore cette config.