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 serie:
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 și începătorii ar trebui să fie atenți atunci când își modifică ruterul.
Acest ghid vă va oferi o descriere pas cu pas a modului de a crea propriul firmware DD-WRT cu modificări și completări folosind "kitul de modificări a firmware-ului".
Kitul de modificare a firmware-ului permite modificarea firmware-ului fără a fi compilat de la 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 Openwrt IPKG sa mutat către routerele care au unități hard disk (prin USB), ceea ce face ca mod-kitul să fie singurul mod de lucru î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, ceea ce pentru rutere cu doar 4MB de bliț este o problemă reală.
Imagine de publicitate
Î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:
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 cărămidă 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
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 sau a le actualiza simultan Eliberați această comandă într-un terminal:
sudo aptitude instalare gcc g ++ binutils patch bzip2 flex bizon face gettext unzip zlib1g-dev libc6 subversiune
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-read-only / trunk /
Descărcați un firmware pentru a lucra la
Primul lucru pe care trebuie să îl luați în considerare este versiunea pe care doriți să o utilizaț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, cea 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
Acesta 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 rulați această comandă, aceasta construiește uneltele mod-kit de pe sistemul dvs. acest lucru se întâmplă o singură dată și poate dura puțin ... deci fiți răbdători ...
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 utilizând scriptul furnizat.
Instrucțiuni detaliate despre cum să configurați și să utilizați Knockd vor fi detaliate într-un articol viitor, astfel încât să vă puteți opri să treceți peste acest pas pentru moment sau să îl pregătiți pentru viitor, deoarece Knockd nu are nevoie de 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.
Ceea ce inseamna asta 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 scenariu complet. Folosind această tehnică, puteți declanșa 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 dump-ul "knockd" ipk î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 să treceți la secțiunea firmware-ului, dacă tot ce doriți să instalați.
Pachetul SSMTP permite routerului să trimită mesaje de e-mail la fel cum am arătat în Alertele noastre despre cum să instalezi e-mail pe Linux Folosind 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 dacă intenționați să creați scripturi pe router pe care doriți să primiți feedback despre funcționarea acestora 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 (de ex. Gmail), trebuie să instalați și pachetul openSSL.
Notă: Există un mare dezavantaj pentru a face acest lucru sub forma unui spațiu considerabil redus pe router pentru JFFS mai târziu. Adică, pachetul openSSL necesită 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 dvs., cu doar 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ă sugerez să faceț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 suportul 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 citit numai atunci când este pe router, asta înseamnă că din cutie nu putem decât să codificăm hardcore configurația în firmware.
Cu toate acestea, dacă nu vrem să trecem prin toate etapele de modificare a firmware-ului, doar pentru a modifica 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 am ajuns la concluzia (independent dacă aș adăuga cu umilință) că singura modalitate de a face acest lucru ar fi:
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 locație pe router, indicați spre / tmp director ca fiind singurul loc scris 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 o nouă legătură 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 extrem de bine din punctul de vedere al routerelor la momentul executării.
Un script init
În timp ce este complet posibil să nu injectați acest script în firmware și să îl rulați mai târziu ca script de pornire, consider că este adecvat să îl puneți aici doar ca un exemplu pentru utilizarea ulterioară.
Inițial, Jeremy a creat scriptul adaptat cerințelor cuiva, mai târziu, l-am ajustat și l-am mărit 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ă prefixele pentru variabilele nvram.
#
# adică
# ssmtp_hostname = ceva
# se traduce în 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: EROARE - nu a putut fi creat $ CONFIG_FILE. Poate că nu există niciun sistem simmin / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "EROARE - nu a reușit să creeze $ CONFIG_FILE. Poate că nu există niciun sistem simmin / etc / XXXX -> / tmp / etc / XXXX?"
Fi
logger_func "########### S-a terminat rularea init 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.
Acum că totul este în vigoare, este timpul să reambalăm firmware-ul modificat într-un binar comprimat pe care îl putem bloca pe router.
Sintaxa scriptului "build.sh" este:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
Pentru aceasta, folosim scriptul furnizat, deci eliberați:
./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ă reveniț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ă caute 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" (Interfață web).
Mergeți la web-GUI -> "administrare" -> "comenzi" -> inserați în caseta text următoarele:
nvram setați [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 "Comenzi rulate".
Notă: dacă utilizați un server TLS care nu utilizează regulat serverul smtp, portul utilizat 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".
Rezultatul acestei comenzi ar trebui să arate astfel:
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 email prin 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, ieșirea 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