Nous vous avons déjà montré comment modifier votre routeur domestique avec le micrologiciel alternatif DD-WRT pour des performances considérablement améliorées, et aujourd'hui, nous allons vous montrer comment aller encore plus loin avec le Mod-Kit DD-WRT.
Si vous ne l'avez pas déjà fait, assurez-vous de consulter les deux articles précédents de la série:
- Transformez votre routeur domestique en un routeur super-alimenté avec DD-WRT
- Comment booster le signal de votre réseau Wi-Fi et augmenter la portée avec DD-WRT
En supposant que vous connaissez ces sujets, continuez à lire. Gardez à l'esprit que ce guide est un peu plus technique et que les débutants doivent être prudents lorsqu'ils modifient leur routeur.
Aperçu
Ce guide vous expliquera étape par étape comment créer votre propre micrologiciel DD-WRT avec des modifications et des ajouts en utilisant le " firmware modification kit “.
Le kit de modification du firmware permet d'apporter des modifications au firmware sans le compiler à partir de la source. Faire des changements de cette manière, à l'aide des scripts fournis, devient une simple question de téléchargement, de remplacement et de suppression de certains fichiers.
La principale raison d'utiliser cette méthode est que, dernièrement, DD-WRT prend en charge le Openwrt Les packages IPKG se sont déplacés vers des routeurs dotés de disques durs (via USB), ce qui fait du mod-kit le seul moyen efficace d'installer les packages IPKG avec succès dans les cas où un HD n'est pas disponible. De plus, cette méthode a l'avantage supplémentaire de vous soulager de la dépendance JFFS pour l'installation des packages, ce qui pour les routeurs avec seulement 4 Mo de mémoire flash est un réel problème.
Buts
Alors que les instructions pour cette procédure, sont détaillées sur Wiki DD-WRT et sur le developer’s site , nous visons à faire de ce guide une procédure de copier-coller que tout le monde peut utiliser pour atteindre les objectifs suivants:
- Installez le package knockd et ses dépendances.
-
Installez le package ssmtp avec les configurations générées basées sur la NVRAM.
- En option avec le support de TLS smtp (a.k.a. support Gmail)
Une fois que vous avez suivi cette procédure, il devrait être très simple de l'adapter à d'autres installations de paquets.
avertissement
:
Marchez légèrement… gardez à l'esprit qu'une utilisation incorrecte du kit de modification peut vous laisser avec un routeur qui a besoin
démêlage
(comme à son tour en un
brique inutile
). Cependant, si vous êtes un vrai geek, vous souscrivez probablement à l'idéologie qui,
celui qui peut détruire une chose, contrôle une chose
, et seuls les vrais geeks font ça
Conditions préalables
- L'utilisation de cette procédure peut brique votre routeur, comme dans make your router inutilisable, nous n'assumons aucune responsabilité pour les dommages qui pourraient être causés directement ou d'une autre manière en raison de l'utilisation des procédures ci-dessous.
- Cette procédure a été effectuée sur des systèmes basés sur Debian (Lenny, Squeeze et Mint) et les instructions ci-dessous supposent que vous en utilisez également un.
- Cette procédure n'est recommandée que pour les personnes qui ont de l'expérience avec le flashage de leur routeur avec DD-WRT, avec toutes les conditions préalables, mises en garde et limitations qui s'appliquent à leur configuration matérielle. un bon point de départ serait notre Transformez votre routeur domestique en un routeur super-alimenté avec DD-WRT guide.
- Votre routeur doit prendre en charge au moins la version «mini» de DD-WRT.
- 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 peut être très élevé.
Installer
Installation des packages requis
Le kit de modification du firmware a quelques dépendances pour qu'il se compile et fonctionne. Afin de les installer / mettre à jour tous à la fois, lancez cette commande dans un terminal:
sudo aptitude installer gcc g ++ binutils patch bzip2 flex bison faire gettext décompresser zlib1g-dev libc6 subversion
Téléchargez 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-read-only / trunk /
Téléchargez un firmware sur lequel travailler
La première chose à considérer est la version que vous souhaitez utiliser?
Une règle d'or est: en cas de doute, utilisez «mini». En effet, tant que votre routeur prend en charge au moins la version «mini», son utilisation vous donne toutes les fonctionnalités les plus couramment utilisées sans aucun bloatware. laissant ainsi à la fois un espace pour les procédures et même un espace JFFS pour
autres usages
dans la plupart des cas.
Une fois que vous avez choisi une version, il est recommandé d'utiliser la dernière révision du micrologiciel disponible, car ils ont tendance à avoir beaucoup de corrections de bogues par rapport à leurs homologues «stables».
Au moment d'écrire ces lignes, la dernière version é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 que nous utilisons, renommez le fichier téléchargé pour représenter 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.
Extraction du firmware
Afin de pouvoir modifier les fichiers dans le firmware, nous devons extraire son contenu dans un répertoire temporaire.
La syntaxe de cette commande est:
./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, elle crée les outils de mod-kit sur votre système. cela n'arrive qu'une seule fois et peut prendre un peu de temps… alors soyez patient…
Installer des packages
Maintenant que le firmware est extrait, nous pouvons y installer les packages.
En général, la procédure consiste à télécharger le package 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 micrologiciel extrait à l'aide du script fourni.
Le paquet knockd
Des instructions détaillées sur la configuration et l'utilisation de Knockd seront détaillées dans un prochain article, vous pouvez donc choisir d'ignorer cette étape pour le moment ou de la faire en prévision de l'avenir, car Knockd ne prend pas beaucoup de place 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 agit sur eux.
Ce que cela signifie, c'est que vous pouvez faire en sorte que le périphérique exécutant le démon ne «écoute» même pas sur les ports (une analyse de port ne les verra pas comme ouverts) et le faire faire quelque chose dont vous avez besoin, à partir d'une seule commande
en haut
à un script complet.
Utiliser cette technique
vous pouvez déclencher le serveur pour qu'il exécute toute sorte d'opération dont vous avez besoin à distance (sur Internet) sans exposer votre réseau domestique.
Knockd n'a qu'une seule dépendance répertoriée, alors téléchargez le package 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 l'ipk «knock daemon» (knockd) dans le firmware:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Installez l'ipk «packet capture» (libpcap) dans le firmware:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Comme «knockd» peut être invoqué avec un autre fichier de configuration (comment sera expliqué dans un prochain article), il n'est pas nécessaire d'effectuer une autre opération et vous pouvez passer à la section de construction du firmware, si c'est tout ce que vous vouliez installer.
Le package SSMTP
Le package SSMTP permet à votre routeur d'envoyer des e-mails comme nous l'avons montré dans notre
Comment configurer les alertes par e-mail sous Linux à l'aide de Gmail ou SMTP
pour les serveurs. Nous vous avions promis à l'époque que nous montrerions comment configurer cela pour DD-WRT et nous allons maintenant 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 e-mail.
La configuration de ce paquet est un peu plus complexe que sur les systèmes Linux normaux en raison de la limitation imposée par un système embarqué, alors prenez une grande respiration… prêt?…. Allons-y… :)
Téléchargez le package:
wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk
Installez l'ipk «ssmtp» dans le firmware:
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
Prise en charge TLS (en option)
SSMTP ne répertorie aucun autre package comme ses dépendances, mais si vous souhaitez pouvoir utiliser une passerelle smtp qui nécessite une authentification TLS (c.-à-d.
Gmail
), vous devez également installer le package openSSL.
Note
: Il y a un ÉNORME
inconvénient
à le faire sous la forme d'un espace considérablement réduit sur le routeur pour JFFS plus tard. Autrement dit, le package openSSL prend environ 500K d'espace sur votre total de 4 Mo (pour un routeur de support non «méga» normal), en plus de la surcharge JFFS et vous découvrirez que votre gauche avec, mais quelques précieux, blocs de espace JFFS gratuit (environ 60 Ko sur WRT54GL).
Comme il existe encore des serveurs SMTP qui ne nécessitent pas de TLS (généralement ceux de votre FAI), je suggère de prendre une minute pour réfléchir si vous avez vraiment besoin d'utiliser le TLS nécessitant une passerelle.
Si vous avez décidé d'activer le support TLS malgré son inconvénient, téléchargez le package 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/
Configurations
Il existe une limitation avec le package SSMTP, car il n'est pas possible de l'invoquer avec un autre fichier de configuration.
Étant donné que le micrologiciel est en lecture seule lorsqu'il est sur le routeur, cela signifie que, hors de la boîte, nous ne pouvons coder en dur que la configuration dans le micrologiciel.
Cependant, que se passe-t-il si nous ne voulons pas passer par toutes les étapes de modification du micrologiciel, juste pour modifier les paramètres de messagerie? (par exemple un changement de mot de passe).
À cette fin, Jeremy (le créateur du kit de micrologiciels) et moi-même sommes arrivés à la conclusion (indépendamment si je puis humblement ajouter) que la seule façon saine de le faire serait de:
- Faites en sorte que l'emplacement des fichiers de configuration vers lequel le package ssmtp pointe vers l'emplacement en lecture seule sous etc, pointe vers le répertoire tmp qui est accessible en écriture au moment de l'exécution.
- Créez un script qui générerait dynamiquement les configurations basées sur les variables NVRAM au démarrage.
Pour y parvenir, certaines étapes supplémentaires sont nécessaires…
Lien symbolique vers le répertoire de configuration ssmtp
Comme expliqué ci-dessus, nous devons faire le
/ etc / ssmtp
emplacement sur le routeur, pointez sur
/ tmp
répertoire car c'est le seul endroit accessible en écriture sur le routeur au moment de l'exécution. Pour ce faire, supprimez le répertoire ssmtp qui a été créé par le programme d'installation d'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 comme chemin absolu:
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
Note : Même si cela semble illogique pour le moment, parce que nous pointons le répertoire de configuration du paquet vers un emplacement en dehors du répertoire de travail du kit de modification du firmware, je vous assure que cela semble tout à fait correct du point de vue des routeurs au moment de l'exécution.
Un script d'initialisation
Bien qu'il soit tout à fait possible de ne pas injecter ce script dans le firmware et de l'exécuter ultérieurement en tant que script de démarrage, je pense qu'il est approprié de le mettre ici ne serait-ce qu'à titre d'exemple pour une utilisation future.
À l'origine, Jeremy a créé le script adapté à la demande de quelqu'un, plus tard, je l'ai ajusté et augmenté pour qu'il soit plus compatible avec DD-WRT et les rapports 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 créer le fichier de configuration à partir de nvram vars.
# fonctionnera pour tout fichier de configuration qui utilise
# var = paires de types de valeur.
#
# utilise des préfixes pour les variables nvram.
#
# и.е.
# ssmtp hostname = quelque chose
# se traduit par ssmtp.conf
# hostname = quelque chose
#
logger_func ()
{
enregistreur -s -p local0.notice -t SSMTP_init $ 1
}
logger_func "########### Démarrage de l'exécution 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 package $ PACKAGE_NAME"
#echo $ 0: générer $ CONFIG_FILE pour le package $ PACKAGE_NAME
echo "#! / bin / sh"> $ CONFIG_FILE
echo "#" >> $CONFIG_FILE
echo "# généré automatiquement basé sur 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 de configuration"
logger_func "** Pensez ** à utiliser 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 = OUI"
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ée les variables NVRAM et réexécute le script d'initialisation ou redémarre pour que les paramètres prennent effet."
sortie 0
être
###########################################################
#
# 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'y a pas de lien symbolique / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "ERREUR - impossible de créer $ CONFIG_FILE. Peut-être qu'il n'y a pas de lien symbolique / etc / XXXX -> / tmp / etc / XXXX?"
être
logger_func "########### Fin de l'exécution de 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 quelque chose avec quoi travailler après avoir installé notre firmware modifié sur le routeur.
Construisez le micrologiciel modifié
Maintenant que tout est en place, il est temps de reconditionner le firmware modifié dans un binaire compressé que nous pouvons flasher sur le routeur.
La syntaxe du script «build.sh» est:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Pour ce faire, nous utilisons le script fourni, alors lancez:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Une fois l'opération «build» terminée, il y aura plusieurs images de firmware en attente 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 auriez normalement un firmware DD-WRT .
Note : N'oubliez pas de restaurer les «paramètres d'usine par défaut» avant, pendant et juste après le flash du micrologiciel.
Post flash étapes
Étant donné que nous avons demandé au package SSMTP de rechercher les variables NVRAM afin de générer le fichier de configuration ssmtp, nous devons maintenant lui fournir les informations manquantes.
Nous accomplirons cela en utilisant la fonction «Exécuter les commandes» de l'interface graphique Web.
Allez dans l'interface graphique Web -> «administration» -> «commandes» -> collez dans la zone de texte ce qui suit:
nvram défini [email protected]
nvram défini ssmtp_mailhub = smtp.gmail.com: 587
nvram défini [email protected]
nvram set ssmtp_UseSTARTTLS = OUI
nvram set ssmtp_AuthUser = votre-nom-d'utilisateur-gmail (sans @ gmail.com)
nvram set ssmtp_AuthPass = vous-gmail-mot de passe
nvram set ssmtp_FromLineOverride = OUI
nvram commit
Remplacez le texte après le signe égal (=), par vos informations réelles, puis appuyez sur "Exécuter les commandes".
Note
: si vous utilisez un serveur smtp standard, non TLS, le port à utiliser est 25 au lieu de 587.
Maintenant que les informations SSMTP sont prêtes à être utilisées, vous devrez appeler le script init. Vous pouvez donc soit redémarrer le routeur, soit coller ceci dans la zone de texte «commandes»:
/etc/init.d/S80ssmtp
Puis appuyez à nouveau sur "Exécuter les commandes".
La sortie de cette commande devrait ressembler à:
Testez que vous pouvez envoyer un e-mail
Collez à nouveau ceci dans la zone de texte "commandes" la commande suivante avec votre adresse e-mail:
echo "test du creuset emailing 123 qwe" | ssmtp -vvv [email protected]
Puis appuyez à nouveau sur "Exécuter les commandes".
Comme nous avons utilisé l'option -vvv pour plus de verbosité, la sortie de cette commande devrait ressembler à:
Si tout s'est bien passé, vous devriez recevoir l'e-mail de test en quelques secondes.
Nous espérons que vous pourrez utiliser ces informations pour repousser les limites de votre routeur domestique encore plus loin que vous ne le pensiez possible et vous contrôlez vraiment votre routeur domestique et DD-WRT …
Linux prolonge la vie, Linux élargit la conscience… Linux est vital pour les voyages de paquets