Homepage » come » Scatena ancora più energia dal tuo router di casa con il DD-WRT Mod-Kit

    Scatena ancora più energia dal tuo router di casa con il DD-WRT Mod-Kit


    Ti abbiamo già mostrato come modificare il tuo router di casa con il firmware alternativo DD-WRT per prestazioni notevolmente migliorate e oggi ti mostreremo come portarlo ancora più avanti con il DD-WRT Mod-Kit.

    Se non lo hai già fatto, assicurati di controllare i due articoli precedenti della serie:

    • Trasforma il tuo router di casa in un router Super-Powered con DD-WRT
    • Come potenziare il segnale di rete Wi-Fi e aumentare la portata con DD-WRT

    Supponendo che tu abbia familiarità con questi argomenti, continua a leggere. Tieni presente che questa guida è un po 'più tecnica e che i principianti dovrebbero prestare attenzione durante la modifica del router.

    Panoramica

    Questa guida fornirà una descrizione passo passo di come creare il proprio firmware DD-WRT con modifiche e aggiunte utilizzando il "kit di modifica del firmware".

    Il kit di modifica del firmware consente di apportare modifiche al firmware senza compilarlo dalla sorgente. Apportare modifiche in questo modo, con l'aiuto degli script forniti, diventa una semplice questione di download, sostituzione e cancellazione di alcuni file.

    Il motivo predominante per usare questo metodo è perché ultimamente il supporto di DD-WRT per i pacchetti Openwrt IPKG si è spostato verso router dotati di hard disk (tramite USB), il che rende il mod-kit l'unico modo funzionante per installare correttamente i pacchetti IPKG per i casi in cui un HD non è disponibile. Inoltre, questo metodo ha il vantaggio di sollevarti dalla dipendenza JFFS per l'installazione dei pacchetti, che per i router con soli 4 MB di flash è un vero problema.

    Foto di publicenergy

    obiettivi

    Mentre le istruzioni per questa procedura sono dettagliate sulla wiki di DD-WRT e sul sito dello sviluppatore, miriamo a rendere questa guida una procedura di copia e incolla che chiunque può utilizzare per raggiungere i seguenti obiettivi:

    • Installa il pacchetto knockd e le sue dipendenze.
    • Installa il pacchetto ssmtp con configurazioni generate da NVRAM.
      • Opzionalmente con supporto per smtp TLS (a.k.a. supporto Gmail).

    Una volta che hai seguito questa procedura dovrebbe essere opportunamente semplice adattarla per altre installazioni di pacchetti.

    Avvertimento: Calpestare leggermente ... tieni presente che l'uso scorretto del kit di modifica ti può lasciare con un router che ha bisogno di essere sbrecciato (come a sua volta un mattone inutile). Tuttavia, se sei un vero geek, probabilmente sottoscrivi l'ideologia che, colui che può distruggere una cosa, controlla una cosa, e solo i veri geek lo fanno

    Prerequisiti

    1. Utilizzando questa procedura possibile mattone il tuo router, come nel fare il tuo router inutilizzabile, non ci assumiamo alcuna responsabilità per eventuali danni che possono essere causati direttamente o in altro modo a causa dell'uso delle procedure di seguito.
    2. Questa procedura è stata eseguita su sistemi basati su Debian (Lenny, Squeeze e Mint) e le istruzioni seguenti presumono che ne stiate usando anche una.
    3. Questa procedura è consigliata solo a persone che hanno esperienza con il flashing del router con DD-WRT, con tutti i prerequisiti, avvertimenti e limitazioni applicabili per la configurazione dell'hardware. un buon punto di partenza sarebbe il nostro Turn Your Router Home in un router Super-Powered con guida DD-WRT.
    4. Il tuo router deve supportare almeno la versione "mini" di DD-WRT.
    5. Questa procedura è stata creata e testata sui router Linksys WRT54GS / L, se si utilizzano router di altri fornitori, il proprio chilometraggio potrebbe.

    Impostare

    Installazione dei pacchetti richiesti

    Il kit di modifica del firmware ha alcune dipendenze per la compilazione e il funzionamento. Per installarli / aggiornarli tutti in una volta emettere questo comando in un terminale:

    sudo aptitude installa gcc g ++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 subversion

    Scarica il mod-kit

    Crea una sottocartella e prendi il kit dall'SVN ufficiale:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-sola lettura
    cd firmware-mod-kit-sola lettura / trunk /

    Scarica un firmware su cui lavorare

    La prima cosa da considerare è la versione che si desidera utilizzare?
    Una regola generale è: in caso di dubbio utilizzare "mini". Questo perché finché il tuo router supporta almeno la versione "mini", usarlo ti dà tutte le funzionalità più comunemente utilizzate senza alcun bloatware. in tal modo, lasciando spazio per le procedure e persino uno spazio JFFS per altri usi nella maggior parte dei casi.

    Una volta che hai deciso una versione, si consiglia di utilizzare l'ultima versione del firmware disponibile, in quanto tendono ad avere un sacco di correzioni di bug rispetto alle loro controparti "stabili".
    Al momento della stesura di questo, l'ultima era "03-17-11-r16454" e questa revisione è usata nei comandi che seguono.

    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

    Per rendere più facile tenere traccia di quale versione stiamo usando, rinominare il file scaricato per rappresentarne il numero di versione:

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

    Questo è ovviamente facoltativo, ma i comandi seguenti presuppongono che tu abbia rinominato il file.

    Estrazione del firmware

    Per poter modificare i file all'interno del firmware, è necessario estrarne il contenuto in una directory temporanea.
    La sintassi di questo comando è:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    Nel nostro caso, ciò si tradurrebbe in:

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

    Nota: la prima volta che si esegue questo comando, vengono creati gli strumenti mod-kit sul proprio sistema. questo succede solo una volta e potrebbe richiedere un po 'di tempo ... quindi sii paziente ...

    Installazione dei pacchetti

    Ora che il firmware è estratto, possiamo installare i pacchetti su di esso.
    In generale, la procedura consiste nel scaricare il pacchetto e le sue dipendenze sotto forma di un file ipk dal repository openWRT. Una volta scaricati, installali nel firmware estratto usando lo script fornito.

    Il pacchetto knockd

    Le istruzioni dettagliate su come configurare e utilizzare Knockd saranno dettagliate in un prossimo articolo, quindi puoi decidere di saltare questo passaggio per ora o farlo in preparazione per il futuro, dato che Knockd non occupa molto spazio.

    Knockd è un demone che ascolta gli eventi di comunicazione sul livello di collegamento per le sequenze, quindi agisce su di essi.
    Ciò significa che puoi far sì che il dispositivo che esegue il daemon non "ascolti" nemmeno sulle porte (una scansione delle porte non le vedrà come aperte) e continui a farlo fare qualcosa di cui hai bisogno, da un singolo comando fino in fondo a una sceneggiatura completa. Usando questa tecnica puoi attivare il server per eseguire qualsiasi tipo di operazione di cui hai bisogno da remoto (attraverso Internet) senza esporre la tua rete domestica.

    Knockd ha solo una dipendenza elencata, quindi scarica il pacchetto e la sua dipendenza emettendo:

    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

    Installa il "knock demone" (knockd) ipk nel firmware:

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

    Installa l'IPK "packet capture" (libpcap) nel firmware:

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

    Poiché "knockd" può essere invocato con un file di configurazione alternativo (come verrà spiegato in un prossimo articolo), non è necessario eseguire altre operazioni e si può saltare alla sezione di costruzione del firmware, se è tutto ciò che si desidera installare.

    Il pacchetto SSMTP

    Il pacchetto SSMTP consente al router di inviare messaggi di posta elettronica proprio come mostrato nel nostro How To Setup Email Alerts su Linux utilizzando Gmail o SMTP per i server. A questo punto ti abbiamo promesso che mostreremo come configurarlo per DD-WRT e che ora forniremo.
    Questo è utile soprattutto se stai andando a creare script sul router che vorresti ricevere feedback sul loro funzionamento via email.

    L'installazione di questo pacchetto è un po 'più complessa di quella dei normali sistemi Linux a causa delle limitazioni imposte da un sistema embedded, quindi fai un respiro profondo ... pronto? .... Andiamo… :)

    Scarica il pacchetto:

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

    Installa l'ipk "ssmtp" nel firmware:

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

    Supporto TLS (facoltativo)
    SSMTP non elenca nessun altro pacchetto come dipendenza, tuttavia se si desidera poter utilizzare un gateway smtp che richiede l'autenticazione TLS (ad es.. Gmail), è necessario installare anche il pacchetto openSSL.
    Nota: C'è un ENORME inconveniente a fare questo in forma di spazio notevolmente ridotto sul router per JFFS in seguito. Cioè, il pacchetto openSS richiede circa 500K di spazio dal tuo totale di 4MB (per un normale router di supporto non "mega"), combinato con il sovraccarico del JFFS e scoprirai che la tua sinistra con, ma pochi preziosi, blocchi di spazio JFFS libero (circa 60 KB su WRT54GL).

    Poiché ci sono ancora non TLS che richiedono server smtp (di solito i tuoi ISP), ti suggerisco di dedicare un minuto a pensare se hai davvero bisogno di usare il TLS che richiede il gateway.

    Se hai deciso di abilitare il supporto TLS nonostante il suo svantaggio, scarica il pacchetto openSSL:

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

    Installa l'IPK "openSSL" (libopenssl) nel firmware:

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

    configurazioni
    Esiste una limitazione con il pacchetto SSMTP, che non è possibile richiamarlo con un file di configurazione alternativo.
    Poiché il firmware è di sola lettura quando è sul router, ciò significa che è possibile eseguire l'hardcode della configurazione solo nel firmware..
    Tuttavia, cosa succede se non vogliamo passare attraverso tutte le fasi di modifica del firmware, solo per modificare le impostazioni di posta elettronica? (ad esempio una modifica della password).

    A tal fine, sia Jeremy (il creatore del kit mod-firmware) sia io abbiamo raggiunto la conclusione (indipendentemente se posso aggiungere umilmente) che l'unico modo corretto per farlo sarebbe quello di:

    1. Rendere la posizione dei file di configurazione che il pacchetto ssmtp punta alla posizione di sola lettura sotto ecc, puntare alla directory tmp che è scrivibile a runtime.
    2. Creare uno script che generi dinamicamente le configurazioni basate sulle variabili NVRAM all'avvio.

    Per ottenere ciò, sono necessari alcuni passaggi aggiuntivi ...

    Symlink della directory di configurazione ssmtp
    Come spiegato sopra, dobbiamo fare il / Etc / ssmtp posizione sul router, puntare a / tmp directory come il solo posto scrivibile sul router in fase di esecuzione. Per fare ciò, eliminare la directory ssmtp creata dal programma di installazione di ipk:

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

    Creare un nuovo collegamento simbolico che punti / etc / ssmtp sul file system root del router, in modo che punti a / tmp / etc / ssmtp come percorso assoluto:

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

    Nota: Anche se questo sembra illogico in questo momento, perché stiamo indicando la directory di configurazione del pacchetto in una posizione al di fuori della directory di lavoro del kit di modifica del firmware, ti assicuro che questo aspetto è assolutamente soddisfacente dal punto di vista dei router in fase di esecuzione.

    Uno script di init
    Mentre è completamente possibile non iniettare questo script nel firmware ed eseguirlo in seguito come script di avvio, ritengo opportuno inserirlo qui, se non altro per un uso futuro.
    Inizialmente Jeremy ha creato il copione su misura per la richiesta di qualcuno, in seguito l'ho adattato e aumentato per renderlo più compatibile con DD-WRT e syslog.

    Crea il nuovo script di init (avvio):

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

    Nota: puoi usare un altro editor, io uso vi perché è coerente con ciò che è disponibile sul router ...
    Rendi questo il suo contenuto:

    #! / Bin / sh
    #
    # title: ssmtp_nvram.sh
    # autore: Jeremy Collake e Aviad Raviv
    # sito: http://www.bitsum.com, http://howtogeek.com
    #
    # script per creare il file di configurazione da nvram vars.
    # funzionerà per qualsiasi file di configurazione che usi
    # var = coppie di tipi di valore.
    #
    # usa prefissi per variabili nvram.
    #
    # i.
    # ssmtp_hostname = qualcosa
    # si traduce in ssmtp.conf
    # hostname = qualcosa
    #
    logger_func ()

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

    logger_func "########### Avviata la corsa di avvio SSMTP ###########"
    logger_func "Creazione della directory etc in / 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 "Generazione di $ CONFIG_FILE per il pacchetto $ PACKAGE_NAME"
    #echo $ 0: generazione di $ CONFIG_FILE per il pacchetto $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# generato automaticamente basato su nvram da $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    se [-z "'nvram mostra | grep ssmtp'"]
    poi
    logger_func "Sembra che tu non abbia impostato le variabili NVRAM necessarie per generare il file conf"
    logger_func "** Considera ** l'utilizzo di questi comandi nello script di avvio:"
    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 = username"
    logger_func "nvram set ssmtp_AuthPass = password"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "crea le variabili NVRAM ed esegui nuovamente lo script init o il riavvio affinché le impostazioni abbiano effetto".
    uscita 0
    fi

    ################################################## #########
    #
    # ciclo principale
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    per i in $ CONFIG_VARS; fare
    echo $ i >> $ CONFIG_FILE
    fatto

    ################################################## #########
    #
    # controllo sanitario
    #
    Se [ ! -f "$ CONFIG_FILE"]; poi
    # echo "$ 0: ERRORE - impossibile creare $ CONFIG_FILE. Forse non c'è nessun symink / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ERRORE - impossibile creare $ CONFIG_FILE. Forse non c'è nessun symink / etc / XXXX -> / tmp / etc / XXXX?"
    fi
    logger_func "########### Terminato il processo di avvio SSMTP ###########"

    Rendilo eseguibile:

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

    Prendi nota delle variabili in attesa della NVRAM nello script, è nostra responsabilità dare loro qualcosa su cui lavorare dopo aver installato il nostro firmware modificato sul router.

    Costruisci il firmware modificato

    Ora che tutto è a posto, è il momento di ricomprimere il firmware modificato in un file binario compresso che possiamo lampeggiare sul router.
    La sintassi dello script "build.sh" è:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Per fare ciò utilizziamo lo script fornito, quindi invia:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Una volta eseguita l'operazione di "build", ci saranno diverse immagini del firmware in attesa di essere utilizzate nella directory "output".

    Ora puoi lampeggiare il file "custom_image_00001-generic.bin" sul tuo router come faresti normalmente con un firmware DD-WRT.

    Nota: Non dimenticare di ripristinare le "impostazioni di fabbrica" ​​prima, durante e subito dopo il flash del firmware.

    Passi post flash

    Poiché abbiamo fatto in modo che il pacchetto SSMTP cercasse le variabili NVRAM per generare il file di configurazione ssmtp, ora dobbiamo fornirgli le informazioni mancanti.
    Lo faremo utilizzando la funzione GUI "Esegui comandi".

    Vai alla web-GUI -> "amministrazione" -> "comandi" -> incolla nella casella di testo quanto segue:

    nvram imposta [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com: 587
    nvram imposta [email protected]
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = tuo-gmail-nome utente (senza @ gmail.com)
    nvram set ssmtp_AuthPass = tu-gmail-password
    nvram set ssmtp_FromLineOverride = YES
    commit nvram

    Sostituisci il testo dopo il segno di uguale (=), con le tue informazioni reali, quindi premi "Esegui comandi".
    Nota: se si utilizza un server normale, non TLS utilizzando, smtp, la porta da utilizzare è 25 anziché 587.

    Ora che le informazioni SSMTP sono pronte per l'uso, è necessario richiamare lo script di init. Quindi puoi riavviare il router, oppure incollarlo nella casella di testo "comandi":

    /etc/init.d/S80ssmtp

    Quindi premi di nuovo "Esegui comandi".
    L'output di questo comando dovrebbe essere simile a:

    Prova che è possibile inviare e-mail
    Incollalo nuovamente nella casella di testo "Comandi" con il seguente comando con il tuo indirizzo email:

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

    Quindi premi di nuovo "Esegui comandi".
    Poiché abbiamo usato l'opzione -vvv per la verbosità aggiuntiva, l'output di questo comando dovrebbe essere simile a:

    Se tutto è andato bene, dovresti ricevere l'e-mail di prova in pochi secondi.

    Ci auguriamo che tu possa utilizzare queste informazioni per spingere i limiti del tuo router di casa ancora più a lungo di quanto tu credessi possibile e ora controlli veramente il router di casa e DD-WRT ...


    Linux estende la vita, Linux espande la coscienza ... Linux è vitale per i viaggi a pacchetto