Startpagina » hoe » Laat nog meer kracht van uw thuisrouter los met DD-WRT Mod-Kit

    Laat nog meer kracht van uw thuisrouter los met DD-WRT Mod-Kit


    We hebben je al laten zien hoe je je thuisrouter modificeert met de DD-WRT alternatieve firmware voor sterk verbeterde prestaties, en vandaag laten we je zien hoe je het nog verder kunt nemen met de DD-WRT Mod-Kit.

    Als je dat nog niet hebt gedaan, controleer dan de twee vorige artikelen in de serie:

    • Verander uw Home Router met behulp van DD-WRT in een Super Powered Router
    • Hoe u uw Wi-Fi-netwerksignaal kunt versterken en het bereik met DD-WRT kunt vergroten

    Ervan uitgaande dat u bekend bent met die onderwerpen, blijf lezen. Houd er rekening mee dat deze handleiding iets technischer is en dat beginners voorzichtig moeten zijn bij het modden van hun router.

    Overzicht

    In deze handleiding wordt stapsgewijs beschreven hoe u uw eigen DD-WRT-firmware kunt maken met wijzigingen en toevoegingen met behulp van de "Firmware-aanpassingskit".

    Met de firmware-aanpassingskit kunt u wijzigingen aanbrengen in de firmware zonder deze van de bron te hoeven compileren. Het aanbrengen van wijzigingen op deze manier, met behulp van de meegeleverde scripts, wordt een kwestie van downloaden, vervangen en verwijderen van sommige bestanden.

    De meest overheersende reden om deze methode te gebruiken is omdat de laatste tijd DD-WRT's ondersteuning voor de Openwrt IPKG-pakketten is verschoven naar routers met harde schijven (via USB), waardoor de mod-kit de enige consistent werkende manier is om de IPKG-pakketten met succes te installeren voor gevallen waarin een HD niet beschikbaar is. Bovendien heeft deze methode het extra voordeel dat u wordt bevrijd van de JFFS-afhankelijkheid voor de installatie van pakketten, wat voor routers met slechts 4 MB flash een echt probleem is.

    Afbeelding door publicenergy

    Goals

    Hoewel de instructies voor deze procedure gedetailleerd zijn op de Wiki van DD-WRT en op de site van de ontwikkelaar, willen we van deze handleiding een kopieer- en plakprocedure maken die iedereen kan gebruiken om de volgende doelen te bereiken:

    • Installeer het knockd-pakket en de bijbehorende afhankelijkheden.
    • Installeer het ssmtp-pakket met op NVRAM gebaseerde gegenereerde configuraties.
      • Optioneel met ondersteuning voor TLS smtp (a.k.a. Gmail-ondersteuning).

    Zodra u deze procedure hebt gevolgd, moet het relevant eenvoudig zijn om het aan te passen voor andere pakketinstallaties.

    Waarschuwing: Loop voorzichtig door ... houd er rekening mee dat onjuist gebruik van de aanpassingskit u achterlaat bij een router die moet worden ontstenen (zoals op zijn beurt in een nutteloze baksteen). Maar als je een echte nerd bent, onderschrijf je waarschijnlijk de ideologie dat, hij die iets kan vernietigen, iets regelt, en alleen echte geeks dat doen

    voorwaarden

    1. Het gebruik van deze procedure kan steen uw router, zoals bij het maken van uw router onbruikbaar, wij nemen geen verantwoordelijkheid voor enige schade die direct of anderszins kan worden veroorzaakt door het gebruik van de onderstaande procedures.
    2. Deze procedure is uitgevoerd op Debian-gebaseerde systemen (Lenny, Squeeze en Mint) en de onderstaande instructies gaan ervan uit dat u er ook een gebruikt.
    3. Deze procedure wordt alleen aanbevolen voor mensen die ervaring hebben met het flashen van hun router met DD-WRT, met alle vereisten, voorbehouden en beperkingen die gelden voor hun hardware-installatie. een goede plek om te beginnen is onze Turn Your Home-router in een Super Powered Router met DD-WRT gids.
    4. Uw router moet minstens de "mini" -versie van DD-WRT ondersteunen.
    5. Deze procedure is gemaakt en getest op Linksys WRT54GS / L-routers, als u routers van andere leveranciers gebruikt, kan uw kilometerstand zeer.

    Opstelling

    De vereiste pakketten installeren

    De firmware-aanpassingskit heeft een aantal afhankelijkheden om te compileren en te werken. Om ze allemaal tegelijk te installeren / updaten Geef dit commando in een terminal:

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

    Download de mod-kit

    Maak een submap en download de kit van de officiële 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-alleen-lezen / trunk /

    Download een firmware om aan te werken

    Het eerste dat u moet overwegen, is welke versie u wilt gebruiken?
    Een vuistregel is: gebruik bij twijfel "mini". Dit komt omdat zolang je router tenminste de "mini" -versie ondersteunt, je hiermee alle meestgebruikte functies zonder bloatware kunt gebruiken. waardoor in de meeste gevallen zowel ruimte overblijft voor de procedures als zelfs enige JFFS-ruimte voor andere gebruiken.

    Nadat u een versie hebt gekozen, wordt het aanbevolen om de nieuwste versie van de beschikbare firmware te gebruiken, omdat deze vaak veel bugfixes bevatten in vergelijking met hun 'stabiele' tegenhangers..
    Op het moment van dit schrijven was het laatste "03-17-11-r16454" en deze herziening wordt gebruikt in de opdrachten die volgen.

    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

    Om het gemakkelijker te maken om bij te houden welke versie we gebruiken, hernoem je het gedownloade bestand om het versienummer weer te geven:

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

    Dit is natuurlijk optioneel, maar de onderstaande commando's gaan ervan uit dat je het bestand hebt hernoemd.

    Firmware extraheren

    Om bestanden binnen de firmware te kunnen wijzigen, moeten we de inhoud uitpakken in een tijdelijke map.
    De syntaxis van deze opdracht is:
    ./extract_firmware.sh FIRMWARE_IMAGE WERKENDIRECTORY
    In ons geval zou dit vertalen naar:

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

    Opmerking: de eerste keer dat u deze opdracht uitvoert, worden de mod-kit-hulpmiddelen op uw systeem gemaakt. dit gebeurt maar één keer en het kan even duren ... dus wees geduldig ...

    Pakketten installeren

    Nu de firmware is uitgepakt, kunnen we de pakketten daarop installeren.
    Over het algemeen is de procedure om het pakket en de afhankelijkheden ervan te downloaden in de vorm van een ipk-bestand uit de openWRT-repository. Na installatie installeer ze in de uitgepakte firmware met behulp van het meegeleverde script.

    Het knockd-pakket

    Gedetailleerde instructies voor het configureren en gebruiken van Knockd zullen in een toekomstig artikel worden beschreven, dus je kunt ervoor kiezen om deze stap voorlopig over te slaan of het te doen ter voorbereiding op de toekomst, omdat Knockd sowieso niet veel ruimte inneemt.

    Knockd is een daemon die luistert naar communicatiegebeurtenissen op de verbindingslaag voor sequenties en daarop reageert.
    Wat dit betekent, is dat je kunt dat het apparaat de daemon laat draaien, zelfs niet "luistert" op de poorten (een poortscan ziet ze niet als open) en laat het nog steeds iets doen wat je nodig hebt, vanaf een enkele opdracht helemaal omhoog naar een volledig script. Met deze techniek kunt u de server activeren om elke gewenste bewerking op afstand uit te voeren (via internet) zonder uw thuisnetwerk te ontmaskeren.

    Knockd heeft slechts één afhankelijkheidslijst, dus download het pakket en de afhankelijkheid ervan door het volgende uit te geven:

    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

    Installeer de "knock daemon" (knockd) ipk in de firmware:

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

    Installeer de "packet capture" (libpcap) ipk in de firmware:

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

    Omdat "knockd" kan worden aangeroepen met een alternatief configuratiebestand (hoe zal dit worden uitgelegd in een toekomstig artikel), is het niet nodig om een ​​andere bewerking uit te voeren en kunt u naar het gedeelte Firmwarebouw overslaan, als het alles is dat u wilde installeren.

    Het SSMTP-pakket

    Met het SSMTP-pakket kan uw router e-mailberichten verzenden, net zoals we hebben laten zien in onze procedure E-mailwaarschuwingen instellen bij Linux met behulp van Gmail of SMTP voor servers. We hebben je toen al beloofd dat we zullen laten zien hoe we dit moeten configureren voor DD-WRT en we zullen nu leveren.
    Dit is vooral handig als je scripts gaat maken op de router waarvan je via e-mail feedback op hun werking wilt ontvangen.

    De opzet van dit pakket is wat ingewikkelder dan op normale Linux-systemen vanwege de beperking die een ingebed systeem oplegt, dus haal diep adem ... klaar? .... laten we gaan… :)

    Download het pakket:

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

    Installeer de "ssmtp" ipk in de firmware:

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

    TLS-ondersteuning (optioneel)
    SSMTP geeft geen lijst van andere pakketten als afhankelijkheden, maar als u een smtp-gateway wilt gebruiken die TLS-verificatie vereist (d.w.z.. Gmail), moet je ook de openSSL-pakage installeren.
    Notitie: Er is een ENORM nadeel om dit later in de vorm van aanzienlijk minder ruimte op de router voor JFFS te doen. Dat wil zeggen, het openSSL-pakket neemt ongeveer 500K ruimte in beslag van uw totaal van 4MB (voor een normale niet-mega-ondersteunende router), samengaand tot dat de JFFS overhead en u zult ontdekken dat uw linkerzijde met maar een paar zeldzame blokken vrije JFFS-spatie (ongeveer 60 KB op WRT54GL).

    Omdat er nog steeds niet-TLS zijn waarvoor smtp-servers nodig zijn (meestal uw ISP's), raad ik aan even de tijd te nemen om te denken of u de TLS-gateway moet gebruiken.

    Als u hebt besloten om ondanks alle nadelen TLS-ondersteuning in te schakelen, downloadt u het openSSL-pakket:

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

    Installeer de "openSSL" (libopenssl) ipk in de firmware:

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

    configuraties
    Er is een beperking met het SSMTP-pakket, dat het niet mogelijk is om het op te roepen met een alternatief configuratiebestand.
    Omdat de firmware alleen-lezen is wanneer deze zich op de router bevindt, betekent dit dat we out-of-the-box alleen de configuratie van de firmware in de firmware kunnen coderen.
    Wat als we niet alle stappen voor het wijzigen van de firmware willen doorlopen, alleen maar om de e-mailinstellingen te wijzigen? (bijvoorbeeld een wachtwoordwijziging).

    Daartoe hebben zowel Jeremy (de maker van de firmware-mod-kit) als ikzelf de conclusie getrokken (onafhankelijk als ik dat nederig zou toevoegen) dat de enige manier om dit te doen zou zijn om:

    1. Maak de locatie van de configuratiebestanden waarnaar het ssmtp-pakket verwijst naar de alleen-lezen locatie onder etc, naar de tmp-map waarnaar tijdens runtime kan worden geschreven.
    2. Maak een script dat dynamisch de configuraties genereert op basis van NVRAM-variabelen bij het opstarten.

    Om dit te bereiken, zijn enkele extra stappen vereist ...

    Symlink de ssmtp-configuratiemap
    Zoals hierboven uitgelegd, moeten we de / Etc / ssmtp locatie op de router, wijs naar de / tmp directory als de enige beschrijfbare plaats die we tijdens runtime op de router hebben. Hiertoe verwijdert u de ssmtp-map die door het ipk-installatieprogramma is gemaakt:

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

    Maak een nieuwe symbolische link die de / etc / ssmtp op het root-bestandssysteem van de router wijst om naar / tmp / etc / ssmtp te verwijzen als een absoluut pad:

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

    Notitie: Hoewel dit op dit moment onlogisch lijkt, omdat we de configuratiemap van het pakket naar een locatie buiten de werkdirectory van de firmware-aanpassingskit wijzen, kan ik u verzekeren dat dit er vanuit het oogpunt van routers tijdens runtime helemaal goed uitziet..

    Een init-script
    Hoewel het volledig mogelijk is om dit script niet in de firmware te injecteren en het later als opstartscript uit te voeren, vind ik het gepast om het hier te plaatsen, alleen als voorbeeld voor toekomstig gebruik.
    Oorspronkelijk maakte Jeremy het script op maat van iemands verzoek, later paste ik het aan en verbeterde het om meer compatibel te zijn met DD-WRT en syslog rapportage.

    Maak het nieuwe init (opstart) -script:

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

    Opmerking: u kunt een andere editor gebruiken, ik gebruik vi omdat deze consistent is met wat beschikbaar is op de router ...
    Maak hiervan de inhoud:

    #! / Bin / sh
    #
    # title: ssmtp_nvram.sh
    # auteur: Jeremy Collake en Aviad Raviv
    # site: http://www.bitsum.com, http://howtogeek.com
    #
    # script om configuratiebestand te maken van nvram vars.
    # werkt voor elk configuratiebestand dat gebruikt
    # var = paren van het waardetype.
    #
    # gebruikt voorvoegsels voor nvram-variabelen.
    #
    # d.w.z..
    # ssmtp_hostname = iets
    # vertaalt naar ssmtp.conf
    # hostname = iets
    #
    logger_func ()

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

    logger_func "########### Startte de SSMTP init run ###########"
    logger_func "De map etc in / tmp maken"
    [! -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 "$ CONFIG_FILE genereren voor pakket $ PACKAGE_NAME"
    #echo $ 0: $ CONFIG_FILE genereren voor pakket $ PACKAGE_NAME
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE
    echo "# automatisch gegenereerd op basis van nvram met $ 0" >> $ CONFIG_FILE
    echo "#" >> $ CONFIG_FILE

    als [-z "'nvram show | grep ssmtp'"]
    dan
    logger_func "Het lijkt erop dat u de NVRAM-variabelen die nodig zijn om het conf-bestand aan te maken niet hebt ingesteld"
    logger_func "** Overweeg ** om deze opdrachten te gebruiken in uw opstartscript:"
    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 = gebruikersnaam"
    logger_func "nvram set ssmtp_AuthPass = wachtwoord"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "maak de NVRAM-variabelen en voer het init-script opnieuw uit of start opnieuw op om de instellingen van kracht te laten worden."
    exit 0
    fi

    ################################################## #########
    #
    # Hoofdlus
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed" $ SED_COMMAND ""
    voor i in $ CONFIG_VARS; do
    echo $ i >> $ CONFIG_FILE
    gedaan

    ################################################## #########
    #
    # sanity check
    #
    als [ ! -f "$ CONFIG_FILE"]; dan
    # echo "$ 0: ERROR - kon $ CONFIG_FILE niet maken. Misschien is er geen symink / etc / XXXX -> / tmp / etc / XXXX?"
    logger_func "ERROR - kon $ CONFIG_FILE niet maken. Misschien is er geen symink / etc / XXXX -> / tmp / etc / XXXX?"
    fi
    logger_func "########### De SSMTP init run ########### is voltooid"

    Maak het uitvoerbaar:

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

    Let op de wachtende variabelen van NVRAM in het script, het is onze verantwoordelijkheid om hen iets te geven om mee te werken nadat we onze aangepaste firmware op de router hebben geïnstalleerd.

    Bouw de gewijzigde Firmware

    Nu alles op zijn plaats is, is het tijd om de gewijzigde firmware opnieuw te verpakken in een gecomprimeerd binair getal dat we kunnen flashen naar de router.
    De scriptsyntaxis van "build.sh" is:
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    Om dit te doen gebruiken we het bijgeleverde script, dus geef het volgende op:

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    Nadat de "build" -bewerking is voltooid, wachten er verschillende firmwareafbeeldingen om in de "output" -directory te worden gebruikt.

    U kunt nu het bestand "custom_image_00001-generic.bin" naar uw router flashen zoals u normaal gesproken een DD-WRT-firmware zou doen.

    Notitie: Vergeet niet om te herstellen naar "fabrieksinstellingen" vóór, tijdens en net na de firmwareflits.

    Volg flitsstappen

    Omdat we het SSMTP-pakket hebben laten zoeken naar NVRAM-variabelen om het ssmtp-configuratiebestand te genereren, moeten we nu de ontbrekende informatie aanleveren..
    We zullen dit bereiken door de web-GUI "Run commands" -functie te gebruiken.

    Ga naar de web-GUI -> "beheer" -> "commando's" -> plak in het tekstvak het volgende:

    nvram stel [email protected] in
    nvram instellen ssmtp_mailhub = smtp.gmail.com: 587
    nvram stel [email protected] in
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = uw-gmail-gebruikersnaam (zonder de @ gmail.com)
    nvram set ssmtp_AuthPass = u-gmail-wachtwoord
    nvram set ssmtp_FromLineOverride = YES
    nvram commit

    Vervang de tekst na het gelijk (=) teken, met uw actuele informatie, en druk dan op "Uitvoeren commando's".
    Notitie: als u een normale, niet-TLS-gebruikende, smtp-server gebruikt, is de te gebruiken poort 25 in plaats van 587.

    Nu de SSMTP-informatie klaar is voor gebruik, moet u het init-script aanroepen. Dus je kunt de router herstarten, of dit in het tekstvak "commands" plakken:

    /etc/init.d/S80ssmtp

    Druk vervolgens opnieuw op "Opdrachten uitvoeren".
    De uitvoer van deze opdracht moet er als volgt uitzien:

    Test dat u e-mail kunt verzenden
    Plak dit opnieuw in het tekstvak "commands" met de volgende opdracht met uw e-mailadres:

    echo "testkroes met e-mail 123 qwe" ssmtp -vvv [email protected]

    Druk vervolgens opnieuw op "Opdrachten uitvoeren".
    Omdat we de optie -vvv gebruiken voor extra breedsprakigheid, moet de uitvoer van deze opdracht er als volgt uitzien:

    Als alles goed is gegaan, ontvangt u binnen enkele seconden de test-e-mail.

    We hopen dat je deze informatie kunt gebruiken om de limieten van je thuisrouter nog verder te duwen dan je voor mogelijk had gehouden en je hebt nu echt controle over je thuisrouter en DD-WRT ...


    Linux breidt het leven uit, Linux vergroot het bewustzijn ... Linux is essentieel voor pakketreizen