OpenWrt WhiteRussian RC6

Situation au 01/02/2007 :

Le Net du Kermeur utilise une version personnalisée de firmware, compilée à partir d’OpenWrt WhiteRussian RC6.

L’environnement de compilation est sur la machine Debian des sauvegardes dans $HOME/openwrt/whiterussian_rc6/, le spécifique au Net du Kermeur dans le répertoire cfk, et dans ce répertoire le script update.sh est à lancer avant le make produisant le firmware.

Modifications par rapport a un firmware OpenWrt WhiteRussian RC6 :

  • Il y a un mot de passe root par défaut : openwrt.
  • /etc/firewall.user permet les connexions port 22(ssh), 80(http) et 161(snmp)
  • Ces deux dispositions permettent de flasher via le Wifi et de reprendre la main après le reboot (attention toutefois à ce que les variables nvram soient correctes, en particulier il0macaddr et les wl0_*).
  • Modification du wificonf, avec réintroduction de la fonction mw_to_qdbm (de la WhiteRussian RC4) convertissant une valeur en milliwatts en qDbm. Cette modification permet d’avoir des mesures cohérentes entre les utilitaires wl et wificonf.
  • Les interfaces réseau, définies dans la variable nvram ifup_interfaces, sont lan, wan et relais, cette dernière est la cinquieme patte d’un client associé à un relais et qui alimente le relais; à noter qu’un client normal dispose des cinq prises RJ45 pour son lan.
  • Il y a trois scripts S35firewall, celui d’origine, S35firewall_client_relais (client avec relais associé) et S35firewall_relais (relais); un de ces deux derniers remplace celui d’origine suivant la configuration choisie.
  • Par défaut le firmware intègre les packages suivants : wl, screen (avec libncurses), snmpd, le gpio de la RC4 au lieu du module diag (qui surcharge le processeur).
  • Présence d’un répertoire /usr/local/bin contenant divers scripts locaux plus ou moins utiles et plus ou moins propres.

Flashage à distance :

Les routeurs sont flashés à distance, via leur interface wan qui est aussi leur interface wifi (sauf pour les relais), dans une session screen déconnectée pour que le processus de flashage ne soit pas bloqué par une coupure éventuelle de liaison, la procédure :

ssh -l root wrt999

screen /usr/local/bin/firmware.sh [openwrt]

Le script firmware.sh vérifie tout d’abord qu’il est bien lancé dans une session screen, télécharge le firmware et son fichier checksum depuis le serveur http, vérifie l’intégrité du fichier reçu et si le paramètre openwrt est passé, déconnecte la session screen et flashe le routeur.

Configuration :

A la première connexion root (mot de passe openwrt), le script setupow.sh se lance (variable cfk_setup_done != 1) si le routeur n’a pas déja été configuré pour le réseau du Kermeur, et propose trois types de configuration :

  • Simple client
  • Client avec relais associé,
  • Relais

Toutes ces configurations proposent d’utiliser un script de lancement, en fait un wget d’un script php d’un serveur http avec en parametre l’adresse mac, ce qui permet de personnaliser le wrt54g au démarrage en fonction des données stockés dans une base mysql du serveur www.lekermeur.net : import du fichier hosts, import clé publique ssh de root, mise en place crontab, etc …
voir script /etc/init.d/S42localnet et cfk_startup.php (sur le serveur http) ci-joint.

Reste à faire à la main

Sur la machine d’exploitation :

  • Enlever l’entrée dans $HOME/.ssh/known_hosts pour ce routeur.
  • Mettre à jour la variable wrvers de la table wrt54g de la base de données, le script de démarrage généré par un script php est personnalisé en fonction de la valeur de cette variable.
    update wrt54g set wrvers=’rc6′ where wrname=’wrt112′;

Sur le routeur :

  • Changer le mot de passe root

password

  • Vérifier le paramétrage Qos dans /etc/config/qos

Actuellement 1920 Kbps en download, 512 Kbps en upload.

  • Ajout de packages éventuellement :

ipkg update
ipkg install openvpn pour ceux qui ont un Vpn bridgé sur leur Lan.

  • Pour les derniers modèles qui ont le voyant bouton cisco, mise en place du script d’analyse de niveau radio reçu (lance par crontab)

Signal/bruit de 0 a 8 –> eteint, de 9 a 16 –> orange, au dessus de 16 –> blanc
De 23H a 7H éteint
mv /usr/local/bin/cfk_loupiote.sh /root/loupiote.sh

  • Reboot pour la mise en place de tout ça

reboot