Linksys WRT54GS

Ou comment un petit routeur m'a propulsé dans Linux :) 

    Je possède un routeur WiFi Linksys WRT54GS, hardware v1.1. Ce routeur est parfait, car on peut remplacer le firmware original par OpenWrt. Ensuite on peut faire tout ce que l'on veut.

ATTENTION: La garantie des produits Linksys est cassée par une mise à jour d’un firmware alternatif non estampillé Linksys 

    Il existe de très nombreux firmware de remplacement pour les WRT54G/GS. On peux citer les quelques que j'ai essayé au début de ma quête du firmware ultime (c'est OpenWrt !!!). Ils ont un point commun: ils sont tous administré par l'interface web, la plus part du temps très proche de celle du firmware original. Ils apportent différentes fonctionnalités.

  • Alchemy: la version gratuite du  firmware de Sveo$oft. 
  • DD-Wrt: firmware basé sur OpenWrt, maintenu par Brainslayer. Le plus interessant de cette catégorie selon moi.
  • HyperWrt: un autre version....

   Aucun de ces firmware ne m'a satisfait à 100%. En effet, vu ma configuration particulière la pluspart des firmware étaient simplement incappable de faire ce dont j'avais besoin.

    De toute façon, on s'en fiche puisque qu'on va installer OpenWrt. Le principe est simple: un distribution minimale (juste de quoi demarrer le materiel et ssh) sur laquelle on installe des packages pour avoir les applications que l'on souhaite.

Mise à jour: suivez le guide ci-dessous pour installer OpenWrt Kamikaze 7.07

1.   Récupérer la bonne image

    Rendez-vous sur le site officiel d'OpenWrt. Dans la section Downloads (téléchargements), on entre dans le répertoire 7.07 (la dernière version à ce jour) puis dans le sous dossier brcm-2.4 et enfin on récupère l'image qui nous intéresse, dans mon cas openwrt-wrt54gs-2.4-squashfs.bin.

. Si vous n'êtes pas sur de vous, consultez la liste du matériel.

2.   Flasher le routeur

    Le flashage du routeur est la phase critique du processus d'upgrade, le moment ou l'on croise les doigts pour que rien de mauvais n'arrive (coupure d'électricité, etc...). Comme j'upgrade de Whiterussian RC6, j'ai choisi de réaliser l'upgrade via l'interface web: webif. Il y a d'autres alternatives.

3.   Configuration initiale

    Une fois le routeur flashé, la diode Power va clignoter, puis la diode DMZ. Une fois que tout est fini, il faut se connecter en telnet pour définir le mot de passe root.

jah@zion:~$ telnet 192.168.1.1

    On exécute la commande passwd et voilà. On peut maintenant se connecter au routeur en ssh.

4.   Configuration

    Avec Kamikaze, la configuration a complètement changé. On n'utilise plus les variables nvram, mais uniquement des fichiers de configuration. Sinon les paramètres n'ont pas changé, c'est seulement la manière de les enregistrer. La documentation officielle est très fournie et constitue une bonne base. Le wiki est un excellent complément.

    Je poste également mes fichiers de configuration. La configuration est vraiment basique: 1 Modem en PPPoE sur le port Wan, 2 serveurs branchés sur les ports du switch et deux client en wlan.

5.   Options avancées

    New: Installer l'IPv6

    5.1   Filtrer les accès WiFi avec adresse MAC

    Pour pouvoir avoir cette fonctionnalité, il faut installer le package wl. ipkg install wl. Une fois que c'est fait, il y a trois modes de configuration:

  • "0": désactivé. Le module n'est pas actif

  •  "1": deny. Le module est actif et interdira l'accès au réseau WiFi aux MAC spécifiées dans wireless.wl0.maclist

  • "2": allow. Le module est actif et autorisera l'accès au réseau WiFi uniquement aux MAC spécifiées dans wireless.wl0.maclist

    J'ai choisi le mode 2.

    uci set wireless.wl0.macfilter="2"
    uci set wireless.wl0.maclist="00:0D:0B:B5:2A:BF 00:0D:0C:A2:2A:BA"
    uci commit

     Il faut aussi créer un script de démarage:

    root@jahrouter:~# cat /etc/init.d/wlmacfilter
    #!/bin/sh /etc/rc.common

    # The macfilter 2 means that the filter works in "Allow" mode.
    # Other options are: 0 - disabled, or 1 - Deny.
    # 

    # The maclist is a list of mac addresses to allow/deny, quoted, with spaces
    # separating multiple entries
    # eg "00:0D:0B:B5:2A:BF 00:0D:0C:A2:2A:BA"
    START=47
    MACFILTER=`uci get wireless.wl0.macfilter`
    MACLIST=`uci get wireless.wl0.maclist`
    start() {
    wlc ifname wl0 maclist "$MACLIST"
    wlc ifname wl0 macfilter "$MACFILTER"
    }
    stop() {
    wlc ifname wl0 maclist none
    wlc ifname wl0 macfilter 0
    }
     

     On oublie pas de chmod 755 /etc/init.d/wlmacfilter. Et voilà! 

    5.2   Installer les scripts de qualité de service (QoS)

ipkg install qos-scripts. Cela installe tout le nécessaire pour faire de la QoS. On configure dans /etc/config/qos (j'ai rien trouvé a redire à la configuration de base).

    5.3   Configurer le firewall

    On peut visiblement éditer /etc/config/firewall ou /etc/firewall.user, je n'ai pas compris quelle est la différence. J'ai choisi de modifier /etc/firewall.user car je l'avais déjà tout bien fait sur ma RC6.