Hjemmeside » hvordan » Slip enda mer strøm fra hjemmevirksomheten med DD-WRT Mod-Kit

    Slip enda mer strøm fra hjemmevirksomheten med DD-WRT Mod-Kit


    Vi har allerede vist deg hvordan du modrer hjemmestyreren din med DD-WRT-alternativvaren for kraftig forbedret ytelse, og i dag skal vi vise deg hvordan du tar det enda lenger med DD-WRT Mod-Kit.

    Hvis du ikke allerede har det, vær sikker og sjekk ut de to tidligere artiklene i serien:

    • Slå hjemmevirksomden inn i en superdrevet ruter med DD-WRT
    • Slik øker du Wi-Fi-nettverkssignalet og øker rekkevidden med DD-WRT

    Forutsatt at du er kjent med emnene, fortsett å lese. Husk at denne veiledningen er litt mer teknisk, og nybegynnere bør være forsiktige når de modger ruteren.

    Oversikt

    Denne veiledningen gir en trinnvis gjennomgang av hvordan du lager din egen DD-WRT-firmware med modifikasjoner og tillegg ved hjelp av "firmware modifikasjonssettet".

    Fastvare modifikasjonssettet gjør at man kan gjøre endringer i fastvaren uten å kompilere den fra kilden. Å gjøre endringer på denne måten, ved hjelp av de angitte skriptene, blir et enkelt spørsmål om å laste ned, erstatte og slette noen filer.

    Den mest overordnede grunnen til å bruke denne metoden er fordi i det siste har DD-WRTs støtte til Openwrt IPKG-pakkene skiftet mot rutere som har harddisker (via USB), noe som gjør mod-kit den eneste konsekvent fungerende måten å installere IPKG-pakker med for tilfeller der en HD ikke er tilgjengelig. I tillegg har denne metoden den ekstra fordelen av å lindre deg fra JFFS-avhengigheten av pakkeinstallasjon, som for rutere med bare 4 MB flash er et reelt problem.

    Bilde av publicenergy

    mål

    Mens instruksjoner for denne prosedyren er beskrevet på DD-WRTs wiki og på utviklerens nettsted, tar vi sikte på å gjøre denne veiledningen til en kopi og lim inn fremgangsmåte som alle kan bruke for å oppnå følgende mål:

    • Installer knockd-pakken og dens avhengigheter.
    • Installer ssmtp-pakken med NVRAM-baserte genererte konfigurasjoner.
      • Valgfritt med støtte for TLS smtp (a.k.a. Gmail-støtte).

    Når du har fulgt denne prosedyren, bør det være aktuelt enkelt å tilpasse det til andre pakkeinstallasjoner.

    Advarsel: Tread lett ... husk at feil bruk av modifikasjonssettet, kan gi deg en router som trenger de-murstein (som i sin tur til en ubrukelig murstein). Men hvis du er en ekte geek, abonnerer du sannsynligvis på ideologien at han som kan ødelegge noe, kontrollerer noe, og bare sanne geeks gjør det

    Forutsetninger

    1. Bruk denne fremgangsmåten kan murstein ruteren din, som i gjør ruteren din ubrukelig, Vi påtar oss intet ansvar for eventuelle skader som kan bli forårsaket direkte eller andre på grunn av bruken av prosedyrene nedenfor.
    2. Denne prosedyren ble utført på Debian-baserte systemer (Lenny, Squeeze and Mint) og instruksjonene nedenfor antar at du bruker en også.
    3. Denne prosedyren anbefales kun for personer som har erfaring med å blinke ruteren sin med DD-WRT, med alle forutsetninger, forbehold og begrensninger som gjelder for maskinvareoppsettet. Et godt sted å starte, ville være vår Slå din hjemmerouter inn i en superdrevet ruter med DD-WRT guide.
    4. Din ruter må ha minst "mini" -versjonen av DD-WRT.
    5. Denne prosedyren ble opprettet og testet på Linksys WRT54GS / L-rutere, hvis du bruker rutere fra andre leverandører, kan kjørelengde din veldig.

    Setup

    Installere nødvendige pakker

    Fastvare modifikasjonssettet har noen avhengigheter for å kompilere og arbeide. For å installere / oppdatere dem alle samtidig Utsted denne kommandoen i en terminal:

    sudo aptitude install gcc g + + binutils patch bzip2 flex bison gjør gettext unzip zlib1g-dev libc6 subversion

    Last ned mod-settet

    Lag en undermappe, og få settet fra den offisielle SVN:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ fastvare-mod-kit-skrivebeskyttet
    CD-firmware-mod-kit-skrivebeskyttet / trunk /

    Last ned en fastvare for å jobbe med

    Den første tingen å vurdere er hvilken versjon du vil bruke?
    En tommelfingerregel er: Når du er i tvil, bruk "mini". Dette skyldes at så lenge ruteren din støtter minst "mini" -versjonen, ved å bruke den, får du alle de mest brukte funksjonene uten noen bloatware. dermed forlater både plass til prosedyrene og til og med litt JFFS plass til andre bruksområder i de fleste tilfeller.

    Når du har bestemt deg for en versjon, anbefales det å bruke den nyeste revisjonen av firmware tilgjengelig, da de har en tendens til å ha mange feilrettinger i forhold til deres "stabile" kolleger.
    På tidspunktet for denne skrivelsen var det siste "03-17-11-r16454" og denne revisjonen brukes i kommandoene som 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 å gjøre det lettere å holde oversikt over hvilken versjon vi bruker, endre navn på den nedlastede filen for å representere versjonens nummer:

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

    Dette er selvsagt valgfritt, men kommandoene nedenfor antar at du har omdøpt filen.

    Ekstra firmware

    For å kunne endre filer i fastvaren må vi pakke ut innholdet i en midlertidig katalog.
    Syntaxen til denne kommandoen er:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    I vårt tilfelle ville dette oversette til:

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

    Merk: Første gang du kjører denne kommandoen, bygger den mod-kit-verktøyene på systemet ditt. dette skjer bare en gang og kan ta litt tid ... så vær tålmodig ...

    Installere pakker

    Nå som fastvaren er hentet, kan vi installere pakkene til den.
    Generelt er prosedyren å laste ned pakken og dens avhengigheter i form av en ipk-fil fra openWRT-depotet. Når du har lastet ned, installerer du dem i den ekstraherte fastvaren ved hjelp av det angitte skriptet.

    Knockd pakken

    Detaljert veiledning om hvordan du konfigurerer og bruker Knockd, vil bli beskrevet i en fremtidig artikkel, så du kan velge å hoppe over dette trinnet for øyeblikket eller gjøre det for å forberede fremtiden, da Knockd ikke tar mye plass i det hele tatt.

    Knockd er en demon som lytter til kommunikasjonshendelser på koblingslaget for sekvenser som deretter virker på dem.
    Hva dette betyr er at du kan få enheten til å kjøre demonen, ikke engang "lytte" på portene (en portskanning ser ikke dem som åpne) og gjør det fortsatt gjøre noe du trenger, fra en enkelt kommando hele veien opp til et fullt skript. Ved hjelp av denne teknikken kan du utløse serveren til å utføre enhver form for operasjon du trenger av den eksternt (over internett) uten å utsette hjemmenettverket ditt.

    Knockd har bare en oppført avhengighet, så last ned pakken og dens avhengighet ved å utstede:

    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 til firmware:

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

    Installer "pakkefangst" (libpcap) ipk inn i fastvaren:

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

    Som "knockd" kan påberopes med en alternativ konfigurasjonsfil (hvordan det skal forklares i en fremtidig artikkel), er det ikke nødvendig å utføre en annen operasjon, og du kan hoppe over til fastvare-bygningen hvis alt du ønsker å installere.

    SSMTP-pakken

    SSMTP-pakken gjør det mulig for ruteren å sende e-postmeldinger akkurat som vi viste i hvordan vi konfigurerer e-postvarsler på Linux ved hjelp av Gmail eller SMTP for servere. Vi lovte deg da da vi viser hvordan du konfigurerer dette for DD-WRT, og vi leverer nå.
    Dette er hovedsakelig nyttig hvis du skal lage skript på ruteren som du vil motta tilbakemelding om operasjonen via e-post.

    Denne pakkens oppsett er litt mer komplisert, da det er på vanlige Linux-systemer på grunn av begrensningen pålagt av et innebygd system, så ta et dypt pust ... klar? .... la oss gå… :)

    Last ned pakken:

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

    Installer "ssmtp" ipk i fastvaren:

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

    TLS-støtte (valgfritt)
    SSMTP lister ikke noen andre pakker som sine avhengigheter, men hvis du vil kunne bruke en smtp-gateway som krever TLS-godkjenning (dvs.. Gmail), må du også installere openSSL pakken.
    Merk: Det er en stor ulempen å gjøre dette i form av betydelig redusert plass på ruteren for JFFS senere. Det vil si at openSSL-pakken tar omtrent 500k plass fra totalt 4MB (for en vanlig ikke-mega-støttende ruteren), som er knyttet til den JFFS-overhead, og du vil oppdage at du igjen med, men en dyrebar, få blokker av gratis JFFS-plass (ca. 60KB på WRT54GL).

    Siden det fremdeles er ikke TLS som krever smtp-servere der ute (vanligvis din ISP), foreslår jeg å ta et øyeblikk å tenke hvis du virkelig trenger å bruke TLS-gatewayen.

    Hvis du har bestemt deg for å aktivere TLS-støtte til tross for ulempen, laster du ned openSSL-pakken:

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

    Installer "openSSL" (libopenssl) ipk til firmware:

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

    konfigurasjoner
    Det er en begrensning med SSMTP-pakken, at det ikke er mulig å påkalle det med en alternativ konfigurasjonsfil.
    Fordi fastvaren er skrivebeskyttet når den er på ruteren, betyr det at ut av boksen kan vi bare kode inn konfigurasjonen i fastvaren.
    Men hva om vi ikke vil gå gjennom alle fastvaremodifikasjonstrinnene, bare for å endre e-postinnstillingene? (for eksempel en endring av passord).

    Til det formål nådde både Jeremy (fastvare mod-kit-skaperen) og meg selv konklusjonen (uavhengig av om jeg kanskje ydmyker) at den eneste sane måten å gjøre dette på, ville være å:

    1. Lag konfigurasjonsfilens plassering som ssmtp-pakken peker til skrivebeskyttet sted under osv., Pek på tmp-katalogen som kan skrives til ved kjøretid.
    2. Opprett et skript som dynamisk genererer konfigurasjonene basert på NVRAM-variabler ved oppstart.

    For å oppnå det, er det nødvendig med noen ekstra trinn ...

    Symlink konfigurasjonskatalogen for ssmtp
    Som forklart ovenfor, må vi gjøre / Etc / SSMTP plassering på ruteren, pek på / tmp katalog som det eneste skrivbare stedet vi har på ruteren på kjøretid. For å gjøre dette, slett ssmtp-katalogen som ble opprettet av ipk-installatøren:

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

    Opprett en ny symbolsk lenke som peker på / etc / ssmtp på ruterenes rotfilsystem, for å peke til / tmp / etc / ssmtp som en absolutt bane:

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

    Merk: Selv om dette ser ulogisk ut akkurat nå, fordi vi peker pakkens konfigurasjonskatalog til et sted utenfor fastvaremodifikasjonssettets arbeidskatalog, forsikrer jeg deg om at dette ser helt fint ut fra ruters synspunkt på kjøretidspunktet.

    Et init-skript
    Selv om det er helt mulig å ikke injisere dette skriptet i fastvaren og kjøre det som oppstartsskript senere, føler jeg det riktig å sette det her hvis det bare er et eksempel for fremtidig bruk.
    Opprinnelig skapte Jeremy skriptet skreddersydd til en persons forespørsel, senere justerte jeg og forsterket den for å være mer kompatibel med DD-WRT og syslog rapportering.

    Opprett det nye init-oppstartskriptet:

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

    Merk: Du kan bruke en annen redaktør, jeg bruker vi fordi det stemmer overens med hva som er tilgjengelig på ruteren ...
    Gjør dette til innholdet:

    #! / Bin / sh
    #
    # tittel: ssmtp_nvram.sh
    # forfatter: Jeremy Collake og Aviad Raviv
    # site: http://www.bitsum.com, http://howtogeek.com
    #
    # script for å bygge config-fil fra nvram vars.
    # vil fungere for en konfigurasjonsfil som bruker
    # var = verdi type par.
    #
    # bruker prefikser for nvram-variabler.
    #
    # dvs.
    # ssmtp_hostname = noe
    # oversetter til ssmtp.conf
    # vertsnavn = noe
    #
    logger_func ()

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

    logger_func "####### Startet SSMTP init run #############################################
    logger_func "Opprett mappen 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 generert basert på nvram for $ 0" >> $ CONFIG_FILE
    ekko "#" >> $ CONFIG_FILE

    hvis [-z "'nvram show | grep ssmtp'"]
    deretter
    logger_func "Det ser ut til at du ikke har angitt NVRAM-variablene som kreves for å generere konf filen"
    logger_func "** Vurder ** ved å bruke disse kommandoene i oppstartsskriptet:"
    logger_func "nvram sett [email protected]"
    logger_func "nvram sett ssmtp_mailhub = smtp.gmail.com: 587"
    logger_func "nvram sett [email protected]"
    logger_func "nvram sett ssmtp_UseSTARTTLS = JA"
    logger_func "nvram sett ssmtp_AuthUser = brukernavn"
    logger_func "nvram sett ssmtp_AuthPass = passord"
    logger_func "nvram sett ssmtp_FromLineOverride = JA"
    logger_func "opprett NVRAM-variablene og kjør init-scriptet på nytt eller start på nytt for at innstillingene skal påvirke."
    utgang 0
    fi

    ################################################## #########
    #
    # hovedløkke
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    for jeg i $ CONFIG_VARS; gjøre
    ekko $ i >> $ CONFIG_FILE
    ferdig

    ################################################## #########
    #
    # tilregnlighetssjekk
    #
    hvis [! -f "$ CONFIG_FILE"]; deretter
    # echo "$ 0: FEIL - kunne ikke opprette $ CONFIG_FILE. Kanskje er det ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "FEIL - kunne ikke opprette $ CONFIG_FILE. Kanskje er det ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
    fi
    logger_func "####### Ferdig SSMTP init run ##########

    Gjør det kjørbart:

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

    Ta vare på NVRAM-ventervariablene i skriptet, det er vårt ansvar å gi dem noe å jobbe med etter at vi har installert vår modifiserte firmware på ruteren.

    Bygg den modifiserte firmwareen

    Nå som alt er på plass, er det på tide å pakke om den modifiserte firmwareen til en komprimert binær som vi kan blinke til ruteren.
    Syntaksen "build.sh" er:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    For å gjøre dette bruker vi det medfølgende skriptet, så problemet:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Når "bygge" -operasjonen er ferdig, vil det være flere fastvarebilder som venter på å bli brukt i "utdata" -katalogen.

    Du kan nå blinke filen "custom_image_00001-generic.bin" til ruteren som du normalt ville ha en DD-WRT-firmware.

    Merk: Ikke glem å gjenopprette til "fabrikkinnstillinger" før, under og rett etter firmware-blitsen.

    Post-flash-trinn

    Fordi vi gjorde at SSMTP-pakken ser etter NVRAM-variabler for å generere ssmtp-konfigurasjonsfilen, må vi nå levere den med den manglende informasjonen.
    Vi vil oppnå dette ved å bruke web-GUI "Kjør kommandoer" -funksjonen.

    Gå til web-GUI -> "administrasjon" -> "kommandoer" -> lim inn i tekstboksen følgende:

    nvram sett [email protected]
    nvram sett ssmtp_mailhub = smtp.gmail.com: 587
    nvram sett [email protected]
    nvram sett ssmtp_UseSTARTTLS = JA
    nvram sett ssmtp_AuthUser = ditt-gmail-brukernavn (uten @ gmail.com)
    nvram sett ssmtp_AuthPass = du-gmail-passord
    nvram sett ssmtp_FromLineOverride = JA
    nvram commit

    Erstatt teksten etter det samme (=) tegnet, med din faktiske informasjon, og deretter Hit "Kjør kommandoer".
    Merk: Hvis du bruker en vanlig, ikke-TLS-bruker, smtp-server, er porten som skal brukes 25 i stedet for 587.

    Nå som SSMTP-informasjonen er klar til bruk, må du påkalle init-skriptet. Så du kan enten starte ruteren på nytt, eller lim inn dette i tekstboksen "kommandoer":

    /etc/init.d/S80ssmtp

    Deretter treffer du "Kjør kommandoer" igjen.
    Utgangen av denne kommandoen skal se ut som:

    Test at du kan sende e-post
    Legg igjen dette inn i tekstboksen "kommandoer" følgende kommando med e-postadressen din:

    ekko "testing smeltedigel emailing 123 qwe" | ssmtp -vvv [email protected]

    Deretter treffer du "Kjør kommandoer" igjen.
    Fordi vi brukte alternativet -vvv for ekstra verbositet, burde utgangen av denne kommandoen se ut som:

    Hvis alt gikk bra, bør du få testmeldingen innen sekunder.

    Vi håper at du kan bruke denne informasjonen til å presse hjemmebryterens grenser enda lenger da du trodde det var mulig, og du styrer nå hjemme-ruteren din, og DD-WRT ...


    Linux utvider livet, Linux utvider bevisstheten ... Linux er viktig for pakkereiser