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

Innholdsfortegnelse:

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

Video: Slett enda mer strøm fra hjemmevirksomheten med DD-WRT Mod-Kit

Video: Slett enda mer strøm fra hjemmevirksomheten med DD-WRT Mod-Kit
Video: CS50 2013 - Week 1 - YouTube 2024, April
Anonim
 Vi har allerede vist deg hvordan du modrer hjemmestyreren din med den alternative firmware for DD-WRT for kraftig forbedret ytelse, og i dag skal vi vise deg hvordan du tar det enda mer med DD-WRT Mod-Kit.
Vi har allerede vist deg hvordan du modrer hjemmestyreren din med den alternative firmware for DD-WRT for kraftig forbedret ytelse, og i dag skal vi vise deg hvordan du tar det enda mer med DD-WRT Mod-Kit.

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

  • Slå din hjemmerouter inn i en superdrevet router 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 med 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.v.s. 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

    Image
    Image

    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 bruk av prosedyrene nedenfor.
    2. Denne prosedyren ble utført på Debian-baserte systemer (Lenny, Squeeze and Mint) og instruksjonene under 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 ruteren må støtte 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 meget.

    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 make 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 https://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only cd firmware-mod-kit-read-only/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 https://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 fastvaren

    For å kunne endre filer i fastvaren, må vi trekke innholdet ut 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 instruksjoner om hvordan du konfigurerer og bruker Knockd, blir beskrevet i en fremtidig artikkel, så du kan velge å hoppe over dette trinnet for nå, eller gjøre det for å forberede fremtiden, da Knockd ikke tar mye plass i alle fall.

    Knockd er en demon som lytter til kommunikasjonshendelser på koblingslaget for sekvenser som virker på dem. Hva dette betyr er at du kan få enheten til å kjøre demonen, ikke engang "lytte" på portene (en portskanning ser dem ikke så åpen) 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 en hvilken som helst 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 https://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk wget https://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk

    Installer "knock daemon" (knockd) ipk inn i fastvaren:

    ./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 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 lovet 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 https://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 sammensatt til JFFS-overhead-maskinen, og du vil oppdage at du igjen med, men en dyrebar, få blokker av gratis JFFS-plass (ca. 60KB på WRT54GL).

    Siden det fortsatt 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-kravsposten.

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

    wget https://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 kom både Jeremy (firmware mod-kit-skaperen) og meg selv til 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øring.
    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 roten filsystem, 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øretid.

    Et init-skript Selv om det er helt mulig å ikke injisere dette skriptet i fastvaren og kjøre det som et oppstartsskript senere, føler jeg det passende å 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 editor, jeg bruker vi fordi den er i samsvar med det som er tilgjengelig på ruteren … Gjør dette til innholdet:

    #!/bin/sh # # title: ssmtp_nvram.sh # author: Jeremy Collake and Aviad Raviv # site: https://www.bitsum.com, https://howtogeek.com # # script to build config file from nvram vars. # will work for any config file that uses # var=value type pairs. # # uses prefixes for nvram variables. # # i.e. # ssmtp_hostname=something # translates to ssmtp.conf # hostname=something # logger_func() { logger -s -p local0.notice -t SSMTP_init $1 }

    logger_func '###########Started the SSMTP init run###########' logger_func 'Creating the etc directory in /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 'Generating $CONFIG_FILE for package $PACKAGE_NAME' #echo $0: generating $CONFIG_FILE for package $PACKAGE_NAME echo '#!/bin/sh' > $CONFIG_FILE echo '#' >> $CONFIG_FILE echo '# auto generated based on nvram by $0' >> $CONFIG_FILE echo '#' >> $CONFIG_FILE

    if [ -z '`nvram show | grep ssmtp`' ] then logger_func 'It appears that you have not set the NVRAM variables required to generate the conf file' logger_func '**Consider** using these commands in you startup script:' logger_func 'nvram set [email protected]' logger_func 'nvram set ssmtp_mailhub=smtp.gmail.com:587' logger_func 'nvram set [email protected]' logger_func 'nvram set ssmtp_UseSTARTTLS=YES' logger_func 'nvram set ssmtp_AuthUser=username' logger_func 'nvram set ssmtp_AuthPass=password' logger_func 'nvram set ssmtp_FromLineOverride=YES' logger_func 'create the NVRAM variables and re-run the init script or reboot for the settings to take affect.' exit 0 fi

    ########################################################### # # main loop # SED_COMMAND='s/$NVRAM_PREFIX/ /' CONFIG_VARS=`nvram show | grep $NVRAM_PREFIX | sed '$SED_COMMAND'` for i in $CONFIG_VARS; do echo $i >> $CONFIG_FILE done

    ########################################################### # # sanity check # if [ ! -f '$CONFIG_FILE' ]; then # echo '$0: ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' logger_func 'ERROR - could not create $CONFIG_FILE. Perhaps there is no symink /etc/XXXX -> /tmp/etc/XXXX ?' fi logger_func '###########Finished the 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 fastvaren 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 som heter "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 konfigurasjonsfilen til ssmtp, 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 set [email protected] nvram set ssmtp_mailhub=smtp.gmail.com:587 nvram set [email protected] nvram set ssmtp_UseSTARTTLS=YES nvram set ssmtp_AuthUser=your-gmail-user-name(without the @gmail.com) nvram set ssmtp_AuthPass=you-gmail-password nvram set ssmtp_FromLineOverride=YES 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 for 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:
    Test at du kan sende e-post Legg igjen dette inn i tekstboksen "kommandoer" følgende kommando med e-postadressen din:

    echo 'testing crucible 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.
    Hvis alt gikk bra, bør du få testmeldingen innen sekunder.

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

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

Anbefalt: