Vi har redan visat hur du modifierar din hemrouter med DD-WRT-alternativ firmware 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 gjort det, se till och kolla in de två tidigare artiklarna i serien:
- Förvandla din hemrouter till en superdriven router med DD-WRT
- Hur du kan öka din Wi-Fi-nätverkssignal och öka räckvidden med DD-WRT
Förutsatt att du känner till dessa ämnen, 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 sin router.
Översikt
Den här guiden ger en steg för steg översikt över hur du skapar din egen DD-WRT-firmware med modifieringar och tillägg med hjälp av " modifieringspaket för firmware “.
Med firmware-modifieringssatsen kan man göra modifieringar på firmware utan att kompilera den från källan. Att göra ändringar på detta sätt, med hjälp av de medföljande skripten, blir en enkel fråga att ladda ner, ersätta och ta bort vissa filer.
Den mest dominerande anledningen att använda den här metoden är att DD-WRTs stöd för Openwrt IPKG-paket har flyttats mot routrar som har hårddiskar (via USB), vilket gör mod-kit till det enda konsekventa sättet att installera IPKG-paketen framgångsrikt i fall där en HD inte är tillgänglig. Dessutom har den här metoden den extra fördelen att du befrias från JFFS-beroendet för paketinstallation, vilket för routrar med endast 4 MB flash är ett verkligt problem.
Mål
Medan instruktionerna för denna procedur finns detaljerade på DD-WRT wiki och på utvecklarens webbplats , vi strävar efter att göra den här guiden till en kopiera och klistra in procedur som alla kan använda för att uppnå följande mål:
- Installera knockd-paketet och dess beroenden.
-
Installera ssmtp-paketet med NVRAM-baserade genererade konfigurationer.
- Valfritt med stöd för TLS smtp (aka Gmail support).
När du har följt denna procedur bör det vara relevant enkelt att anpassa den för andra paketinstallationer.
Varning
:
Trampa lätt ... kom ihåg att felaktig användning av modifikationssatsen kan ge dig en router som behöver
avstängning
(som i sin tur blir det till en
värdelös tegelsten
). Men om du är en sann nörd prenumererar du förmodligen på ideologin som,
den som kan förstöra en sak, kontrollerar en sak
, och bara sanna nördar gör det
Förutsättningar
- Med hjälp av denna procedur kan tegel din router, som i gör din router oanvändbar, vi tar inget ansvar för skador som kan orsakas direkt eller på annat sätt på grund av användningen av nedanstående procedurer.
- Denna procedur utfördes på Debian-baserade system (Lenny, Squeeze och Mint) och instruktionerna nedan förutsätter att du också använder ett.
- Denna procedur rekommenderas endast för personer som har erfarenhet av att blinka sin router med DD-WRT, med alla förutsättningar, försiktighetsåtgärder och begränsningar som gäller för deras hårdvaruinstallation. ett bra ställe att börja skulle vara vårt Förvandla din hemrouter till en superdriven router med DD-WRT guide.
- Din router måste stödja åtminstone “mini” -versionen av DD-WRT.
- 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.
Uppstart
Installera nödvändiga paket
Firmware-modifieringssatsen har vissa beroenden för att kompilera och arbeta. För att installera / uppdatera dem på en gång, ge detta kommando 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 hämta satsen från det officiella SVN:
mkdir firmware_mod_kit
cd firmware_mod_kit
svn kassa http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
cd firmware-mod-kit-read-only / trunk /
Ladda ner en firmware att arbeta med
Det första du bör tänka på är vilken version du vill använda?
En tumregel är: när du är osäker, använd “mini”. Detta beror på att så länge din router stöder åtminstone "mini" -versionen, använder du den alla de mest använda funktionerna utan någon uppblåsning. vilket ger både utrymme för procedurerna och till och med lite JFFS-utrymme för
andra användningar
i de flesta fallen.
När du väl har bestämt dig för en version rekommenderas att du använder den senaste versionen av den fasta programvaran som finns, eftersom de tenderar att ha många felkorrigeringar jämfört med deras "stabila" motsvarigheter.
Vid skrivningstidpunkten var den senaste ”03-17-11-r16454” och denna version 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 lättare 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 naturligtvis valfritt, men kommandona nedan antar att du har bytt namn på filen.
Extrahera firmware
För att kunna ändra filer i firmware måste vi extrahera innehållet i en tillfällig katalog.
Syntaxen för detta kommando ä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 en stund ... så ha tålamod ...
Installerar paket
Nu när firmware har extraherats kan vi installera paketen till den.
I allmänhet är proceduren att ladda ner paketet och dess beroenden i form av en ipk-fil från
openWRT-förvar
. När du väl har laddat ner installerar du dem i den extraherade firmware med det medföljande skriptet.
Det knäppta 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 som en förberedelse för framtiden eftersom Knockd inte tar mycket utrymme på något sätt.
Knockd är en demon som lyssnar på kommunikationshändelser vid länklagret för sekvenser och sedan agerar på dem.
Vad detta betyder är att du kan låta enheten köra daemon inte ens "lyssna" på portarna (en portavsökning ser dem inte som öppna) och ändå få den att göra något du behöver, från ett enda kommando
långt upp
till ett fullständigt skript.
Använda denna teknik
du kan utlösa servern för att utföra alla typer av operationer 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 i firmware:
./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/
Installera "packet capture" (libpcap) ipk i firmware:
./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/
Eftersom "knockd" kan åberopas med en alternativ konfigurationsfil (hur kommer det att förklaras i en framtida artikel), finns det inget behov av att utföra någon annan åtgärd och du kan hoppa till avsnittet om fast programvara, om det är allt du ville installera.
SSMTP-paketet
SSMTP-paketet gör det möjligt för din router att skicka e-postmeddelanden precis som vi visade i vår
Så här ställer du in e-postvarningar på Linux med Gmail eller SMTP
för servrar. Vi lovade dig då att vi kommer att visa hur du konfigurerar detta för DD-WRT och vi kommer nu att leverera.
Detta är främst användbart om du ska skapa skript på routern som du vill få feedback om hur de fungerar via e-post.
Det här paketets inställning är lite mer komplex än på normala Linux-system på grund av den begränsning som ett inbäddat system innebär, 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 i firmware:
./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/
TLS-stöd (valfritt)
SSMTP listar inte några andra paket som dess beroenden, 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 ENORM
nackdel
att göra detta i form av betydligt minskat utrymme på routern för JFFS senare. Det vill säga att openSSL-paketet tar cirka 500K utrymme från din totala 4MB (för en normal icke "mega" -stödrouter), sammansatt till JFFS-omkostnaderna och du kommer att upptäcka att din vänster med, men ett värdefullt få, block av ledigt JFFS-utrymme (cirka 60 kB på WRT54GL).
Eftersom det fortfarande finns icke-TLS som kräver smtp-servrar där ute (vanligtvis din Internetleverantör), föreslår jag att du tar en minut att tänka om du verkligen behöver använda den TLS som kräver gateway.
Om du har beslutat 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 i 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 åberopa det med en alternativ konfigurationsfil.
Eftersom den fasta programvaran är skrivskyddad när den är på routern betyder det att vi direkt kan konfigurera hårddisken till firmware.
Men vad händer om vi inte vill gå igenom alla steg för modifiering av firmware, bara för att ändra e-postinställningarna? (till exempel en lösenordsändring).
För detta ändamål nådde både Jeremy (skaparen av firmware-mod-kit) och jag själv (oberoende om jag ödmjukt kan tillägga) att det enda sunda sättet att göra detta skulle vara att:
- Gör konfigurationsfilernas plats som ssmtp-paketet pekar till den skrivskyddade platsen under etc, peka på tmp-katalogen som är skrivbar vid körning.
- Skapa ett skript som dynamiskt genererar konfigurationerna baserade på NVRAM-variabler vid start.
För att uppnå detta krävs ytterligare några steg ...
Symlink ssmtp-konfigurationskatalogen
Som förklarats 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örning. 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 på paketets konfigurationskatalog till en plats utanför firmware-modifikationssatsens arbetskatalog, kan jag försäkra er att detta ser helt bra ur routers synvinkel vid körningstid.
Ett init-skript
Även om det är helt möjligt att inte injicera detta skript i firmware och köra det som ett startskript senare, känner jag det lämpligt att lägga det här om bara som ett exempel för framtida bruk.
Ursprungligen skapade Jeremy skriptet skräddarsytt för någons begäran, senare justerade jag och förstärkte det för att vara mer kompatibelt med DD-WRT och syslog-rapportering.
Skapa det nya init-skriptet (startup):
vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Obs! Du kan använda en annan redigerare, jag använder vi eftersom det överensstämmer med vad som finns på routern ...
Gör detta till dess innehåll:
#! / bin / sh
#
# title: ssmtp_nvram.sh
# författare: Jeremy Collake och Aviad Raviv
# webbplats: http://www.bitsum.com, http://howtogeek.com
#
# skript för att skapa konfigurationsfil från nvram vars.
# fungerar för alla konfigurationsfiler som används
# var = värdetyppar.
#
# använder prefix för nvram-variabler.
#
# i.e.
# ssmtp värdnamn = 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-körning ############"
logger_func "Skapa etc-katalogen 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 "Skapar $ 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
ekot "# genereras automatiskt baserat på nvram av $ 0" >> $ CONFIG_FILE
eko "#" >> $ CONFIG_FILE
om [ -z "`nvram show | grep ssmtp`" ]
sedan
logger_func "Det verkar som att du inte har ställt in de NVRAM-variabler som krävs för att skapa conf-filen"
logger_func "** Överväg ** att använda dessa kommandon i ditt startskript:"
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 = användarnamn"
logger_func "nvram set ssmtp_AuthPass = lösenord"
logger_func "nvram set ssmtp_FromLineOverride = YES"
logger_func "skapa NVRAM-variablerna och kör om init-skriptet eller starta om för att inställningarna ska påverka."
avsluta 0
vara
###########################################################
#
# 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: FEL - kunde inte skapa $ CONFIG_FILE. Kanske finns det ingen symink / etc / XXXX -> / tmp / etc / XXXX?"
logger_func "FEL - kunde inte skapa $ CONFIG_FILE. Kanske finns det ingen symink / etc / XXXX -> / tmp / etc / XXXX?"
vara
logger_func "############ Avslutad SSMTP-init körning ###########"
Gör det körbart:
chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp
Notera NVRAM-väntningsvariablerna i skriptet, 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 packa om den modifierade firmware till en komprimerad binär som vi kan blinka till routern.
Skriptsyntaxen "build.sh" är:
./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY
För att göra detta använder vi det medföljande skriptet, så fråga:
./build_firmware.sh output_mini1 ./working_dir_mini1/
När "build" -operationen är klar kommer det att finnas flera firmwarebilder som väntar på att användas i "output" -katalogen.
Du kan nu blinka filen ”custom_image_00001-generic.bin” till din router som du skulle normalt ha en DD-WRT-firmware .
Notera : Glöm inte att återställa till "fabriksinställningar" före, under och direkt efter firmware-blixt.
Lägg upp blixtsteg
Eftersom vi fick SSMTP-paketet att leta efter NVRAM-variabler för att generera ssmtp-konfigurationsfilen måste vi nu förse den med den saknade informationen.
Vi kommer att åstadkomma detta med hjälp av webb-GUI-funktionen "Kör kommandon".
Gå till webb-GUI -> "administration" -> "kommandon" -> klistra in följande i textrutan:
nvram ställa in [email protected]
nvram ställa in ssmtp_mailhub = smtp.gmail.com: 587
nvram ställa in [email protected]
nvram set ssmtp_UseSTARTTLS = JA
nvram set ssmtp_AuthUser = ditt-gmail-användarnamn (utan @ gmail.com)
nvram ställa in ssmtp_AuthPass = du-gmail-lösenord
nvram set ssmtp_FromLineOverride = JA
nvram begå
Byt ut texten efter likhetstecknet (=) med din faktiska information och tryck sedan på "Kör kommandon".
Notera
: om du använder en vanlig, icke TLS-användare, är smtp-servern porten som ska användas 25 istället för 587.
Nu när SSMTP-informationen är redo att användas måste du anropa init-skriptet. Så du kan antingen starta om routern eller klistra in den i textrutan "kommandon":
/etc/init.d/S80ssmtp
Tryck sedan på "Kör kommandon" igen.
Utgången från det här kommandot ska se ut:
Testa att du kan skicka e-post
Klistra in detta igen i kommandot textrutan följande kommando med din e-postadress:
eko "testning av degel via e-post 123 qwe" | ssmtp -vvv [email protected]
Tryck sedan på "Kör kommandon" igen.
Eftersom vi använde -vvv-alternativet för extra information, bör utgången för det här kommandot se ut:
Om allt gick bra bör du få testmeddelandet inom några sekunder.
Vi hoppas att du kan använda den här informationen för att skjuta dina gränser för din hemrouter ännu längre än du trodde var möjligt och du nu verkligen styra din hemrouter och DD-WRT …
Linux förlänger livet, Linux utökar medvetandet ... Linux är viktigt för paketresor