Mode de secours sur OpenWRT

Un jour, j’ai fait une modif dans la conf de mon routeur (NetGear WNDR3700v2) qui tourne sous OpenWRT, j’ai rebooté le bazar, et là, catastrophe, plus moyen d’accéder à la bête…

Heureusement, là situation n’est pas totalement désespérée, ils ont tout prévu chez OpenWRT: quand il boote, pendant un cours instant, le routeur a l’IP par défaut 192.168.1.1/24 et un serveur telnet qui écoute sur cette IP. La procédure détaillée pour accéder à ce telnet et ce système minimal est disponible en anglais .

Pour les impatients, voilà la méthode rapide.  On part du principe que eth0 est votre interface réseau locale, et:

  • définir l’IP de sa machine à 192.168.1.2 (en fait, on peut prendre n’importe quelle valeur entre 2 et 254):
ifconfig eth0 192.168.1.2/24
  • dans un shell root, lancer un tcpdump:
tcpdump -Ani eth0 port 4919 and udp
  • rebooter le routeur et guetter ce message dans la sortie de tcpdump:
Please press button now to enter failsafe
  • quand le message apparaît, il faut appuyer sur n’importe quel bouton du routeur (sauf le on/off), et dans la sortie de tcpdump, on voir arriver ce message:
Entering failsafe!
  • là, on est presque sauvé, on peut se connecter au routeur avec un gentil telnet (sans autentification) et monter le filesystem (commande: mount_root):
telnet 192.168.1.1
=== IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------

BusyBox v1.15.3 (2011-11-24 00:44:20 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 Backfire (10.03.1, r29592) ------------------------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua
  * 1/3 shot Bailey's  on the bottom, then Bailey's,
  * 1/3 shot Vodka     then Vodka.
 ---------------------------------------------------
root@(none):/# mount_root

Maintenant, on a accès à un système assez basique pour tenter de réparer ou de restaurer sa conf d’avant la manip calamiteuse.

PS: Le shell dispose d’une commande help qui permet de connaître toutes les commandes disponibles 😉