(modifiĂ© le 24 septembre 2022 à 2:22)

Si vous utilisez un routeur avec le firmware open-source Tomato (FreshTomato) alors vous pouvez être amené à exporter la nvram pour sauvegarder la configuration de votre routeur.

Voyons comment faire avec 3 méthodes.

La NVRAM c'est quoi ?

La NVRAM est la partie non volatile de la mémoire des routeurs dans laquelle sont stockés les réglages. Autrement dit les paramètres sont préservés dans cette puce, même après un reboot ou une perte d'alimentation du routeur, à la manière d'une clé USB.

FreshTomato utilise cette zone pour stocker sa configuration sous forme de variables. Tout ce que vous configurez dans l'interface web est alors injecté en variable dans la NVRAM sous forme de fichier en clair (contrairement au fichier d'export de configuration *.cfg qui ne l'est pas).

FreshTomato peut parfois conserver certaines variables NVRAM (paramètres) même après avoir flashé une nouvelle image de firmware sur votre routeur. Il est donc très important d'effacer la NVRAM avant de flasher une nouvelle version plus récente. Cela permet de s'assurer que toutes les variables du micrologiciel existant sont effacées avant le début du flashage.

Si vous oubliez cette étape d'effacement de la NVRAM avant le flashage votre routeur peut se briquer ou fonctionner de façon inattendue. Cela peut paraître fastidieux mais il ne faut JAMAIS ignorer cette étape :

  • les nouvelles variables introduites seront crĂ©es : pas de souci
  • les variables modifiĂ©es ne le seront pas ➡️ problème
  • les variables supprimĂ©es resteront ➡️ problème

Je vous expliquerai dans un futur post comment faire une montée de version de FreshTomato sans pour autant tout reconfigurer à la main. Il existe une possibilité pour injecter uniquement les paramètres NVRAM qui ont changé entre 2 versions.

1. Sauvegarde via l'interface web

Rendez-vous dans le menu  :

Administration > Debugging (http://tomato/admin-debug.asp)

En bas de page cliquez sur "Download NVRAM Dump" :

Le fichier vous sera directement proposé en téléchargement dans votre navigateur web au format lisible "nvram.txt".

2. Sauvegarde en ligne de commande "nvram save"

Connectez-vous en SSH ou telnet puis exécutez en tant que root :

nvram save backup-nvram.cfg

Un fichier "backup-nvram.cfg" sera alors généré à l'endroit ou vous vous trouvez.

⚠ le fichier de sortie sera binaire et non lisible, il sera nécessaire de le restaurer avec nvram restore xxxxx.cfg

Il est aussi possible de sauvegarder la version lisible avec :

nvram show >backup-nvram.txt

3. Sauvegarde en ligne de commande avec "nvram-export"

Récupérez le contenu du dépôt Git : https://github.com/jon-hedgerows/nvram-export

Une fois le script copié sur votre routeur Tomato exécutez-le :

./nvram-export.sh backup-nvram.sh

Votre sauvegarde sera alors présente dans le fichier backup-nvram.sh qui se présente sous forme d'un script bash. L'intérêt du script est qu'il va créer un fichier exécutable avec les paramètres triés par ordre alphabétique. Il va échapper les caractères posant problèmes

[bonus] DĂ©coder le fichier backup.cfg

Via le menu Administration > Configuration il est possible de sauvegarder la configuration dans un fichier *.cfg. Dans le cas où vous n'avez que ce fichier il peut être utile de le décoder pour récupérer un réglage sans restaurer le fichier (surtout si votre version de Tomato a changé!).

Comme je vous l'ai dit ce fichier n'est pas lisible, mais il est possible de le décoder si votre routeur est équipé d'un processeur ARM (visible dans menu about) grâce à nvram-cfg-parser.

Pour utiliser le script il faudra d'abord installer npm et nodejs sous Linux (ou WSL) :

apt install npm nodejs

Remplacez apt par yum si vous ĂŞtes sur une distribution RedHat Like (Alma, Oracle, CentOS, etc).

Enfin pour convertir le fichier :

nvramcfg decode FreshTomato_xxx.cfg > nvram.json

Le fichier de sortie au format json devra ĂŞtre reconverti au fomat cfg si vous souhaitez restaurer dans Tomato :

nvramcfg encode arm nvram.json > nvram.cfg

â„ą A noter l'existence d'un outil graphique wrtsettings qui peut ĂŞtre pratique pour visualiser la configuration. Mais il ne supporte pas les accents : Ă  Ă©viter donc pour modifier directement un fichier cfg.

Conclusion

Et voilà vous avez de quoi sauvegarder votre configuration en exportant la NVRAM très facilement.

Une dernière chose, on voit pas mal de tutoriels sur le net qui parlent de cette commande :

nvram export --set >config.txt

Inutile d'essayer cette commande ne fonctionne plus. J'imagine qu'elle fonctionnait sur d'anciennes versions Tomato et que la syntaxe a changé avec le temps dans busybox.

⚠ Attention : le fichier NVRAM contient toute la configuration de votre routeur, incluant les clés WiFi mais aussi identifiant et mot de passe admin, veillez à ne pas laisser ce fichier sur votre PC. Stockez-le en base KeePass sous forme de pièce jointe ou à minima ou sur un emplacement sécurisé (chiffré).

 

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter