Page d'accueil » comment » Libérez encore plus d'énergie de votre routeur domestique avec le kit modulaire DD-WRT

    Libérez encore plus d'énergie de votre routeur domestique avec le kit modulaire DD-WRT


    Nous vous avons déjà montré comment modifier votre routeur domestique avec le microprogramme alternatif DD-WRT pour améliorer considérablement les performances. Aujourd'hui, nous allons vous montrer comment aller encore plus loin avec le kit modulaire DD-WRT..

    Si vous ne l'avez pas déjà fait, vérifiez bien les deux articles précédents de la série:

    • Transformez votre routeur domestique en un routeur super-alimenté avec DD-WRT
    • Comment augmenter votre signal de réseau Wi-Fi et augmenter la portée avec DD-WRT

    En supposant que vous connaissez ces sujets, continuez à lire. N'oubliez pas que ce guide est un peu plus technique et que les débutants doivent faire attention lorsqu'ils modifient leur routeur..

    Vue d'ensemble

    Ce guide vous expliquera pas à pas comment créer votre propre micrologiciel DD-WRT avec modifications et ajouts à l’aide du «kit de modification du micrologiciel»..

    Le kit de modification du firmware permet d’apporter des modifications au firmware sans le compiler à la source. Effectuer les modifications de cette manière, à l’aide des scripts fournis, devient une simple tâche de téléchargement, de remplacement et de suppression de certains fichiers..

    La principale raison d'utiliser cette méthode est que, dernièrement, la prise en charge des paquets Openwrt IPKG par DD-WRT s'est déplacée vers des routeurs dotés de disques durs (via USB), ce qui fait du mod-kit le seul moyen efficace pour installer correctement les paquets IPKG. pour les cas où un disque dur n'est pas disponible. En outre, cette méthode présente l’avantage supplémentaire de vous libérer de la dépendance JFFS pour l’installation de packages, ce qui est un réel problème pour les routeurs ne disposant que de 4 Mo de mémoire flash..

    Photo par publicenergy

    Buts

    Bien que les instructions relatives à cette procédure soient détaillées sur le wiki de DD-WRT et sur le site du développeur, notre objectif est de faire de ce guide une procédure de copier-coller que tout le monde peut utiliser pour atteindre les objectifs suivants:

    • Installer le paquet knockd et ses dépendances.
    • Installez le package ssmtp avec les configurations générées basées sur la NVRAM.
      • Facultatif, avec prise en charge de TLS smtp (prise en charge de Gmail a.k.a.).

    Une fois que vous avez suivi cette procédure, il devrait être simple de l'adapter à d'autres installations de paquets..

    Attention: Marchez légèrement… gardez à l'esprit que l'utilisation incorrecte du kit de modification peut vous laisser avec un routeur qui doit être décortiqué (car il devient alors une brique inutile). Cependant, si vous êtes un vrai geek, vous adhérez probablement à l'idéologie selon laquelle, lui qui peut détruire une chose, la contrôle, et que seuls les vrais geeks font.

    Conditions préalables

    1. En utilisant cette procédure peut brique votre routeur, comme dans votre routeur inutilisable, nous n'assumons aucune responsabilité pour les dommages qui pourraient être causés directement ou autrement par l'utilisation des procédures ci-dessous.
    2. Cette procédure a été effectuée sur des systèmes Debian (Lenny, Squeeze et Mint) et les instructions ci-dessous supposent que vous en utilisez un également..
    3. Cette procédure est recommandée uniquement aux personnes ayant déjà utilisé le routeur DD-WRT pour flasher leur routeur, avec toutes les conditions préalables, les mises en garde et les limitations qui s'appliquent à leur configuration matérielle. Notre routeur Transformez votre maison en un routeur super-alimenté avec guide DD-WRT constitue un bon point de départ..
    4. Votre routeur doit prendre en charge au moins la version «mini» de DD-WRT..
    5. Cette procédure a été créée et testée sur les routeurs Linksys WRT54GS / L. Si vous utilisez des routeurs d’autres fournisseurs, votre kilométrage risque d’être très limité..

    Installer

    Installer les paquets requis

    Le kit de modification du micrologiciel comporte certaines dépendances pour pouvoir être compilé et fonctionner. Pour les installer / les mettre à jour tous en même temps, lancez cette commande dans un terminal:

    sudo aptitude installer gcc g ++ binutils patch bzip2 flex bison make gettext décompresser zlib1g-dev libc6 subversion

    Télécharger le mod-kit

    Créez un sous-dossier et récupérez le kit auprès du SVN officiel:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
    cd firmware-mod-kit-lecture-seulement / coffre /

    Télécharger un firmware sur lequel travailler

    La première chose à considérer est la version que vous voulez utiliser?
    Une règle de base est la suivante: en cas de doute, utilisez «mini». En effet, tant que votre routeur prend en charge au moins la version «mini», son utilisation vous offre toutes les fonctionnalités les plus utilisées sans aucun bloatware. laissant ainsi à la fois de la place pour les procédures et même de l’espace JFFS pour d’autres usages.

    Une fois que vous avez choisi une version, il est recommandé d’utiliser la dernière version du micrologiciel disponible, car ils ont tendance à avoir beaucoup de corrections de bugs par rapport à leurs homologues «stables»..
    Au moment de la rédaction de cet article, la dernière était «03-17-11-r16454» et cette révision est utilisée dans les commandes qui suivent..

    wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin

    Afin de faciliter le suivi de la version utilisée, renommez le fichier téléchargé afin qu'il représente son numéro de version:

    mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin

    Ceci est bien sûr facultatif, mais les commandes ci-dessous supposent que vous avez renommé le fichier..

    Extraire le firmware

    Afin de pouvoir changer les fichiers dans le firmware, nous devons extraire son contenu dans un répertoire temporaire.
    La syntaxe de cette commande est la suivante:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    Dans notre cas, cela se traduirait par:

    ./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1

    Remarque: la première fois que vous exécutez cette commande, les outils Mod-Kit sont créés sur votre système. cela ne se produit qu'une fois et peut prendre un peu de temps… alors soyez patient…

    Installation de packages

    Maintenant que le firmware est extrait, nous pouvons installer les paquets.
    En général, la procédure consiste à télécharger le paquet et ses dépendances sous la forme d'un fichier ipk à partir du référentiel openWRT. Une fois téléchargés, installez-les dans le firmware extrait à l'aide du script fourni..

    Le paquet knockd

    Des instructions détaillées sur la façon de configurer et d'utiliser Knockd seront détaillées dans un prochain article. Vous pouvez donc choisir de passer cette étape pour le moment ou de le faire pour préparer l'avenir, car Knockd ne prend pas beaucoup d'espace de toute façon..

    Knockd est un démon qui écoute les événements de communication au niveau de la couche liaison pour les séquences puis les agit..
    Cela signifie que le périphérique exécutant le démon peut ne même pas «écouter» les ports (une analyse des ports ne les verra pas comme ouverte) tout en lui permettant de faire quelque chose dont vous avez besoin, à partir d'une seule commande, jusqu'au bout. à un script complet. En utilisant cette technique, vous pouvez amener le serveur à effectuer toute opération dont vous avez besoin à distance (sur Internet) sans exposer votre réseau domestique..

    Knockd n'a qu'une seule dépendance listée, donc téléchargez le paquet et sa dépendance en émettant:

    wget http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
    wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk

    Installez le “knock daemon” (knockd) ipk dans le firmware:

    ./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/

    Installez le «paquet capture» (libpcap) ipk dans le firmware:

    ./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/

    Comme “knockd” peut être appelé avec un autre fichier de configuration (comment cela sera expliqué dans un article ultérieur), il n'est pas nécessaire d'exécuter une autre opération et vous pouvez passer à la section de construction du firmware, si c'est tout ce que vous vouliez installer..

    Le paquet SSMTP

    Le package SSMTP permet à votre routeur d’envoyer des courriers électroniques comme nous l’avons montré dans la section Comment configurer des alertes par courrier électronique sous Linux, à l’aide de Gmail ou SMTP pour serveurs. Nous vous avions alors promis de montrer comment configurer cela pour le DD-WRT et nous allons maintenant vous livrer.
    Ceci est principalement utile si vous allez créer des scripts sur le routeur pour lesquels vous souhaitez recevoir des commentaires sur leur fonctionnement par courrier électronique..

    La configuration de ce paquet est un peu plus complexe que sur les systèmes Linux normaux à cause des limitations imposées par un système embarqué, prenez donc une profonde respiration… prêt?…. Allons-y… :)

    Télécharger le package:

    wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk

    Installez le “ssmtp” ipk dans le firmware:

    ./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/

    Prise en charge TLS (facultatif)
    SSMTP ne répertorie aucun autre paquet en tant que dépendance, mais si vous voulez pouvoir utiliser une passerelle smtp nécessitant une authentification TLS (i.e. Gmail), vous devez également installer le paquet openSSL.
    Remarque: Il y a un énorme inconvénient faire cela sous la forme d’espace considérablement réduit sur le routeur pour JFFS ultérieurement. C'est-à-dire que le paquet openSSL occupe environ 500 Ko de votre total de 4 Mo (pour un routeur support non "méga" normal), auquel s'ajoute la surcharge JFFS et vous découvrirez que votre gauche avec, mais quelques précieux, blocs de espace JFFS gratuit (environ 60 Ko sur le WRT54GL).

    Comme il existe toujours des serveurs smtp ne nécessitant pas le protocole TLS (généralement ceux de votre fournisseur d’accès à Internet), je suggère de prendre une minute pour réfléchir si vous devez réellement utiliser la passerelle nécessitant TLS..

    Si vous avez décidé d'activer le support TLS malgré son inconvénient, téléchargez le paquet openSSL:

    wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk

    Installez l'ipk «openSSL» (libopenssl) dans le firmware:

    ./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/

    Les configurations
    Il y a une limitation avec le package SSMTP, il est impossible de l'invoquer avec un autre fichier de configuration..
    Étant donné que le microprogramme est en lecture seule lorsqu'il se trouve sur le routeur, cela signifie que nous pouvons uniquement coder en dur la configuration dans le microprogramme..
    Cependant, que se passe-t-il si nous ne voulons pas passer par toutes les étapes de modification du micrologiciel, simplement pour modifier les paramètres de messagerie? (par exemple un changement de mot de passe).

    À cette fin, Jeremy (le créateur du micrologiciel du microprogramme) et moi-même sommes parvenus à la conclusion (indépendamment si je puis humblement ajouter) que le seul moyen sensé de le faire serait de:

    1. Définissez l'emplacement des fichiers de configuration vers lequel le package ssmtp pointe vers l'emplacement en lecture seule sous etc., pointez sur le répertoire tmp auquel vous pouvez écrire au moment de l'exécution..
    2. Créer un script qui générerait dynamiquement les configurations basées sur des variables NVRAM au démarrage.

    Pour y parvenir, quelques étapes supplémentaires sont nécessaires…

    Lien symbolique au répertoire de configuration ssmtp
    Comme expliqué ci-dessus, nous devons faire la / etc / ssmtp sur le routeur, pointez sur le / tmp répertoire en tant que seul endroit accessible en écriture sur le routeur au moment de l’exécution. Pour ce faire, supprimez le répertoire ssmtp créé par le programme d'installation ipk:

    rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/

    Créez un nouveau lien symbolique qui pointe le / etc / ssmtp sur le système de fichiers racine du routeur, pour pointer vers / tmp / etc / ssmtp en tant que chemin absolu:

    ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp

    Remarque: Même si cela semble illogique pour le moment, parce que nous pointons le répertoire de configuration du paquet vers un emplacement situé en dehors du répertoire de travail du kit de modification du microprogramme, je vous assure que tout va bien du point de vue des routeurs au moment de l'exécution.

    Un script d'init
    Bien qu'il soit tout à fait possible de ne pas injecter ce script dans le micrologiciel et de l'exécuter ultérieurement en tant que script de démarrage, je pense qu'il convient de le mettre ici, ne serait-ce que comme exemple pour une utilisation future..
    À l'origine, Jeremy avait créé le script adapté à la demande de quelqu'un. Par la suite, je l'ai ajusté et augmenté pour qu'il soit plus compatible avec les rapports DD-WRT et syslog..

    Créez le nouveau script init (démarrage):

    vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Remarque: vous pouvez utiliser un autre éditeur, j'utilise vi car il correspond à ce qui est disponible sur le routeur…
    Faites-en son contenu:

    #! / bin / sh
    #
    # title: ssmtp_nvram.sh
    # auteur: Jeremy Collake et Aviad Raviv
    # site: http://www.bitsum.com, http://howtogeek.com
    #
    # script pour construire le fichier de configuration à partir de nvram vars.
    # fonctionnera pour tout fichier de configuration utilisant
    # var = paires de types de valeur.
    #
    # utilise les préfixes pour les variables nvram.
    #
    # c'est à dire.
    # ssmtp_hostname = quelque chose
    # se traduit par ssmtp.conf
    # hostname = quelque chose
    #
    logger_func ()

    logger -s -p local0.notice -t SSMTP_init $ 1

    logger_func "############ Lancement de l'initialisation SSMTP ############"
    logger_func "Création du répertoire etc dans / tmp"
    [! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
    CONFIG_FILE = / etc / ssmtp / ssmtp.conf
    NVRAM_PREFIX = ssmtp_
    PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed" s / _ / / "

    logger_func "Génération de $ CONFIG_FILE pour le paquet $ PACKAGE_NAME"
    #echo $ 0: génération de $ CONFIG_FILE pour le paquet $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# auto généré sur la base de nvram par $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    si [-z "'nvram show | grep ssmtp'"]
    puis
    logger_func "Il semble que vous n'ayez pas défini les variables NVRAM requises pour générer le fichier conf"
    logger_func "** Considérez ** en utilisant ces commandes dans votre script de démarrage:"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_mailhub = smtp.gmail.com: 587"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_UseSTARTTLS = YES"
    logger_func "nvram set ssmtp_AuthUser = nom d'utilisateur"
    logger_func "nvram set ssmtp_AuthPass = mot de passe"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "créer les variables NVRAM et réexécuter le script d'initialisation ou redémarrer pour que les paramètres prennent effet."
    sortie 0
    Fi

    ################################################# #########
    #
    # boucle principale
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    pour i dans $ CONFIG_VARS; faire
    echo $ i >> $ CONFIG_FILE
    terminé

    ################################################# #########
    #
    # verification sanitaire
    #
    si [ ! -f "$ CONFIG_FILE"]; puis
    # echo "$ 0: ERREUR - impossible de créer $ CONFIG_FILE. Peut-être qu’il n’ya pas de symink / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ERREUR - impossible de créer $ CONFIG_FILE. Peut-être qu'il n'y a pas de symink / etc / XXXX -> / tmp / etc / XXXX?"
    Fi
    logger_func "############ Terminé l'initialisation SSMTP ###########"

    Rendez-le exécutable:

    chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    Prenez note des variables d’attente NVRAM dans le script. Il est de notre responsabilité de leur donner un outil de travail après avoir installé notre micrologiciel modifié sur le routeur..

    Construire le firmware modifié

    Maintenant que tout est en place, il est temps de reconditionner le micrologiciel modifié dans un fichier binaire compressé que nous pouvons envoyer au routeur..
    La syntaxe de script «build.sh» est la suivante:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Pour ce faire, nous utilisons le script fourni.

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Une fois l’opération «build» terminée, plusieurs images de microprogrammes attendent d’être utilisées dans le répertoire «output»..

    Vous pouvez maintenant flasher le fichier appelé «custom_image_00001-generic.bin» sur votre routeur, comme vous le feriez normalement avec un micrologiciel DD-WRT..

    Remarque: N'oubliez pas de restaurer les "paramètres d'usine" avant, pendant et juste après le flash du firmware.

    Post-flash étapes

    Comme nous avons demandé au paquet SSMTP de rechercher les variables NVRAM afin de générer le fichier de configuration ssmtp, nous devons maintenant lui fournir les informations manquantes..
    Pour ce faire, nous utiliserons la fonction "Exécuter les commandes" de l'interface Web..

    Allez dans l'interface Web -> “administration” -> “commandes” -> collez dans la zone de texte les éléments suivants:

    nvram set [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com: 587
    nvram set [email protected]
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = votre-nom-d'utilisateur-gmail (sans le @ gmail.com)
    nvram set ssmtp_AuthPass = you-gmail-password
    nvram set ssmtp_FromLineOverride = YES
    nvram commit

    Remplacez le texte après le signe égal (=) par vos informations réelles, puis appuyez sur «Exécuter les commandes»..
    Remarque: si vous utilisez un serveur SMTP standard et non TLS, le port à utiliser est 25 au lieu de 587.

    Maintenant que les informations SSMTP sont prêtes à être utilisées, vous devez appeler le script init. Vous pouvez donc soit redémarrer le routeur, soit coller cette information dans la zone de texte «commandes»:

    /etc/init.d/S80ssmtp

    Puis cliquez sur "Exécuter les commandes" à nouveau.
    Le résultat de cette commande devrait ressembler à ceci:

    Testez que vous pouvez envoyer un email
    Encore une fois, collez-le dans la zone de texte «Commandes» de la commande suivante avec votre adresse électronique:

    echo "test du creuset emailing 123 qwe" | ssmtp -vvv [email protected]

    Puis cliquez sur "Exécuter les commandes" à nouveau.
    Comme nous avons utilisé l'option -vvv pour plus de verbosité, le résultat de cette commande devrait ressembler à ceci:

    Si tout s'est bien passé, vous devriez recevoir le courriel de test en quelques secondes..

    Nous espérons que vous pourrez utiliser ces informations pour repousser les limites de votre routeur domestique, alors vous pensiez que c'était possible et que vous contrôliez maintenant réellement votre routeur domestique, ainsi que le DD-WRT…


    Linux prolonge la vie, Linux élargit la conscience… Linux est vital pour le transport de paquets