Pagina principala » HOWTO » Dezlănțuiți chiar mai multă putere de la routerul dvs. de acasă cu modulul DD-WRT Mod-Kit

    Dezlănțuiți chiar mai multă putere de la routerul dvs. de acasă cu modulul DD-WRT Mod-Kit


    V-am arătat deja cum să vă modificați ruterul de acasă cu firmware-ul alternativ DD-WRT pentru o performanță mult îmbunătățită și astăzi vă vom arăta cum să o luați și mai mult cu kitul DD-WRT Mod-Kit.

    Dacă nu ați făcut-o deja, asigurați-vă și verificați cele două articole anterioare din seria:

    • Transformați Router-ul Acasă într-un Router Super-Powered cu DD-WRT
    • Cum să vă măriți semnalul rețelei Wi-Fi și să măriți raza de acțiune cu DD-WRT

    Presupunând că sunteți familiarizați cu aceste subiecte, continuați să citiți. Rețineți că acest ghid este puțin mai tehnic, iar începătorii ar trebui să fie atenți atunci când își modifică router-ul.

    Prezentare generală

    Acest ghid vă va oferi o trecere în revistă pas cu pas a modului în care puteți crea propriul firmware DD-WRT cu modificări și completări utilizând "kitul de modificări a firmware-ului".

    Kit-ul de modificare a firmware-ului permite modificarea firmware-ului fără al compila din sursă. Efectuarea de modificări în acest fel, cu ajutorul scripturilor furnizate, devine o chestiune simplă de descărcare, înlocuire și ștergere a unor fișiere.

    Motivul cel mai predominant de a utiliza această metodă se datorează faptului că, în ultima vreme, suportul DD-WRT pentru pachetele Openkrt IPKG sa mutat către routerele care au unități hard disk (prin USB), ceea ce face ca kit-ul mod numai să funcționeze cu succes în mod consecvent de instalare a pachetelor IPKG pentru cazurile în care un HD nu este disponibil. În plus, această metodă are avantajul suplimentar de a vă scuti de dependența JFFS pentru instalarea pachetelor, care pentru rutere cu doar 4MB de bliț este o problemă reală.

    Imagine de publicitate

    Obiective

    În timp ce instrucțiunile pentru această procedură sunt detaliate pe wiki-ul DD-WRT și pe site-ul dezvoltatorului, scopul nostru este de a face acest ghid o procedură de copiere și lipire utilizată de oricine pentru a atinge următoarele obiective:

    • Instalați pachetul knockd și dependențele acestuia.
    • Instalați pachetul ssmtp cu configurații generate pe baza NVRAM.
      • Opțional, cu suport pentru SMTP TLS (de asemenea, suport pentru Gmail).

    Odată ce ați urmat această procedură, ar trebui să fie în mod simplu simplu să o adaptați pentru alte instalații de pachete.

    Avertizare: Treceți ușor ... rețineți că utilizarea incorectă a setului de modificări vă poate lăsa cu un router care necesită dezbrăcarea (ca la rândul său, într-o caramică inutilă). Cu toate acestea, dacă sunteți un adevărat geek, probabil că vă abonați la ideologia că, cine poate distruge un lucru, controlează un lucru și numai geekii adevărați fac asta

    Cerințe preliminare

    1. Folosind această procedură se poate cărămidă router-ul, ca și în routerul dvs. inutilizabil, nu ne asumăm nicio responsabilitate pentru orice daune care pot fi cauzate direct sau de altă natură datorită utilizării procedurilor de mai jos.
    2. Această procedură a fost efectuată pe sistemele bazate pe Debian (Lenny, Squeeze și Mint), iar instrucțiunile de mai jos presupun că utilizați și una.
    3. Această procedură este recomandată numai persoanelor care au experiență cu flash-ul router-ului cu DD-WRT, cu toate condițiile prealabile, restricții și limitări care se aplică pentru configurarea hardware a acestora. un loc bun pentru a începe ar fi Turn-ul dvs. Router acasă într-un router Super-Powered cu ghidul DD-WRT.
    4. Router-ul trebuie să suporte cel puțin versiunea "mini" a DD-WRT.
    5. Această procedură a fost creată și testată pe routere Linksys WRT54GS / L, dacă utilizați routere de la alți furnizori, kilometrajul dvs. poate foarte.

    Înființat

    Instalarea pachetelor necesare

    Kitul de modificări a firmware-ului are câteva dependențe pentru compilarea și funcționarea acestuia. Pentru a le instala / actualiza simultan Emiteți această comandă într-un terminal:

    sudo aptitude instalare gcc g ++ binutils patch bzip2 flex bizon face get unzip zlib1g-dev libc6 subversion

    Descărcați kitul mod

    Creați un subdosar și obțineți kitul de la SVN oficial:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-numai pentru citire
    cd firmware-mod-kit-numai-citire / trunk /

    Descărcați un firmware pentru a lucra la

    Primul lucru de luat în considerare este ce versiune doriți să folosiți?
    O regulă de bază este: dacă aveți dubii, utilizați "mini". Acest lucru se datorează faptului că, atâta timp cât router-ul dvs. suportă cel puțin versiunea "mini", utilizarea acestuia vă oferă toate funcțiile cele mai frecvent utilizate fără nici un bloatware. lăsând atât spațiu pentru proceduri, cât și un spațiu JFFS pentru alte utilizări în majoritatea cazurilor.

    Odată ce ați decis o versiune, se recomandă să utilizați cea mai recentă revizuire a firmware-ului disponibil, deoarece acestea tind să aibă o mulțime de corecții de erori în comparație cu omologii lor "stabile".
    La momentul acestei scrieri cel mai recent a fost "03-17-11-r16454" și această revizuire este folosită în comenzile care urmează.

    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

    Pentru a face mai ușor să urmăriți ce versiune folosim, redenumiți fișierul descărcat pentru a reprezenta numărul versiunii acestuia:

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

    Aceasta este, desigur, opțională, dar comenzile de mai jos presupun că ați redenumit fișierul.

    Extragerea firmware-ului

    Pentru a putea schimba fișiere în cadrul firmware-ului, trebuie să extragem conținutul într-un director temporar.
    Sintaxa acestei comenzi este:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    În cazul nostru, acest lucru se va traduce la:

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

    Notă: Prima dată când executați această comandă, aceasta construiește uneltele mod-kit de pe sistemul dvs. acest lucru se întâmplă o singură dată și poate dura ceva timp ... deci fiți răbdători ...

    Instalarea pachetelor

    Acum, când firmware-ul este extras, putem instala pachetele în el.
    În general, procedura este de a descărca pachetul și dependențele acestuia sub forma unui fișier ipk din depozitul openWRT. După ce le-ați descărcat, le instalați în firmware-ul extras folosind scriptul furnizat.

    Pachetul knockd

    Instrucțiuni detaliate despre cum să configurați și să utilizați Knockd vor fi detaliate într-un articol viitor, astfel încât puteți opta să treceți peste acest pas pentru moment sau să îl pregătiți pentru viitor, deoarece Knockd nu are prea mult spațiu.

    Knockd este un daemon care ascultă evenimentele de comunicare de la stratul de legătură pentru secvențe, apoi acționează asupra lor.
    Ce inseamna acest lucru este ca poti sa ai dispozitivul care ruleaza daemonul, nici macar "ascultati" pe porturi (o scanare a portului nu le va vedea ca fiind deschisa) si inca o face sa faca ceva de care aveti nevoie, dintr-o singura comanda pana in sus la un script complet. Folosind această tehnică, puteți să declanșați serverul să efectueze orice fel de operațiune de care aveți nevoie de la distanță (prin internet) fără a vă expune rețeaua de domiciliu.

    Knockd are doar o dependență listată, deci descărcați pachetul și dependența acestuia prin emiterea:

    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

    Instalați ipk-ul "daemon knockd" în firmware:

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

    Instalați pachetul "capture de pachete" (libpcap) ipk în firmware:

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

    Deoarece "knockd" poate fi invocat cu un fișier de configurare alternativ (cum va fi explicat într-un articol viitor), nu este nevoie să efectuați nicio altă operație și puteți trece la secțiunea de firmware, dacă tot ce ați vrut să instalați.

    Pachetul SSMTP

    Pachetul SSMTP permite ruterului dvs. să trimită mesaje de e-mail la fel cum am arătat în Alertele noastre despre modul de instalare pe Linux Utilizând Gmail sau SMTP pentru servere. V-am promis atunci că vom arăta cum să configurați acest lucru pentru DD-WRT și acum vom livra.
    Acest lucru este util în special în cazul în care intenționați să creați scripturi pe router pe care doriți să primiți feedback despre funcționarea lor prin e-mail.

    Setarea acestui pachet este un pic mai complexă decât atunci când se află pe sistemele Linux normale din cauza limitării impuse de un sistem încorporat, deci respirați profund ... gata? .... sa mergem… :)

    Descărcați pachetul:

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

    Instalați "ssmtp" ipk în firmware:

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

    Suport TLS (opțional)
    SSMTP nu include alte pachete ca dependențe, totuși dacă doriți să puteți utiliza un gateway smtp care necesită autentificare TLS (adică. Gmail), trebuie să instalați și pachetul openSSL.
    Notă: Există un OIM dezavantaj pentru a face acest lucru sub forma unui spațiu considerabil redus pe router pentru JFFS mai târziu. Adică, pachetul openSSL are nevoie de aproximativ 500K de spațiu din totalul de 4MB (pentru un router normal care nu este "mega"), compus pe care se află JFFS deasupra capului și veți descoperi că stânga, cu câteva blocuri prețioase spațiu liber JFFS (aproximativ 60KB pe WRT54GL).

    Deoarece există încă servere non-TLS care necesită servere smtp acolo (de obicei ISP-urile dvs.), vă sugerăm să luați un minut pentru a vă gândi dacă într-adevăr trebuie să utilizați TLS care necesită gateway.

    Dacă ați decis să activați asistența TLS în ciuda dezavantajului său, descărcați pachetul openSSL:

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

    Instalați "openSSL" (libopenssl) ipk în firmware:

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

    Configurațiile
    Există o limitare cu pachetul SSMTP, că nu este posibilă invocarea acestuia cu un fișier de configurare alternativ.
    Deoarece firmware-ul este read-only atunci când este pe router, asta înseamnă că din cutie putem doar hardcode configurarea în firmware.
    Cu toate acestea, dacă nu vrem să trecem prin toate etapele de modificare a firmware-ului, doar pentru a schimba setările de e-mail? (de exemplu o schimbare de parolă).

    În acest scop, atât Jeremy (creatorul de mod-kit de firmware), cât și pe mine însuși am ajuns la concluzia (independent dacă aș adăuga cu umilință) că singura cale firească de a face acest lucru ar fi:

    1. Faceți locația fișierelor de configurare în care pachetul ssmtp indică locația "numai pentru citire" în secțiunea "etc", indicați directorul tmp care poate fi scris la executare.
    2. Creați un script care să genereze dinamic configurațiile bazate pe variabilele NVRAM la pornire.

    Pentru a realiza acest lucru sunt necesari câțiva pași suplimentari ...

    Symlink directorul de configurare ssmtp
    Așa cum am explicat mai sus, trebuie să facem / Etc / ssmtp localizare pe router, indicați spre / tmp director ca fiind singurul loc de scriere pe care îl avem pe router la momentul executării. Pentru a face acest lucru, ștergeți directorul ssmtp creat de instalatorul ipk:

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

    Creați un nou link simbolic care indică / etc / ssmtp pe sistemul de fișiere rădăcină al routerului, pentru a indica / tmp / etc / ssmtp ca o cale absolută:

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

    Notă: Chiar dacă acest lucru pare ilogic chiar acum, pentru că îndreptăm directorul de configurare a pachetului într-o locație din afara directorului de lucru al kitului de modificări a firmware-ului, vă asigur că acest lucru pare absolut minunat din punct de vedere al ruterelor la momentul executării.

    Un script init
    Deși este complet posibil să nu injectați acest script în firmware și să îl rulați mai târziu ca script de pornire, mă simt potrivit să îl pun aici doar ca un exemplu pentru utilizarea ulterioară.
    Inițial, Jeremy a creat scriptul adaptat cerințelor cuiva, mai târziu i-am ajustat și l-am extins pentru a fi mai compatibil cu rapoartele DD-WRT și syslog.

    Creați noul script init (pornire):

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

    Notă: Puteți utiliza un alt editor, folosesc vi pentru că este compatibil cu ceea ce este disponibil pe router ...
    Faceți acest conținut:

    #! / Bin / sh
    #
    # titlu: ssmtp_nvram.sh
    # autor: Jeremy Collake și Aviad Raviv
    # site: http://www.bitsum.com, http://howtogeek.com
    #
    # script pentru a construi fișierul de configurare de la nvram vars.
    # va funcționa pentru orice fișier de configurare care utilizează
    # var = perechi de tip de valoare.
    #
    # utilizează prefixe pentru variabilele nvram.
    #
    # adică.
    # ssmtp_hostname = ceva
    # se traduce la ssmtp.conf
    # hostname = ceva
    #
    logger_func ()

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

    logger_func "########### Început rularea init SSMTP ###########"
    logger_func "Crearea directorului etc în / 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 "Generarea $ CONFIG_FILE pentru pachetul $ PACKAGE_NAME"
    #echo $ 0: generarea $ CONFIG_FILE pentru pachetul $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# generate automat pe baza nvram de $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    dacă [-z "'nvram arată | grep ssmtp" "]
    atunci
    logger_func "Se pare că nu ați setat variabilele NVRAM necesare pentru a genera fișierul conf"
    logger_func "** Luați în considerare ** utilizarea acestor comenzi în scriptul de pornire:"
    logger_func "nvram set [email protected]"
    logger_func "setarea nvram ssmtp_mailhub = smtp.gmail.com: 587"
    logger_func "nvram set [email protected]"
    logger_func "setarea nvram ssmtp_UseSTARTTLS = YES"
    logger_func "nvram set ssmtp_AuthUser = nume de utilizator"
    logger_func "nvram set ssmtp_AuthPass = parola"
    logger_func "setarea nvram ssmtp_FromLineOverride = YES"
    logger_func "creați variabilele NVRAM și reluați scriptul inițial sau reporniți pentru ca setările să fie afectate."
    ieșire 0
    Fi

    ################################################## #########
    #
    # bucla principală
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram arată | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    pentru i în $ CONFIG_VARS; do
    echo $ i >> $ CONFIG_FILE
    Terminat

    ################################################## #########
    #
    # control mintal
    #
    dacă [ ! -f "$ CONFIG_FILE"]; atunci
    # echo "$ 0: ERROR - nu a putut crea $ CONFIG_FILE. Poate că nu există nici un sistem / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "EROARE - nu a putut fi creat $ CONFIG_FILE. Poate că nu există niciunul din simmink / etc / XXXX -> / tmp / etc / XXXX?"
    Fi
    logger_func "########### A terminat init Run SSMTP ###########"

    Faceți executabil:

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

    Luați notă de variabilele de așteptare NVRAM din script, este responsabilitatea noastră să le oferim ceva de lucru după ce am instalat firmware-ul nostru modificat pe router.

    Construiți Firmware-ul modificat

    Acum că totul este în vigoare, este timpul să reambalăm firmware-ul modificat într-un binar comprimat pe care îl putem bloca la router.
    Sintaxa scriptului "build.sh" este:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Pentru a face acest lucru folosim scriptul furnizat, deci problema:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Odată ce operația "construi" este realizată, vor exista mai multe imagini de firmware care așteaptă să fie utilizate în directorul "ieșire".

    Acum puteți bloca fișierul numit "custom_image_00001-generic.bin" pe router, așa cum ați proceda de obicei cu un firmware DD-WRT.

    Notă: Nu uitați să restabiliți la "setările implicite din fabrică" înainte, în timpul și imediat după blițul firmware-ului.

    Postați pașii flash

    Deoarece am făcut pachetul SSMTP să căutați variabilele NVRAM pentru a genera fișierul de configurare ssmtp, acum trebuie să-l furnizăm cu informațiile lipsă.
    Vom realiza acest lucru folosind funcția "Run commands" (Web-GUI).

    Mergeți la web-GUI -> "administrare" -> "comenzi" -> lipiți în caseta text următoarele:

    setați nvram [email protected]
    Setarea nvram ssmtp_mailhub = smtp.gmail.com: 587
    setați nvram [email protected]
    Setarea nvram ssmtp_UseSTARTTLS = YES
    setați nvram ssmtp_AuthUser = numele dvs. de utilizator gmail-user (fără @ gmail.com)
    setați nvram ssmtp_AuthPass = tu-gmail-parola
    setați nvram ssmtp_FromLineOverride = YES
    nvram comite

    Înlocuiți textul după semnul egal (=), cu informațiile dvs. actuale, apoi apăsați "Run commands".
    Notă: dacă utilizați un server TLS non-TLS obișnuit, serverul smtp pe care portul să îl utilizați este de 25 în loc de 587.

    Acum că informațiile SSMTP sunt gata de utilizare, va trebui să invocați scriptul de inițializare. Deci, puteți fie să reporniți routerul, fie să îl lipiți în caseta text "comenzi":

    /etc/init.d/S80ssmtp

    Apoi apăsați din nou "Comenzi de rulare".
    Ieșirea acestei comenzi ar trebui să arate ca:

    Testați că puteți trimite e-mail
    Din nou, inserați în caseta text "comenzi" următoarea comandă cu adresa dvs. de e-mail:

    echo "testarea cu creuzet de e-mail 123 qwe" | ssmtp -vvv [email protected]

    Apoi apăsați din nou "Comenzi de rulare".
    Pentru că am folosit opțiunea -vvv pentru mai multă verbozitate, rezultatul acestei comenzi ar trebui să arate ca:

    Dacă totul a mers bine, ar trebui să primiți e-mailul de testare în câteva secunde.

    Sperăm că puteți utiliza aceste informații pentru a împinge limitele routerului dvs. de domiciliu chiar mai departe, atunci ați crezut că este posibil și acum controlați cu adevărat routerul dvs. de acasă și DD-WRT ...


    Linux extinde viața, Linux extinde conștiința ... Linux este vital pentru călătoriile în pachete