Vi har allerede vist dig, hvordan du modificerer din hjemmerouter med DD-WRT-alternativ firmware for stærkt forbedret ydeevne, og i dag vil vi vise dig, hvordan du kan tage det endnu længere med DD-WRT Mod-Kit.
Hvis du ikke allerede har gjort det, skal du sørge for at tjekke de to tidligere artikler i serien:
- Gør din hjemmereuter til en superdrevet router med DD-WRT
- Sådan øges 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 guide er lidt mere teknisk, og begyndere skal være forsigtige, når de modderer deres router.
Oversigt
Denne vejledning giver en trinvis gennemgang af, hvordan du opretter din egen DD-WRT-firmware med ændringer og tilføjelser ved hjælp af " firmware-modifikationssæt “.
Firmware-modifikationssættet gør det muligt at foretage ændringer af firmwaren uden at kompilere den fra kilden. At foretage ændringer på denne måde ved hjælp af de medfølgende scripts bliver et simpelt spørgsmål om at downloade, erstatte og slette nogle filer.
Den mest fremherskende grund til at bruge denne metode er, fordi DD-WRTs support til Openwrt IPKG-pakker er skiftet mod routere, der har harddiske (via USB), hvilket gør mod-kit til den eneste konsekvent fungerende måde at installere IPKG-pakkerne med succes i tilfælde, hvor en HD ikke er tilgængelig. Derudover har denne metode den ekstra fordel, at den fritager dig fra JFFS-afhængigheden af pakken installation, hvilket for routere med kun 4 MB flash er et reelt problem.
Mål
Mens instruktioner til denne procedure er detaljeret om DD-WRT wiki og på udviklerens websted , vi sigter mod at gøre denne guide til en kopi & indsæt-procedure, som alle kan bruge til at nå følgende mål:
- Installer knockd-pakken og dens afhængigheder.
-
Installer ssmtp-pakken med NVRAM-baserede genererede konfigurationer.
- Valgfrit med support til TLS smtp (aka Gmail support).
Når du har fulgt denne procedure, skal det være relevant enkelt at tilpasse den til andre pakkerinstallationer.
Advarsel
:
Træd let ... husk, at forkert brug af modifikationssættet kan efterlade dig med en router, der har brug for
afmuring
(som igen det til en
ubrugelig mursten
). Men hvis du er en ægte nørd, abonnerer du sandsynligvis på ideologien om, at
den, der kan ødelægge en ting, styrer en ting
, og kun sande nørder gør det
Forudsætninger
- Brug af denne procedure kan mursten din router, som i gør din router ubrugelig, vi tager intet ansvar for skader, der kan være forårsaget direkte eller på anden måde på grund af brugen af nedenstående procedurer.
- Denne procedure blev udført på Debian-baserede systemer (Lenny, Squeeze og Mint), og instruktionerne nedenfor antager, at du også bruger et.
- Denne procedure anbefales kun til folk, der har erfaring med at blinke deres router med DD-WRT, med alle forudsætninger, forbehold og begrænsninger, der gælder for deres hardwareopsætning. et godt sted at starte ville være vores Gør din hjemmereuter til 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ættet har nogle afhængigheder for at kompilere og arbejde. For at installere / opdatere dem alle på én gang Udsted denne kommando i en terminal:
sudo aptitude installer gcc g ++ binutils patch bzip2 flex bison gør gettext unzip zlib1g-dev libc6 subversion
Download the mod-kit
Opret en undermappe, og få 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-read-only
cd firmware-mod-kit-read-only / trunk /
Download en firmware til at arbejde på
Den første ting at overveje er, hvilken version du vil bruge?
En tommelfingerregel er: I tvivlstilfælde skal du bruge “mini”. Dette skyldes, at så længe din router understøtter i det mindste "mini" -versionen, giver den dig alle de mest anvendte funktioner uden nogen bloatware ved at bruge den. hvilket giver både plads til procedurerne og endda noget JFFS-plads til
andre anvendelser
i de fleste tilfælde.
Når du har valgt en version, anbefales det at bruge den seneste version af den tilgængelige firmware, da de har tendens til at have mange fejlrettelser i forhold til deres "stabile" kolleger.
På dette tidspunkt var den seneste ”03-17-11-r16454”, og denne revision bruges i de følgende kommandoer.
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 lettere at holde styr på, hvilken version vi bruger, skal du omdøbe 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 naturligvis valgfrit, men nedenstående kommandoer antager, at du har omdøbt filen.
Udpakning af firmwaren
For at være i stand til at ændre filer i firmwaren er vi nødt til at udtrække dens indhold i en midlertidig mappe.
Syntaksen for denne kommando er:
./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
I vores tilfælde vil 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 et stykke 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-lager
. Når de er downloadet, skal du installere dem i den udpakkede firmware ved hjælp af det medfølgende script.
Den knockd-pakke
Detaljerede instruktioner om, hvordan du konfigurerer og bruger Knockd, vil blive beskrevet i en fremtidig artikel, så du kan vælge at springe dette trin over nu eller gøre det som forberedelse til fremtiden, da Knockd alligevel ikke tager meget plads.
Knockd er en dæmon, der lytter til kommunikationshændelser ved linklaget for sekvenser, der derefter virker på dem.
Hvad dette betyder, er at du kan have enheden, der kører dæmonen, ikke engang "lytte" på portene (en havnescanning kan ikke se dem som åbne) og stadig få den til at gøre noget, du har brug for, fra en enkelt kommando, alle
op
til et komplet script.
Brug af denne teknik
du kan udløse serveren til at udføre enhver form for operation, du har brug for den, eksternt (over internettet) uden at udsætte dit hjemmenetværk.
Knockd har kun en anført 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 "pakkeoptagelse" (libpcap) ipk i firmwaren:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Da “knockd” kan påberåbes med en alternativ konfigurationsfil (hvordan vil blive forklaret i en fremtidig artikel), er der ingen grund til at udføre nogen anden handling, og du kan springe til firmwarebygningsafsnittet, hvis det er alt, hvad du ville installere.
SSMTP-pakken
SSMTP-pakken gør det muligt for din router at sende e-mail-meddelelser ligesom vi viste i vores
Sådan konfigureres e-mail-alarmer på Linux ved hjælp af Gmail eller SMTP
til servere. Vi lovede dig dengang, at vi vil vise, hvordan du konfigurerer dette til DD-WRT, og vi leverer nu.
Dette er hovedsageligt nyttigt, hvis du vil oprette scripts på routeren, som du gerne vil modtage feedback om deres drift via e-mail.
Opsætningen af denne pakke er lidt mere kompleks, end den er på normale Linux-systemer på grund af begrænsningen pålagt af et integreret 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 viser ikke andre pakker som dets afhængigheder, men hvis du vil være i stand til at bruge en smtp-gateway, der kræver TLS-godkendelse (dvs.
Gmail
), skal du også installere openSSL-pakken.
Bemærk
: Der er ENORM
ulempe
at gøre dette i form af betydeligt reduceret plads på routeren til JFFS senere. Det vil sige, at openSSL-pakken tager cirka 500K plads fra din samlede 4MB (for en normal ikke "mega" understøttende router), sammensat til at JFFS overhead, og du vil opdage, at din venstre med, men et dyrebart par, blokke af ledig JFFS-plads (ca. 60 KB på WRT54GL).
Da der stadig ikke er TLS, der kræver smtp-servere derude (normalt din internetudbyder), foreslår jeg at tage et øjeblik til at tænke, om du virkelig har brug for den TLS, der kræver gateway.
Hvis du har besluttet at aktivere TLS-support på trods af dens ulempe, 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åberåbe den med en alternativ konfigurationsfil.
Fordi firmwaren er skrivebeskyttet, når den er på routeren, betyder det, at vi ud af kassen kun kan hardcode konfigurationen i firmwaren.
Men hvad hvis vi ikke ønsker at gennemgå alle trin til ændring af firmware, bare for at ændre e-mail-indstillingerne? (for eksempel en ændring af adgangskode).
Til dette formål nåede både Jeremy (firmware mod-kit skaberen) og jeg selv den konklusion (uafhængigt hvis jeg ydmygt kan tilføje), at den eneste sunde måde at gøre dette på var at:
- Lav konfigurationsfilernes placering, som ssmtp-pakken peger på den skrivebeskyttede placering under osv., Peg på tmp-biblioteket, som kan skrives til ved kørsel.
- Opret et script, der dynamisk genererer konfigurationer baseret på NVRAM-variabler ved opstart.
For at opnå dette kræves nogle yderligere trin ...
Symlink til ssmtp-konfigurationsmappen
Som forklaret ovenfor er vi nødt til at lave
/ etc / ssmtp
placere på routeren, peg på
/ tmp
bibliotek som det eneste skrivbare sted, vi har på routeren på kørselstid. For at gøre dette skal du slette den ssmtp-mappe, 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å routerens rodfilsystem, 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 dette ser ulogisk ud lige nu, fordi vi peger på pakkens konfigurationsmappe til et sted uden for firmware-modifikationssættets arbejdskatalog, kan jeg forsikre dig om, at dette ser helt fint ud fra routers synspunkt på kørselstidspunktet.
Et init-script
Selvom det er fuldstændigt muligt ikke at indsprøjte dette script i firmwaren og køre det som et start-script senere, føler jeg det er passende at sætte det her, hvis det kun er et eksempel til fremtidig brug.
Oprindeligt oprettede Jeremy scriptet, der var skræddersyet til en persons anmodning, senere justerede jeg og udvidede det til at være mere kompatibelt med DD-WRT- og syslog-rapportering.
Opret det nye init (start) script:
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Bemærk: Du kan bruge en anden editor, jeg bruger vi, fordi det er i overensstemmelse med det, der er tilgængeligt på routeren ...
Gør dette til dets indhold:
#! / bin / sh
#
# titel: ssmtp_nvram.sh
# forfatter: Jeremy Collake og Aviad Raviv
# websted: http://www.bitsum.com, http://howtogeek.com
#
# script til at oprette konfigurationsfil fra nvram vars.
# fungerer for enhver konfigurationsfil, der bruger
# var=value type pairs.
#
# bruger præfikser til nvram-variabler.
#
# dvs.
# ssmtp hostname = noget
# oversættes til ssmtp.conf
# værtsnavn = noget
#
logger_func()
{
logger -s -p local0.notice -t SSMTP_init $ 1
}
logger_func "############# Startede SSMTP init-kørslen ############"
logger_func "Oprettelse af etc-biblioteket i / tmp"
[ ! -d /etc/ssmtp/ ] && mkdir -p / tmp / etc / ssmtp /
CONFIG_FILE = / etc / ssmtp / ssmtp.conf
NVRAM_PREFIX = ssmtp_
PACKAGE_NAME = 'valg $ NVRAM_PREFIX | sed 's / _ / /' '
logger_func "Genererer $ CONFIG_FILE for pakke $ PACKAGE_NAME"
#echo $ 0: genererer $ CONFIG_FILE til pakken $ PACKAGE_NAME
ekko "#! / bin / sh"> $ CONFIG_FILE
ekko "#" >> $ CONFIG_FILE
ekko "# automatisk genereret baseret på nvram af $ 0" >> $ CONFIG_FILE
ekko "#" >> $ CONFIG_FILE
hvis [ -z "`nvram show | grep ssmtp`" ]
derefter
logger_func "Det ser ud til, at du ikke har indstillet de krævede NVRAM-variabler til at generere conf-filen"
logger_func "** Overvej ** at bruge disse kommandoer i dit opstarts script:"
logger_func "nvram set [email protected]"
logger_func "nvram sæt ssmtp_mailhub = smtp.gmail.com: 587"
logger_func "nvram set [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 "opret NVRAM-variablerne og kør init-scriptet igen eller genstart for at indstillingerne skal påvirke."
Afslut 0
være
###########################################################
#
# hovedsløjfe
#
SED_COMMAND = "s / $ NVRAM_PREFIX / /"
CONFIG_VARS = `nvram show | grep $ NVRAM_PREFIX | sed "$ SED_COMMAND" "
for jeg i $ CONFIG_VARS; gør
ekko $ i >> $ CONFIG_FILE
Færdig
###########################################################
#
# sundhedskontrol
#
hvis [ ! -f "$CONFIG_FILE" ]; derefter
# echo "$ 0: FEJL - kunne ikke oprette $ CONFIG_FILE. Måske er der ingen symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "FEJL - kunne ikke oprette $ CONFIG_FILE. Måske er der ingen symink / etc / XXXX -> / tmp / etc / XXXX?"
være
logger_func "############ Færdiggjort SSMTP-init-kørslen ############"
Gør det eksekverbart:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Vær opmærksom på NVRAM-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 modificerede firmware
Nu hvor alt er på plads, er det tid til at pakke den modificerede firmware om til en komprimeret binær, som vi kan blinke til routeren.
Syntaxen "build.sh" er:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
For at gøre dette bruger vi det medfølgende script, så spørg:
./build_firmware.sh output_mini1 ./working_dir_mini1/
Når "build" -handlingen er udført, vil der være flere firmwarebilleder, der venter på at blive brugt i "output" -mappen.
Du kan nu blinke filen kaldet “custom_image_00001-generic.bin” til din router som normalt ville du have en DD-WRT-firmware .
Bemærk : Glem ikke at gendanne til "fabriksindstillinger" før, under og lige efter firmwareblinket.
Send flash-trin
Fordi vi fik SSMTP-pakken til at lede efter NVRAM-variabler for at generere ssmtp-konfigurationsfilen, er vi nu nødt til at forsyne den med de manglende oplysninger.
Vi opnår dette ved hjælp af web-GUI "Kør kommandoer" -funktionen.
Gå til web-GUI -> "administration" -> "kommandoer" -> indsæt følgende i tekstboksen:
nvram sæt [email protected]
nvram sæt ssmtp_mailhub = smtp.gmail.com: 587
nvram sæt [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 begå
Udskift teksten efter ligetegnet (=) med dine faktiske oplysninger, og tryk derefter på "Kør kommandoer".
Bemærk
: hvis du bruger en almindelig, ikke TLS-bruger, er smtp-serveren den port, der skal bruges, 25 i stedet for 587.
Nu hvor SSMTP-oplysningerne er klar til brug, skal du påberåbe sig 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.
Outputtet fra denne kommando skal se ud:
Test at du kan sende e-mail
Indsæt dette igen i tekstboksen "kommandoer" følgende kommando med din e-mail-adresse:
ekko "testning af smeltedigel med e-mail 123 qwe" | ssmtp -vvv [email protected]
Tryk derefter på "Kør kommandoer" igen.
Fordi vi brugte -vvv-indstillingen til ekstra detaljerethed, skulle output fra denne kommando se ud som:
Hvis alt gik godt, skulle du få test-mailen inden for få sekunder.
Vi håber, at du kan bruge disse oplysninger til at skubbe dine hjemmereutergrænser endnu længere, end du troede muligt og dig nu virkelig styre din hjemme router og DD-WRT …
Linux forlænger livet, Linux udvider bevidstheden ... Linux er afgørende for pakkerejser