Slip endnu mere strøm fra din hjemmerouter med DD-WRT Mod-Kit
Vi har allerede vist dig, hvordan du modificerer din hjemmerouter med den alternative firmware til DD-WRT til forbedret ydeevne, og i dag vil vi vise dig, hvordan du tager det endnu mere med DD-WRT Mod-Kit.
Hvis du ikke allerede har det, skal du sørge for at tjekke de to tidligere artikler i serien:
- Skift din Home Router til en Super-Powered Router med DD-WRT
- Sådan øger du dit Wi-Fi-netværkssignal og øger rækkevidden med DD-WRT
Forudsat at du er bekendt med disse emner, skal du fortsætte med at læse. Husk at denne vejledning er lidt mere teknisk, og begyndere skal være forsigtige, når de modder deres router.
Oversigt
Denne vejledning giver et trinvis skridt over, hvordan du opretter din egen firmware til DD-WRT med modifikationer og tilføjelser ved hjælp af "firmware modifikationssæt".
Med firmware modifikationssættet kan man foretage ændringer til firmwaren uden at kompilere den fra kilden. At foretage ændringer på denne måde ved hjælp af de leverede scripts bliver et simpelt spørgsmål om at downloade, erstatte og slette nogle filer.
Den mest overvejende grund til at bruge denne metode er, fordi DD-WRTs støtte til Openwrt IPKG-pakkerne er flyttet til routere, der har harddiske (via USB), hvilket gør mod-kit den eneste konsekvent fungerende måde at installere IPKG-pakkerne med succes på. for tilfælde hvor en HD er utilgængelig. Derudover har denne metode den ekstra fordel at lindre dig fra JFFS afhængigheden af installation af pakker, som for routere med kun 4MB flash er et reelt problem.
Billede af publicenergy
Mål
Mens vejledningen til denne procedure er beskrevet på DD-WRTs wiki og på udviklerens websted, sigter vi på at gøre denne vejledning en kopi og indsæt procedure, som alle kan bruge til at nå de følgende mål:
- Installer knockd pakken og dens afhængigheder.
- Installer ssmtp-pakken med NVRAM-baserede genererede konfigurationer.
- Valgfrit med understøttelse af TLS smtp (f.eks. Gmail-support).
Når du har fulgt denne procedure, bør det være relevant at tilpasse det til andre pakkeinstallationer.
Advarsel: Løb let ... husk på, at forkert brug af modifikationssættet, kan efterlade dig en router, der har brug for afbrud (som det igen er en ubrugelig mursten). Men hvis du er en sand geek, abonnerer du sandsynligvis på ideologien, at den, der kan ødelægge noget, kontrollerer en ting, og kun sande geeks gør det
Forudsætninger
- Brug af denne procedure kan mursten din router, som i gør din router ubrugelig, Vi påtager os intet ansvar for eventuelle skader, der måtte være forårsaget direkte eller andet på grund af brugen af nedenstående procedurer.
- Denne procedure blev udført på Debian-baserede systemer (Lenny, Squeeze and Mint), og instruktionerne nedenfor antager, at du bruger en også.
- Denne procedure anbefales kun til personer, der har erfaring med at blinke deres router med DD-WRT, med alle de forudsætninger, forbehold og begrænsninger, der gælder for deres hardwareopsætning. Et godt sted at starte, ville være vores Skift din hjemmerouter i en superdrevet router med DD-WRT guide.
- Din router skal understøtte mindst "mini" versionen af DD-WRT.
- Denne procedure blev oprettet og testet på Linksys WRT54GS / L-routere, hvis du bruger routere fra andre leverandører, kan din kilometertal meget.
Opsætning
Installation af nødvendige pakker
Firmware-modifikationssætet har nogle afhængigheder, der kan kompilere og arbejde. For at installere / opdatere dem alle på én gang Udgiv denne kommando i en terminal:
sudo aptitude installer gcc g ++ binutils patch bzip2 flex bison gøre gettext unzip zlib1g-dev libc6 subversion
Download mod-kit
Opret en undermappe, og hent sættet fra den officielle SVN:
mkdir firmware_mod_kit
cd firmware_mod_kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-skrivebeskyttet
cd-firmware-mod-kit-skrivebeskyttet / trunk /
Download en firmware til arbejde på
Den første ting at overveje, er hvilken version du vil bruge?
En tommelfingerregel er: Når du er i tvivl, brug "mini". Dette skyldes, at så længe din router understøtter i det mindste "mini" -versionen, ved at bruge den, får du alle de mest almindeligt anvendte funktioner uden nogen bloatware. således at begge rum for procedurerne og endda nogle JFFS plads til andre anvendelser i de fleste tilfælde.
Når du har besluttet dig for en version, anbefales det at bruge den nyeste revision af den tilgængelige firmware, da de har en tendens til at have mange fejlrettelser i forhold til deres "stabile" kolleger.
På tidspunktet for denne skrivning var det seneste "03-17-11-r16454", og denne revision bruges i de kommandoer, der følger.
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
For at gøre det nemmere at holde øje med, hvilken version vi bruger, omdøber du den downloadede fil for at repræsentere dens versionsnummer:
mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin
Dette er selvfølgelig valgfrit, men kommandoer nedenfor antager, at du har omdøbt filen.
Uddragning af firmwaren
For at kunne ændre filer inden for firmwaren skal vi udtrække indholdet i en midlertidig mappe.
Syntaxen for denne kommando er:
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
I vores tilfælde ville dette oversætte til:
./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1
Bemærk: Første gang du kører denne kommando, bygger den mod-kit-værktøjerne på dit system. dette sker kun en gang og kan tage lidt tid ... så vær tålmodig ...
Installation af pakker
Nu hvor firmwaren er udpakket, kan vi installere pakkerne til den.
Generelt er proceduren at downloade pakken og dens afhængigheder i form af en ipk-fil fra openWRT-depotet. Når du har downloadet dem, skal du installere dem i den ekstraherede firmware ved hjælp af det angivne script.
Knock-pakken
Detaljerede instruktioner om, hvordan du konfigurerer og bruger Knockd, vil blive beskrevet detaljeret i en fremtidig artikel, så du kan vælge at springe over dette trin for nu eller gøre det som forberedelse til fremtiden, da Knockd ikke tager meget plads på en eller anden måde.
Knockd er en dæmon, der lytter til kommunikationsbegivenheder på linklaget for sekvenser, så de virker på dem.
Hvad det betyder er at du kan få enheden til at køre daemonen ikke engang "lytte" på portene (en portscanning kan ikke se dem som åbne) og stadig gøre det til at gøre noget, du har brug for, fra en enkelt kommando hele vejen op til et komplet script. Ved hjælp af denne teknik kan du udløse serveren til at udføre enhver form for operation, du har brug for på fjernbetjening (på tværs af internettet) uden at udsætte dit hjemmenetværk.
Knockd har kun en listet afhængighed, så download pakken og dens afhængighed ved at udstede:
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
Installer "knock daemon" (knockd) ipk i firmwaren:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Installer "pakkefangst" (libpcap) ipk i firmwaren:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Som "knockd" kan påberåbes med en alternativ konfigurationsfil (hvordan det forklares i en fremtidig artikel), er der ikke behov for at udføre en anden operation, og du kan springe over til firmware-bygningen, hvis det hele du ville installere.
SSMTP-pakken
SSMTP-pakken gør det muligt for din router at sende e-mail-meddelelser, ligesom vi viste i vores How To Setup Email Alerts på Linux ved hjælp af Gmail eller SMTP for servere. Vi lovede dig igen da vi viser, hvordan du konfigurerer dette til DD-WRT, og vi leverer nu.
Dette er især nyttigt, hvis du vil oprette scripts på routeren, som du gerne vil modtage feedback om deres drift via e-mail.
Denne pakke opsætning er lidt mere kompleks, da den er på normale Linux-systemer på grund af den begrænsning, der pålægges af et indlejret system, så tag en dyb indånding ... klar? Lad os gå… :)
Download pakken:
wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk
Installer "ssmtp" ipk i firmwaren:
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
TLS-support (valgfri)
SSMTP indeholder ingen andre pakker som afhængigheder, men hvis du vil kunne bruge en smtp-gateway, der kræver TLS-godkendelse (dvs.. Gmail), skal du også installere openSSL pakagen.
Bemærk: Der er en stor ulempe at gøre dette i form af betydeligt reduceret plads på routeren til JFFS senere. Det vil sige, at openSSL-pakken tager omkring 500K plads fra din samlede 4MB (til en normal ikke-mega-understøttende router), der er forbundet med JFFS-overhead, og du vil opdage, at du er tilbage med, men et værdifuldt par blokke af fri JFFS plads (ca. 60KB på WRT54GL).
Da der stadig er ikke TLS, der kræver smtp-servere derude (normalt din internetudbyder), foreslår jeg at tage et øjeblik at tænke, om du virkelig skal bruge den TLS, der kræver gateway.
Hvis du har besluttet at aktivere TLS-support til trods for ulempen, skal du downloade openSSL-pakken:
wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk
Installer "openSSL" (libopenssl) ipk i firmwaren:
./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/
Konfigurationer
Der er en begrænsning med SSMTP-pakken, at det ikke er muligt at påkalde det med en alternativ konfigurationsfil.
Fordi firmwaren er skrivebeskyttet, når den er på routeren, betyder det, at vi kun kan hardkodes konfigurationen i firmwaren ud af boksen..
Hvad hvis vi ikke vil gennemgå alle firmware-modifikationsstrinene, bare for at ændre e-mail-indstillingerne? (for eksempel en adgangskodeændring).
Til dette formål nåede både Jeremy (firmware mod-kit-skaberen) og mig selv konklusionen (uafhængigt, hvis jeg ydmygt kunne tilføje) at den eneste sane måde at gøre dette på ville være at:
- Lav konfigurationsfilens placering, som ssmtp-pakken peger på den skrivebeskyttede placering under osv., Peg på tmp-biblioteket, der kan skrives til ved kørselstidspunktet.
- Opret et script, der dynamisk genererer konfigurationer baseret på NVRAM-variabler ved opstart.
For at opnå det kræves der nogle yderligere trin ...
Symlink ssmtp konfigurationsmappen
Som forklaret ovenfor skal vi lave / Etc / ssmtp Placering på routeren, pege på / tmp mappe som det eneste skrivbare sted, vi har på routeren på kørselstidspunktet. For at gøre dette skal du slette ssmtp-biblioteket, der blev oprettet af ipk-installationsprogrammet:
rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/
Opret et nyt symbolsk link, der peger på / etc / ssmtp på routers rodfilesystem, for at pege på / tmp / etc / ssmtp som en absolut sti:
ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp
Bemærk: Selvom det ser ud som det er ulogisk lige nu, fordi vi peger pakkens konfigurationsmappe til et sted uden for firmware modifikationssættets arbejdskatalog, forsikrer jeg dig om, at dette ser helt fint ud fra ruters synspunkt ved kørselstidspunktet.
Et init script
Selvom det er helt muligt ikke at injicere dette script i firmwaren og køre det som et opstartsskript senere, føler jeg mig passende at sætte det her, hvis det kun er et eksempel til fremtidig brug.
Oprindeligt skabte Jeremy scriptet skræddersyet til en persons anmodning, senere justerede jeg og forstærkede det for at være mere kompatibelt med DD-WRT og syslog rapportering.
Opret det nye init (opstart) script:
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Bemærk: Du kan bruge en anden editor, jeg bruger vi, fordi den er i overensstemmelse med hvad der er tilgængelig på routeren ...
Gør dette til dets indhold:
#! / Bin / sh
#
# title: ssmtp_nvram.sh
# Forfatter: Jeremy Collake og Aviad Raviv
# site: http://www.bitsum.com, http://howtogeek.com
#
# script til at opbygge config-fil fra nvram vars.
# vil fungere for enhver konfigurationsfil, der bruger
# var = værdi type par.
#
# bruger præfikser til nvram-variabler.
#
# dvs..
# ssmtp_hostname = noget
# oversætter til ssmtp.conf
# værtnavn = noget
#
logger_func ()
logger -s -p local0.notice -t SSMTP_init $ 1
logger_func "####### Startet SSMTP init run #######################################################
logger_func "Oprettelse af mappen mappe i / tmp"
[! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
CONFIG_FILE = / etc / ssmtp / ssmtp.conf
NVRAM_PREFIX = ssmtp_
PACKAGE_NAME = "ekko $ NVRAM_PREFIX | sed" s / _ / / "
logger_func "Genererer $ CONFIG_FILE for pakke $ PACKAGE_NAME"
#echo $ 0: genererer $ CONFIG_FILE for pakke $ PACKAGE_NAME
ekko "#! / bin / sh"> $ CONFIG_FILE
ekko "#" >> $ CONFIG_FILE
ekko "# auto genereret baseret på nvram med $ 0" >> $ CONFIG_FILE
ekko "#" >> $ CONFIG_FILE
hvis [-z "'nvram show | grep ssmtp'"]
derefter
logger_func "Det ser ud til at du ikke har indstillet NVRAM-variablerne, der kræves for at generere conf-filen"
logger_func "** Overvej ** ved hjælp af disse kommandoer i dit opstarts script:"
logger_func "nvram sat [email protected]"
logger_func "nvram sæt ssmtp_mailhub = smtp.gmail.com: 587"
logger_func "nvram sæt [email protected]"
logger_func "nvram sæt ssmtp_UseSTARTTLS = JA"
logger_func "nvram sæt ssmtp_AuthUser = brugernavn"
logger_func "nvram sæt ssmtp_AuthPass = adgangskode"
logger_func "nvram sæt ssmtp_FromLineOverride = JA"
logger_func "opretter NVRAM-variablerne og genkør init script eller genstart for de indstillinger, der skal påvirke."
Afslut 0
fi
################################################## #########
#
# main loop
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
for jeg i $ CONFIG_VARS; gøre
ekko $ i >> $ CONFIG_FILE
Færdig
################################################## #########
#
# Sanity check
#
hvis [! -f "$ CONFIG_FILE"]; derefter
# echo "$ 0: ERROR - kunne ikke oprette $ CONFIG_FILE. Måske er der ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "FEJL - kunne ikke oprette $ CONFIG_FILE. Måske er der ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
fi
logger_func "####### Færdiggjort SSMTP init run ######################################################
Gør det eksekverbart:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Vær opmærksom på NVRAMs ventende variabler i scriptet, det er vores ansvar at give dem noget at arbejde med, efter at vi har installeret vores modificerede firmware på routeren.
Byg den ændrede firmware
Nu, hvor alt er på plads, er det tid til at pakke om den ændrede firmware til et komprimeret binært, som vi kan blinke til routeren.
Syntaksen "build.sh" er:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
For at gøre dette bruger vi det medfølgende script, så problemet:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Når "build" -operationen er færdig, vil der være flere firmwarebilleder, der venter på at blive brugt i "output" -mappen.
Du kan nu blinke filen "custom_image_00001-generic.bin" til din router som du normalt ville have en DD-WRT firmware.
Bemærk: Glem ikke at gendanne til "fabriksindstillinger" før, under og lige efter firmware-flashen.
Post flash trin
Fordi vi lavede SSMTP-pakken efter NVRAM-variabler for at generere ssmtp-konfigurationsfilen, skal vi nu levere den med de manglende oplysninger.
Vi opnår dette ved at bruge web-GUI "Run commandands" funktionen.
Gå til web-GUI -> "administration" -> "kommandoer" -> indsæt i tekstboksen følgende:
nvram sat [email protected]
nvram sat ssmtp_mailhub = smtp.gmail.com: 587
nvram sat [email protected]
nvram sæt ssmtp_UseSTARTTLS = JA
nvram sæt ssmtp_AuthUser = dit-gmail-brugernavn (uden @ gmail.com)
nvram sæt ssmtp_AuthPass = du-gmail-adgangskode
nvram sæt ssmtp_FromLineOverride = JA
nvram commit
Udskift teksten efter det samme (=) tegn med dine faktiske oplysninger. Og tryk derefter på "Kør kommandoer".
Bemærk: Hvis du bruger en almindelig, ikke-TLS-bruger, smtp-server, er den port, der skal bruges, 25 i stedet for 587.
Nu, hvor SSMTP-oplysningerne er klar til brug, skal du bruge init-scriptet. Så du kan enten genstarte routeren, eller indsætte dette i tekstboksen "kommandoer":
/etc/init.d/S80ssmtp
Tryk derefter på "Kør kommandoer" igen.
Udgangen af denne kommando skal se ud:
Test, at du kan sende e-mail
Indsæt det igen i kommandoen "tekstboks" følgende kommando med din e-mail-adresse:
ekko "testdælk emailing 123 qwe" | ssmtp -vvv [email protected]
Tryk derefter på "Kør kommandoer" igen.
Fordi vi brugte funktionen -vvv til ekstra verbositet, skal udgangen af denne kommando se ud:
Hvis alt gik godt, skal du få test emailen inden for få sekunder.
Vi håber, at du kan bruge disse oplysninger til at skubbe din hjemme router grænser endnu længere, end du troede var muligt, og du styrer nu din hjemmerouter og DD-WRT ...
Linux udvider livet, Linux udvider bevidstheden ... Linux er afgørende for pakkerejser