Hemsida » hur » Släpp ännu mer ström från din hemrouter med DD-WRT Mod-Kit

    Släpp ännu mer ström från din hemrouter med DD-WRT Mod-Kit


    Vi har redan visat dig hur du modifierar din hemrouter med den alternativa firmware för DD-WRT för kraftigt förbättrad prestanda, och idag kommer vi att visa dig hur du tar det ännu längre med DD-WRT Mod-Kit.

    Om du inte redan har det, se till och kolla in de två tidigare artiklarna i serien:

    • Vänd din hemrouter till en superdriven router med DD-WRT
    • Så här ökar du ditt Wi-Fi-nätverkssignal och ökar intervallet med DD-WRT

    Förutsatt att du är bekant med de ämnena, fortsätt läsa. Tänk på att den här guiden är lite mer teknisk, och nybörjare bör vara försiktiga när de modderar routern.

    Översikt

    Den här guiden kommer att ge ett steg för steg sammanfattning av hur du skapar din egen DD-WRT-firmware med modifieringar och tillägg med hjälp av "firmware modifieringssatsen".

    Modifieringspaketet för firmware gör att man kan göra modifieringar av firmware utan att kompilera den från källan. Att göra ändringar på detta sätt, med hjälp av de tillhandahållna skripten, blir en enkel fråga om att hämta, byta ut och ta bort några filer.

    Den mest övervägande orsaken till att använda den här metoden är att DD-WRTs stöd för Openwrt IPKG-paketen nyligen har flyttats till routrar som har hårddiskar (via USB), vilket gör mod-kit den enda konsekvent fungerande sättet att installera IPKG-paketen framgångsrikt för fall där en HD inte är tillgänglig. Dessutom har den här metoden den extra fördelen att lindra dig från JFFS beroende av paketinstallation, vilket för routrar med endast 4 MB flash är ett verkligt problem.

    Bild av publicenergy

    mål

    Medan instruktioner för detta förfarande beskrivs på DD-WRTs wiki och på utvecklarens webbplats strävar vi efter att göra denna guide till en kopia och klistra in procedur som alla kan använda för att uppnå följande mål:

    • Installera klickpaketet och dess beroenden.
    • Installera ssmtp-paketet med NVRAM-baserade genererade konfigurationer.
      • Eventuellt med stöd för TLS smtp (a.k.a. Gmail support).

    När du har följt denna procedur bör det vara relevant enkelt att anpassa det för andra paketinstallationer.

    Varning: Leda lätt ... kom ihåg att felaktig användning av modifieringspaketet, kan lämna dig med en router som behöver sticka (som i sin tur till en värdelös tegelsten). Men om du är en riktig nörd skriver du förmodligen på ideologin att han som kan förstöra en sak kontrollerar en sak och bara sanna geeks gör det

    förutsättningar

    1. Användning av denna procedur kan tegel din router, som i gör din router oanvändbar, Vi ansvarar inte för några skador som kan orsakas direkt eller annat på grund av användningen av rutinerna nedan.
    2. Denna procedur utfördes på Debian-baserade system (Lenny, Squeeze and Mint) och anvisningarna nedan antar att du använder en också.
    3. Denna procedur rekommenderas endast för personer som har erfarenhet av att blinka routern med DD-WRT, med alla förutsättningar, tillägg och begränsningar som gäller för hårdvaruinstallationen. ett bra ställe att starta skulle vara vår Vänd din hemrouter till en superdriven router med DD-WRT guide.
    4. Din router måste åtminstone stödja "mini" -versionen av DD-WRT.
    5. Denna procedur skapades och testades på Linksys WRT54GS / L-routrar, om du använder routrar från andra leverantörer, kan din körsträcka mycket.

    Inrätta

    Installera nödvändiga paket

    Modifieringspaketet för firmware har vissa beroenden för att det ska kunna sammanställas och fungera. För att installera / uppdatera dem alla samtidigt Utfärda det här kommandot i en terminal:

    sudo aptitude installera gcc g ++ binutils patch bzip2 flex bison gör gettext unzip zlib1g-dev libc6 subversion

    Ladda ner mod-kit

    Skapa en undermapp och få satsen från den officiella SVN:

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-skrivskyddad
    cd-firmware-mod-kit-skrivskyddad / bagage /

    Ladda ner en firmware för att arbeta på

    Det första du bör tänka på är vilken version du vill använda?
    En tumregel är: När du är i tvivel, använd "mini". Detta beror på att så länge som din router stöder åtminstone "mini" -versionen, använder den dig alla de mest använda funktionerna utan någon bloatware. sålunda lämnar både utrymme för procedurerna och till och med vissa JFFS-utrymmen för andra användningar i de flesta fall.

    När du har bestämt dig för en version, rekommenderas att du använder den senaste versionen av den fasta programvaran, eftersom de tenderar att ha många buggfixar jämfört med deras "stabila" motsvarigheter.
    Vid tidpunkten för detta skrivande var det senaste "03-17-11-r16454" och denna revision används i kommandona som följer.

    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

    För att göra det enklare att hålla reda på vilken version vi använder, byt namn på den nedladdade filen för att representera dess versionsnummer:

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

    Detta är givetvis valfritt, men kommandona nedan antar att du har bytt namn på filen.

    Utdragning av firmware

    För att kunna ändra filer inom firmware behöver vi extrahera innehållet i en tillfällig katalog.
    Syntaxen för det här kommandot är:
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    I vårt fall skulle detta översättas till:

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

    Obs! Första gången du kör det här kommandot bygger det mod-kit-verktygen på ditt system. detta händer bara en gång och kan ta ett tag ... så var tålmodig ...

    Installera paket

    Nu när firmware är extraherad kan vi installera paketen till den.
    Generellt är förfarandet att ladda ner paketet och dess beroenden i form av en ipk-fil från openWRT-arkivet. När du har laddat ner dem installeras dem i den extraherade firmware med hjälp av det angivna skriptet.

    Knock-paketet

    Detaljerade instruktioner om hur du konfigurerar och använder Knockd kommer att beskrivas i en framtida artikel, så du kan välja att hoppa över det här steget för tillfället eller göra det för att förbereda framtiden, eftersom Knockd inte tar mycket utrymme på något sätt.

    Knockd är en demon som lyssnar på kommunikationshändelser i länklagret för sekvenser som sedan verkar på dem.
    Vad det här betyder är att du kan få enheten att köra demonen inte ens lyssna på portarna (en portsökning ser inte dem som öppna) och gör det fortfarande göra något du behöver, från ett enda kommando hela vägen upp till ett fullständigt skript. Med den här tekniken kan du utlösa servern för att utföra någon form av operation du behöver av den på distans (över internet) utan att exponera ditt hemnätverk.

    Knockd har bara ett listat beroende, så ladda ner paketet och dess beroende genom att utfärda:

    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

    Installera "knock daemon" (knockd) ipk till firmware:

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

    Installera paketpaketet (libpcap) ipk till firmware:

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

    Som "knockd" kan åberopas med en alternativ konfigurationsfil (hur kommer det att förklaras i en framtida artikel) behöver du inte göra någon annan operation och du kan hoppa över till fastighetsbyggnadsdelen om allt du vill installera.

    SSMTP-paketet

    SSMTP-paketet gör det möjligt för din router att skicka e-postmeddelanden precis som vi visade i våra hur du konfigurerar e-postmeddelanden på Linux med hjälp av Gmail eller SMTP för servrar. Vi lovade dig då då vi visar hur du konfigurerar detta för DD-WRT och vi levererar nu.
    Det här är huvudsakligen användbart om du ska skapa skript på routern som du vill få feedback om deras funktion via e-post.

    Paketets inställning är lite mer komplicerat då det är på vanliga Linux-system på grund av begränsningen som införs av ett inbyggt system, så ta ett djupt andetag ... redo? .... nu går vi… :)

    Ladda ner paketet:

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

    Installera "ssmtp" ipk till firmware:

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

    TLS-support (valfritt)
    SSMTP listar inte några andra paket som dess beroende, men om du vill kunna använda en smtp-gateway som kräver TLS-autentisering (dvs.. Gmail), måste du också installera openSSL-paketet.
    Notera: Det finns en HUGE nackdel att göra detta i form av betydligt minskat utrymme på routern för JFFS senare. Det innebär att openSSL-paketet tar ungefär 500k utrymme från totalt 4MB (för en vanlig icke-mega-stödjande router), därigenom förenas JFFS-överhuvudet och du kommer att upptäcka att du har kvar, men ett dyrbart antal block av gratis JFFS-utrymme (ca 60 KB på WRT54GL).

    Eftersom det fortfarande finns icke-TLS-krav som kräver smtp-servrar där ute (vanligtvis din ISP), föreslår jag att du tar en minut att tänka om du verkligen behöver använda TLS-gatewayen.

    Om du har bestämt dig för att aktivera TLS-stöd trots dess nackdel, ladda ner openSSL-paketet:

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

    Installera "openSSL" (libopenssl) ipk till firmware:

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

    konfigurationer
    Det finns en begränsning med SSMTP-paketet, att det inte är möjligt att anropa det med en alternativ konfigurationsfil.
    Eftersom firmware är skrivskyddad när den är på routern, betyder det att vi inte kan låsa upp konfigurationen i firmware.
    Men om vi inte vill gå igenom alla modifieringssteg för firmware, bara för att ändra e-postinställningarna? (till exempel en lösenordsändring).

    För det ändamålet nådde både Jeremy (firmware mod-kit-skaparen) och jag själv slutsatsen (självständigt om jag kanske ödmjukt lägger till) att det enda kloka sättet att göra detta skulle vara att:

    1. Gör konfigurationsfilerna som ssmtp-paketet pekar till skrivskyddad plats under mm, peka på tmp-katalogen som är skrivbar till vid körning.
    2. Skapa ett skript som dynamiskt skulle generera konfigurationer baserade på NVRAM-variabler vid start.

    För att uppnå det krävs några ytterligare steg ...

    Symlink ssmtp-konfigurationskatalogen
    Som förklarat ovan måste vi göra / Etc / ssmtp plats på routern, peka på / tmp katalog som den enda skrivbara platsen vi har på routern vid körtid. För att göra detta, ta bort ssmtp-katalogen som skapades av ipk-installationsprogrammet:

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

    Skapa en ny symbolisk länk som pekar på / etc / ssmtp på routerns rotfilsystem, för att peka på / tmp / etc / ssmtp som en absolut sökväg:

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

    Notera: Även om det här ser ologiskt ut just nu, eftersom vi pekar paketets konfigurationskatalog till en plats utanför firmware modifieringssatsens arbetsdokument, försäkrar jag dig om att det här ser helt bra ut från routerns synvinkel vid körtid.

    Ett init-script
    Även om det är helt möjligt att inte injicera det här skriptet i fast programvaran och köra det som ett startskript senare, anser jag att det är lämpligt att uttrycka det här om det bara är ett exempel för framtida användning.
    Ursprungligen skapade Jeremy manuset skräddarsydd efter någons begäran, senare justerade jag och förstärkte den för att vara mer kompatibel med DD-WRT och syslog rapportering.

    Skapa det nya init-startprogrammet:

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

    Obs! Du kan använda en annan redaktör, jag använder vi eftersom den överensstämmer med vad som är tillgängligt på routern ...
    Gör detta till sitt innehåll:

    #! / Bin / sh
    #
    # title: ssmtp_nvram.sh
    # författare: Jeremy Collake och Aviad Raviv
    # webbplats: http://www.bitsum.com, http://howtogeek.com
    #
    # manus för att bygga config-filen från nvram vars.
    # kommer att fungera för någon konfigurationsfil som använder
    # var = värde typ par.
    #
    # använder prefix för nvram-variabler.
    #
    # dvs.
    # ssmtp_hostname = något
    # översätts till ssmtp.conf
    # värdnamn = något
    #
    logger_func ()

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

    logger_func "####### Startade SSMTP init run ################################################
    logger_func "Skapa katalogen etc i / 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 "Genererar $ CONFIG_FILE för paketet $ PACKAGE_NAME"
    #echo $ 0: genererar $ CONFIG_FILE för paketet $ PACKAGE_NAME
    eko "#! / bin / sh"> $ CONFIG_FILE
    eko "#" >> $ CONFIG_FILE
    echo "# auto genererade baserat på nvram av $ 0" >> $ CONFIG_FILE
    eko "#" >> $ CONFIG_FILE

    om [-z "'nvram show | grep ssmtp'"]
    sedan
    logger_func "Det verkar som om du inte har ställt in de NVRAM-variabler som krävs för att generera konfelfilen"
    logger_func "** Tänk på ** med hjälp av dessa kommandon i ditt startprogram:"
    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 = JA"
    logger_func "nvram set ssmtp_AuthUser = användarnamn"
    logger_func "nvram set ssmtp_AuthPass = lösenord"
    logger_func "nvram set ssmtp_FromLineOverride = JA"
    logger_func "skapa NVRAM-variablerna och kör igen init-scriptet eller starta om för inställningarna som ska påverka."
    utgång 0
    fi

    ################################################## #########
    #
    # huvudslinga
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    för jag i $ CONFIG_VARS; do
    echo $ i >> $ CONFIG_FILE
    Gjort

    ################################################## #########
    #
    # Sanity check
    #
    om [ ! -f "$ CONFIG_FILE"]; sedan
    # echo "$ 0: ERROR - kunde inte skapa $ CONFIG_FILE. Kanske finns det ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ERROR - kunde inte skapa $ CONFIG_FILE. Kanske finns det ingen symlink / etc / XXXX -> / tmp / etc / XXXX?"
    fi
    logger_func "####### Slutför SSMTP init run ####################################################

    Gör det exekverbart:

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

    Notera NVRAM väntarvariablerna i manuset, det är vårt ansvar att ge dem något att arbeta med efter att vi har installerat vår modifierade firmware på routern.

    Bygg den modifierade firmware

    Nu när allt är på plats, är det dags att ompaketera den modifierade firmware till ett komprimerat binärt som vi kan blinka till routern.
    Synsaxen "build.sh" är:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    För att göra detta använder vi det medföljande skriptet, så problemet:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    När "bygg" -funktionen är klar kommer det att finnas flera firmwarebilder som väntar på att användas i "utmatning" -katalogen.

    Du kan nu blinka filen "custom_image_00001-generic.bin" till din router som du normalt skulle ha en DD-WRT-firmware.

    Notera: Glöm inte att återställa till "fabriksinställningar" före, under och strax efter firmware-blixten.

    Post flash steg

    Eftersom vi gjorde SSMTP-paketet leta efter NVRAM-variabler för att skapa ssmtp-konfigurationsfilen, behöver vi nu leverera den med den saknade informationen.
    Vi kommer att uppnå detta genom att använda web-GUI-funktionen "Kör kommandon".

    Gå till webb-GUI -> "administration" -> "kommandon" -> klistra in i textrutan följande:

    nvram set [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com: 587
    nvram set [email protected]
    nvram set ssmtp_UseSTARTTLS = JA
    nvram set ssmtp_AuthUser = ditt-gmail-användarnamn (utan @ gmail.com)
    nvram set ssmtp_AuthPass = du-gmail-lösenord
    nvram set ssmtp_FromLineOverride = JA
    nvram commit

    Byt ut texten efter lika (=) tecknet, med din faktiska information, och tryck sedan på "Kör kommandon".
    Notera: Om du använder en vanlig, icke-TLS-använd, smtp-server är porten som ska användas 25 istället för 587.

    Nu när SSMTP-informationen är klar för användning måste du anropa init-scriptet. Så du kan antingen starta om routern, eller klistra in den i textrutan "kommandon":

    /etc/init.d/S80ssmtp

    Slå sedan "Kör kommandon" igen.
    Utmatningen av det här kommandot ska se ut:

    Testa att du kan skicka e-post
    Lägg igen det här i kommandot i textrutan följande kommando med din e-postadress:

    echo "testdjup emailing 123 qwe" | ssmtp -vvv [email protected]

    Slå sedan "Kör kommandon" igen.
    Eftersom vi använde -vvv-alternativet för extra verbositet, bör utmatningen av det här kommandot se ut:

    Om allt gick bra borde du få testmailen inom några sekunder.

    Vi hoppas att du kan använda denna information för att driva din hemrouters gränser ytterligare än du trodde var möjligt och du nu verkligen kontrollerar din hemrouter och DD-WRT ...


    Linux förlänger livet, Linux utökar medvetandet ... Linux är viktigt för paketresor