Results 1 to 6 of 6

Thread: WL-500g custom firmware tutorial for beginners (norwegian)

  1. #1
    Join Date
    Nov 2004
    Location
    Trondheim, Norway
    Posts
    14

    WL-500g custom firmware tutorial for beginners (norwegian)

    Hi all.
    I'm starting a new thread in which I will post a tutorial I've been writing as I have played with Oleg's custom firmware on my WL-500g router.

    My experience with WLAN routers and Linux was to begin with at a bare minimum, so I guess the tutorial will be of most help to those other rookies out there..

    Unfortuantely the tutorial is written in norwegian only, and I'm very sorry I haven't had a chance to translate it to english yet!

  2. #2
    Join Date
    Apr 2004
    Location
    Netherlands
    Posts
    1,308
    Moved from Tutorials to Q&A

    Remarks:
    - There's no tutorial in your post.
    - If you post in the English forums please do so in English. Otherwise the topic will be removed.

    Please PM me when you're ready with your tutorial so it can be moved back...

  3. #3
    Join Date
    Nov 2004
    Location
    Trondheim, Norway
    Posts
    14

    Del 1

    Custom Firmware på Asus WL-500g
    Asus WL-500g er ein trådløs ruter for WLAN 802.11g. Ruteren administreres ved hjelp av eit web-grensesnitt noko som fungerer bra. Men noko som gjer at eg verkeleg begynnar å lika denne ruteren er at den faktisk kjører et enkelt Linux operativsystem. På nettsida http://oleg.wl500g.info/ kan ein finne uoffisiell FirmWare til WLAN-ruterar frå Asus, blant anna modellen WL-500g som eg har. Denne uoffisielle programvaren (thank you Oleg!) har ein rekke tilleggsfunksjonar i forhold til den offisielle firmwaren frå Asus. Det desidert viktigaste er at ein har mulighet for å logge på ruteren med Telnet og dermed få eit fullt funksjonelt kommandolinje grensesnitt mot Linux systemet. Grunnleggande funksjonar kan, som i den offisielle programvaren, settast opp via eit brukarvennleg Web-grensesnit, men for full nytte av programvaren må ein "fikle" litt i kommandolinje grensesnittet. Dette er ikkje bare enkelt, særleg for ein med svært liten Unix/Linux erfæring frå før slik som meg sjølv.
    Som ei huskeliste for meg sjølv, men også til hjelp for eventuelle andre likesinna som har lyst å prøva seg litt uten å bruke like mykje tid som eg har gjort, så har eg skrevet dette dokumentet med mine erfaringar.

    På den nemnde nettsida (http://oleg.wl500g.info/) finn ein litt forklaringar til programvaren, men forumet http://wl500g.info/ er ei svært god kilde til hjelp om Asus ruteren både med og uten Oleg sin FirmWare.
    Også på www.macsat.com og wiki.openwrt.org kan ein finne ein del informasjon.

    Fyrste gong eg begynte med Custom Firmware på ruteren så var det versjon 1.8.1.7-3. Seinare har eg imidlertid oppgradert fleire gonger, i forhold til det som er skrevet i dette dokumentet er den største forskjellen at eit heilt enkelt oppsett av f.eks. Samba kan gjerast via administrasjonsnettsidene.

    NYTT MARS 2006: Har nå oppgradert min Asus til custom firmware versjon 1.9.2.7-7c.

    Hardware

    Ruteren Asus WL-500g er basert på Broadcom 4710 plattforma, som bl.a. inkluderer ein MIPS32 processor på 125 MHZ, 2 stk. 8 MB SDRAM brikker (totalt 16 MB RAM altså) samt ei 4 MB Flash brikke.



    nvram

    Asus ruteren WL500g har ingen harddisk å lagre data på. Den har heller ikkje batteri til å kunne lagre noko data f.eks. på RAM-brikker. I staden brukes Flash-basert minne, som er ein type NVRAM - Non-Volatile Random Access Memory.
    Når det snakkes om NVRAM i samanheng med Asus ruteren så er det etter det eg har forstått dei siste 64K på Flash brikka som det refereres til. Her lagres diverse konfigurasjonsinformasjon i form av "navn=verdi"-par. I tillegg til å maninpulere nvram indirekte frå web-administrasjonssidene så har ruteren innebygd programmet nvram for å lese og skrive til flash-minnet "direkte".
    Kommandoen "nvram show" viser alt som er lagra i nvram for øyeblikket.
    For å lese ut ein spesiell variabel brukes "nvram get <variabel_navn>"
    For å lagre ein verdi på ein variabel brukes "nvram set <variabel_navn>=<verdi>" eventuelt "nvram set <variabel_navn>=<verdi1> <verdi2> ..." dersom variabelen kan ha fleire verdiar.
    Sletting av verdiar blir gjort med "nvram unset <variabel_navn>"

    Ved oppstart av ruteren så blir innholdet i nvram lest inn i RAM-minnet. Setting og sletting av verdiar i nvram med kommandoane ovanfor skjer i praksis først kun mot RAM, for å skrive endringane permanent i Flash brikka så må ein bruke kommandoen
    Code:
    nvram commit
    Frå fabrikken er det 65536 bytes ubrukt på cache, dette er utnytta av flashfs i Olegs programvare (sjå lenger ned).

    Custom firmware

    Asus har valgt å bruke eit Linux-system til å implementere sin ruterprogramvare. Kildekoden må då gjerast tilgjengelig som følge av GNU GPL. Dette gir selvfølgelig muligheter for driftige sjeler å "enkelt" gjere endringar i kildekoden. Ein slik person er Oleg I. Vdovikin. Han har tatt utgangspunkt i den offisielle programvaren frå Asus og utvida denne. Kildekoden hans kan hentast ferdig kompilert frå wl500g.info, og enkelt installerast i staden for Asus sin offisielle ved hjelp av Asus sin oppdateringsprogramvare for ruteren.

    I hovedsak kan ein seie at Oleg har gjort programvaren meir likt eit generelt Linux operativsystem. OpenWrt er eit liknande prosjekt, men der Oleg tar utgangspunkt i den offisielle åpne kildekoden frå Asus, så er OpenWrt eit prosjekt som står endå friare ved at det har bygd opp ein generell Linux distribusjon i miniatyr frå botn av. OpenWrt var fyrst laga for ruteren Linksys WRT54G, men har full støtte for ei rekke ulike ruterar og hardware - inkludert Asus WL-500g.
    Infomasjon om denne distribusjonen kan du finne her http://www.macsat.com/macsat/, og her (wiki) http://wiki.openwrt.org/.

    Eg har vald å bruke Oleg sin custom firmware på min ruter, og resten av dette dokumentet baserer seg på dette.

    Som med den offisielle firmware frå Asus så kan dei viktigaste instillingar settast opp via webgrensesnittet.
    Med Oleg sin "custom firmware" kan ein imidlertid gjere mykje meir spennande ting, typisk ved å logge på Asus-ruteren med ein Telnet-klient (slik som PuTTY - http://www.chiark.greenend.org.uk/~sgtatham/putty/) og bruke det som ein liten generell Linux server. Dei neste kapittela inneheld beskrivelsar av noko av det ein kan gjere, men her er ei kort oppramsing av dei viktigaste utvidelsane som Olegs custom firware gir er (henta frå www.macsat.com):


    • Telnet server: gir mulighet for å logge på ruteren med eit kommandolinje-grensesnitt (konsoll vindu).
    • SSH server: gir ein tilsvarande funksjonalitet som Telnet bare at kommunikasjonen er kryptert, noko som gjer det forsvarlig å åpne for pålogging på ruter-konsollet også frå internett.
    • RAW printing: Ein raskare og meir stabil printer server (HP JetDirect) enn det som er med som standard. Oleg har skrevet ein eigen printer guide (http://oleg.wl500g.info/printing/ for korleis sette dette opp.
    • Samba: Linux implementasjon av Windows filserver tjenesten. WL-500g ruteren har USB-port som standard, noko som gjer det enkelt å koble til eksterne USB-disker.
    • QoS: Gjer det mulig å gi ulik prioritet på ulik trafikk, f.eks. IP-telefon høgast prioritet, deretter web surfing og til slutt P2P filnedlasting.
    • ipkg: Linux pakkesystem (liknande som rpm o.l., men tilpassa integrerte systemer slik som i ein ruter er) som gjer det enkelt å installere egne programvare (typisk på ein ekstern USB disk). Meir om bruk av ipkg finnes her http://www.macsat.com/macsat/content/view/22/29/.


    Flash-filsystemet

    Ruteren får ved oppstart lasta opp eit filsystem frå Flash til RAM. Deretter vil all filaksess skje mot RAM. Via f.eks. Telnet kommandoar kan ein manipulere dette filsystemet, men ved neste restart av ruteren så vil standard filsystemet lastes på nytt - alle endringar går tapt.
    Frå fabrikken er det 65536 bytes ubrukt på Flash brikka. Oleg sin custom firmware inneheld eit eige program (eller konsept?) flashfs som er spesial designet for å manipulere persistente filer. Med dette kan ein lagre filer som ligg i RAM permanent ned til Flash minnet på ruteren.

    Argumenter til kommandoen flashfs er status, enable, disable, clear, load, list, save og commit.
    I utgangspunktet er det alle underkatalogar og filer under katalogen /usr/local/ som blir lagra permanent, men ein kan også lagre andre filer ved å lagre stien til dei i ei fil med namn .files i katalog /usr/local/. For å lagre alle filer under /usr/local (og eventuelle andre filer referert til i .files) bruker ein kommandoen flashfs med argument save, commit og enable. enable må berre gjerast ein gong for å aktivera filsystemet. Når flash filsystemet (flashfs) er aktivert, må ein For å gjere endringar permanente fyrst bruke flashfs save. Ein får då lista opp filene som er klargjort for lagring. Etter å ha kontrollert at alle ønska filer er med må ein også kontrollere at den totale størrelsen ikkje er større enn 65536 byte. I praksis blir dei filene i flash filsystemet lagt til fila /tmp/flash.tar.gz, som ein nå også kan kopiere f.eks. til ein USB-disk for backup.
    Først når ein skriv flashfs commit blir filene lagra permanent.

    Ved spesifikke hendelser vil ruteren leite etter nokre spesielle skriptfiler. I utgangspunket eksisterer ikkje desse, men dei kan opprettast og vil då bli kjørt på dei spesifikke hendelsene. Dette inkluderer skripta pre-boot, post-boot, post-firewall, post-mount og pre-shutdown (sjå www.macsat.com for meir beskrivelse).
    Den kanskje viktigaste av desse er post-boot. Dette er ei skriptfil som skal ligge i katalogen /usr/local/sbin/ og som blir kjørt til slutt i boote-prosessen. Dette er plassen å starte tjenester du vil alltid skal kjøre, f.eks. Web server, Samba server, FTP server osv.
    Dersom ei slik fil ikkje er laga før kan du gjere det vha. desse kommandoane:
    Code:
    mkdir -p /usr/local/sbin/
    echo "#!/bin/sh" >> /usr/local/sbin/post-boot
    chmod +x /usr/local/sbin/post-boot

  4. #4
    Join Date
    Nov 2004
    Location
    Trondheim, Norway
    Posts
    14

    Del 2

    USB-disk
    Koblar du til ein USB-disk til ruteren skal denne bli automatisk montert på katalog /tmp/harddisk/. Dersom den ikkje blir det er det enklaste å prøve å ta ein restart av Asus-en vha. kommandoen reboot, eller rett og slett å dra ut ledningen. Dersom du av ein eller annan grunn vil montera USB-disken manuelt kan det gjerast på denne måten:
    Code:
    insmod scsi_mod
    insmod sd_mod
    insmod usb-storage
    mkdir /tmp/harddisk
    mount -t vfat -o sync,rw,noatime /dev/discs/disc0/part1 /tmp/harddisk
    Koden over er for disk med FAT32-filsystem. Ruteren støtter også NTFS, men då kun med lesetilgong! For meir om USB-disk saman med Asus-ruteren, bl.a. partisjonering og formattering, og også litt om oppsett av Samba, SSH og diverse, sjå dette forum-innslaget: http://wl500g.info/showthread.php?t=1984.


    Oppgradere firmware

    For å vere sikra at alt blir som det skal likar eg å starte frå blanke ark, altså med standard oppsett av ruteren med den nye firmware versjonen. Før eg startar lagrar eg alle filer eg har lagt inn sjølv, konfigurasjonsfiler, html-sider o.l, på ein USB-disk. Etter oppgradering koblar eg USB-disken til ruteren igjen og kopierer inn dei filene eg framleis vil ha.

    Ein kanskje endå meir elegant metode er å bruke programmet PSCP som er del av PuTTY-"pakken" (http://www.chiark.greenend.org.uk/~sgtatham/putty/. Med dette kan ein overføre filer mellom din PC og ruteren vha. SCP protokollen, heilt enkelt!
    For eksempel for å kopiere ei fil frå ruteren, f.eks. fila /usr/local/sbin/post_boot, til PC-en så kan du bruke følgande kommando:
    Code:
    pscp -scp admin@10.0.0.3:/usr/local/sbin/post_boot ./ein/katalog/på/PCen/
    Eller omvendt, for å kopiere ei fil frå PC-en til katalogen /usr/local/etc/ på ruteren:
    Code:
    pscp -scp ./ein/katalog/på/PCen/fila.txt admin@10.0.0.3:/usr/local/etc/
    Ein enkel metode for å ta kopi av heile flash filsystemet frå ruteren er som følger:
    • Logg inn på ruteren via Telnet, og kjør kommandoen kommandoen "flashfs save"
    • Det skal nå ligge ei fil /tmp/flash.tar.gz på ruteren som inneheld alle filer på /usr/local/ og eventuell filer lista i fila /usr/local/.files.
    • Gå så til eit DOS-vindu på PC-en du vil kopiere til, og bruk SCP til å kopiere fila: "pscp -scp admin@10.0.0.3:/tmp/flash.tar.gz ./ein/katalog/på/PCen/"
    • Du skal nå ha ein full backup av flash filsystemet, det vil seie av alle skript og tilpassingar som du har laga.

    Kanskje måten eg har gjort det på uansett har vore veldig tungvint. Eg har lest at filene som eg har lagra i flash filsystemet ikkje blir sletta ved verken resetting til standard eller oppgradering av firmware ("A firmware upgrade will NOT delete the files, but it WILL disable it"). Alt som skal til er å kjøre kommandoen flashfs enable igjen, då skal alt vere der!
    Dette har eg ikkje testa ut skikkelig endå, men det skal eg gjere neste gong eg skal oppgradere!

    Her er ei uansett huskelista som eg brukar når eg oppgraderer:

    • Last ned siste firmware frå fila http://oleg.wl500g.info/ til din PC (siste versjon eg har installert ligg på fila WL500g-1.9.2.7-7c.zip). Pakk ut trx-fila (WL500g-1.9.2.7-7c.trx) som er inni den nedlasta Zip-fila.
    • Sørg for at programvare-verktøyet til ruteren ("Asus Utilities") er installert på PC-en. Siste versjon kan lastast end frå Asus sine supportsider (Klikk her for å kome direkte til nedlastingssidene).
    • Gå inn på ruterens administraterings-webside (hjå meg er addressa "http://10.0.0.3").
    • Gå inn på menyen "IP Config", skru av automatisk IP ("Get IP Automatically?" settes til "No").
    • Set IP-adressa til å vere 192.168.1.1. Dette er viktig då dette er standard IP-adresse ruteren har frå fabrikken og som den får ved "restore factory defaults" som skal utførast seinare!
    • Velg "Lagre og restart"
    • Deaktiver det trådlause nettverket (WLAN) på PC-en.
    • Koble Asus-ruteren til PC-en vha. ein vanleg nettverkskabel.
    • Gå inn i instillingane til det lokale nettverket på PC-en og sørg for at den ikkje har automatisk IP men en fast IP-adresse i samme subnett som ruteren, f.eks. 192.168.1.2.
    • Start opp Asusen i oppdateringsmodus. Dette gjer ein ved å skru av Asus ruteren (trekk ut ledningen). Bruk ein penn el.l. til å holde inne "restore defaults" knappen bak på boksen mens du set inn igjen ledningen. PWR-lyset skal då blinke for å indikere at den er i oppdateringsmodus.
    • Bruk programmet "Firmware Restoration" til å oppdatere ruteren med den siste firmware (altså den nedlasta trx-fila, f.eks. "WL500g-1.9.2.7-7c.trx"). Når opplastinga er ferdig (har nådd 100%) så vil det bare stå noko sånt som "Wait for the router to reboot!". Vent derfor ei kort stund og følg med på statuslysa på ruteren til det ser ut som den er på (PWR skal lyse konstant).
    • Set ruteren tilbake til fabrikkinstillingane ("Reset factory defaults") ved å holde inne "Restore"-knappen bak på ruteren mens ruteren er på til PWR-lyset begynner å blinke (skal skje etter ca. 5 sekund).
    • Gå inn på ruterens administrator-webside - nå på adresse "http://192.168.1.1". Logg på med brukernavn og passord "admin"
    • Sett opp ruteren slik du vil ha den Eg set den opp som følger:
    • Hopp over "Quick Setup"
    • I meny "System Setup", "Operation Mode": Velg "Access Point".
    • I meny "IP Config", "LAN": Velg manuell IP-adresse og set IP-adressa slik den var før - f.eks. IP-address: 10.0.0.3, Subnet mask: 255.255.255.0, default gateway: 10.0.0.1.
    • Du må nå også endre IP-adressa lokalt på PC-en slik at den er på same subnett som den nye adressa til ruteren, f.eks. IP 10.0.0.5.
    • I meny "Wireless": Sett opp WLAN-instillingene slik dei var før.
    • Gå gjennom administrasjonsweb-sidene og sett opp den grunnleggande konfigurasjonen slik du vil ha den.
    • Til slutt må du bruke PuTTY og eventuelt også PCSP for å legge inn igjen alle skript og egentilpassa filer på flash filsystemet.


    Applikasjonar og tilpassingar

    Over til litt meir kjekke ting; nemlig oppsett av serverapplikasjonar for SSH, FTP, Samba og HTTP.
    For annan hjelp til dette så er forumet ei god kilde. Sjå f.eks. desse trådane: http://wl500g.info/showthread.php?t=1984 og http://wl500g.info/showthread.php?t=2556.

    Eg har min WL500g min satt opp som aksesspunkt, altså eg har ein annan ruter (ADSL-modemet frå Nextgentel) som står som hoved ruter bl.a. med DHCP og NAT. Ein del av funksjonaliteten til WL500g-boksen er forbeholdt ruter-modusen, men ein del kan ein likevel "lure til" i aksesspunkt modus frå konsoll vinduet. Med ruteren satt opp som, ja, nettopp ruter så vil kanskje noko av tilpassingane mine kunne gjerast enklare.

    Systemklokka

    Ein ting det kan sjå ut med ruteren i aksesspunkt modus er at den ikkje kan slå opp adresser på navn. F.eks. ping mot www.google.com virkar ikkje, men ping mot ei gitt IP-adresse virkar!

    Ruteren har ikkje batteri og har derfor ikkje ei intern klokke. Den bruker NTP ("Network Time Protocol", http://www.ntp.org/) til å synkronisere mot tidsserverar på nettet ved oppstart. Standard NTP server er time.nist.gov, men som sagt så ser det ikkje ut til at ruteren virkar med adresser i aksesspunkt modus. Eg fekk iallefall alltid 01.januar 1970 som system dato etter ein restart av ruteren. Løysninga var å angi NTP server i form av IP adresse. time.nist.gov svarer til IP adressa 192.43.244.18. Eg måtte forøvrig også angi tidssone GMT+2 for å få korrekt klokke.

    Det same oppsettet av NTP kan også gjerast frå kommandolinje-grensesnittet, ved å bruke nvram kommandoen:

    Code:
    nvram set ntp_server0=192.43.244.18
    nvram set ntp_server1=192.43.244.18
    nvram set ntp_servers=192.43.244.18
    nvram set ntp_server=192.43.244.18
    nvram set time_zone_x=GMT1
    nvram commit
    reboot
    SSH-server

    Oleg sin firmware inkluderer i tillegg til Telnet deamon også ein SSH deamon, som implementerer SSH v2 med støtte for kryptert forbindelse med både RSA og DSS nøklar. Dette gjer det litt tryggare å åpne for aksess frå eksterne maskiner, hugs då å åpne port 22 i brannmuren og NATe denne til Asus-ruteren sin lokale IP. I motsetning til Telnet kjører ikkje SSH deamon som standard i firmwaren, men kan enkelt startast på denne måten:

    Code:
    mkdir -p /usr/local/etc/dropbear
    dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
    dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
    Du kan nå bruke f.eks. PuTTY til å logge på via SSH, og dersom dette ser ut til å virke kan du gjere slik at SSH blir starta automatisk. Sørg då for at kommandoen "dropbear" er med i fila post-boot. Dette kan gjerast slik (forutsett at fila er oppretta slik beskrevet over):

    Code:
    echo "dropbear" >> /usr/local/sbin/post-boot
    Til slutt må ein sjølvsagt lagre endringane til FlashFS:

    Code:
    flashfs save
    flashfs commit

  5. #5
    Join Date
    Nov 2004
    Location
    Trondheim, Norway
    Posts
    14

    Del 3

    FTP-server

    FTP støttes også av den offisielle firmware frå Asus og kan også med Oleg sin FirmWare settast enkelt opp via web-grensesnittet. Her kjem litt meir beskrivelse av FTP-programvaren og korleis ein kan gjere meir avansert konfigurering av denne. For å få tilgong til FTP frå internett må ein åpne port 20 og 21 og NATe desse til Asus-ruteren sin lokale IP.

    Programvaren inkluderer programmet stupid-ftpd som gjer det mulig å aksessere ein tilkobla USB-disk vha. FTP. Dette kan settast opp via det tradisjonelle web-grensesnittet mot ruteren. Avhengig av rettigheter får då brukerane tilgong til katalogane ftp_pub og ftp_priv på disken. Dersom ein vil gjere litt meir avanserte ting kan dette gjerast via Telnet mot ruteren. Konfigurasjon til stupid-ftpd er definert av fila /tmp/stupid-ftpd.conf. Problemet er at denne blir automatisk oppretta når stupid-ftpd blir starta. Det er difor ikkje nok å berre lagre ei egendefinert stupid-ftpd.conf-fil her, då den vil bli overskrevet neste gong stupid-ftpd blir starta. Ei løysning her er å lagre ei eiga stupid-ftpd.conf-fil ein annan stad, f.eks. under /usr/local/etc/stupid-ftpd, og erstatte /tmp/stupid-ftpd.conf-fila så snart denne vert oppretta. Dersom ein skal starte FTP-deamon automatisk i oppstarten av ruteren må ein legge inn kode i skriptet kalla post-boot.

    Fyrst og fremst bør ein "enable" FTP i web-grensesnittet. I utgangspunktet skal all konfigurering av brukerar og liknande gjerast "manuelt", men for sikkerhets skyld bør ein absolutt "disable" tilgong for anonym brukar via web-grensesnittet! Det kan også vere greit å disable tilgong for admin-brukar og elles ikkje opprette nokon brukerar. På denne måten står ikkje FTP-serveren vidopen sjølv om kopieringa av vår egendefinerte stupid-ftpd.conf skulle feile.
    Ein er så klar til å legge inn kommandoar i post-boot som kopierer den egendefinerte stupid-ftpd.conf til /tmp/ og som restartar stupid-ftpd. Eit problem er at det i oppstarten tek litt tid før USB-disken blir montert og før stupid-ftpd blir starta. Kopierer ein si eiga stupid-ftpd.conf til /tmp for tidlig risikerer ein at denne blir overskriven likevel. Ein må difor legge inn ein forsinkelse i post-boot. Ein kan vente til fila /tmp/stupid-ftpd.conf finnes, og då kan ein kopiere si egendefinerte conf-fil til /tmp og restarte stupid-ftpd. Følgande kode kan leggast til post-boot skriptet, dette ventar i opp til 30 sekund:

    Code:
    i=0
    running=0
    while [ $i -le 30 ]; do
            if [ -e /tmp/stupid-ftpd.conf ] ; then
                    killall stupid-ftpd
                    cp /usr/local/etc/stupid-ftpd/stupid-ftpd.conf.aon /tmp/stupid-ftpd.conf
                    stupid-ftpd
                    break
            fi
            sleep 1
            : $((i = $i + 1 ))
    done
    Eksempel på ei stupid-ftpd.conf fil vises nedenfor. Viktige ting her er "serverroot" som definerer rotkatalogen for ftp-serveren. Set ein denne til "/" vil ein faktisk kunne få tilgang til heile ruteren sitt filsystem via FTP! Det neste viktige er "user". Under er det definert ein brukar med brukernavn "boller" og passord "brus". Denne skal få tilgang til katalogen Musikk (denne katalogen er relativt "serverroot" som under er definert som rotkatalogen til USB-disken). Talet 3 definerer at denne brukaren kan logge seg på 3 samtidige sesjonar (sjå for øvrig "maxusers" som definerer det totale talet på samtidige brukerar på FTP-serveren). DM definerer rettighetene

    Code:
    mode=daemon
    serverroot=/tmp/harddisk
    changeroottype=real
    motd=/tmp/stupid-ftpd.motd
    byemsg=/tmp/stupid-ftpd.bye
    banmsg=You have no permission
    log=/tmp/stupid-ftpd.log
    port=21
    maxusers=3
    login-timeout=120
    timeout=240
    user=boller brus /Musikk/ 3 DM
    Brukarane defineres på følgande format: "user=brukernavn passord rotkatalog-relativt-severroot max-login rettigheter". Dei mulige rettigheterene er: A (admin / Read&Write&Erase), - (View), DM (Read Only) og DUM (Read&Write). Nokre eksempel er:
    Anonym bruker : user=anonymous * // 0 A
    Admin bruker : user=admin _DITT_ADMIN_PASSORD_ // 0 A
    Privat bruker : user=god jul /ftp_pvt/privateuser/ 7 A
    Vise bruker : user=god jul /ftp_pub/ 8 -
    Lese bruker : user=god jul /ftp_pub/ 9 DM
    Les/skriv-bruker : user=god jul /ftp_pub/ 10 DUM
    Les/skriv/slett-bruker : user=god jul /ftp_pub/ 11 A

    Samba

    Samba (www.samba.org)gir mulighet for å koble USB-disk til ruteren og aksessere den frå ein lokal PC som ein nettverksdisk. Enkel støtte for Samba er inkludert i den siste firmware (1.8.1.7-3) men det står at: "the samba is totally unsupported, use on your own risk!" Eg har ikkje prøvd funksjonen så lenge, men foreløbig ser det ut til å virke greit. For å få til Samba-støtte må ein gjere dette:
    - Definer et "host name" ved å velge menyen IP-config i webgrensesnittet til ruteren.
    - Legg til dette namnet til fila /etc/hosts og sørg for at den er med i /usr/local/.files
    Code:
    echo /etc/hosts >> /usr/local/.files
    - Samba konfigureres med fila etc/smb.conf
    Code:
    [global]
            workgroup = WORKGROUP
            guest account = nobody
            security = share
            browseable = yes
            guest ok = yes
            guest only = yes
            log level = 1
            max log size = 100
            encrypt passwords = no
            dns proxy = no
    [share]
            path = /tmp/harddisk/
    [share$]
            path = /tmp/harddisk/
            writable = yes
            force user = root
            browseable = no
    Det som er vist ovanfor er at det opprettes to nettverkskatalogar, ein med namn "share" med kun lesetilgong og ein skjult med namn "share$" som ein også kan skrive på. Begge peiker på rota av USB-disken og tilhøyrer arbeidsgruppa "WORKGROUP" (bør endres slik at den er det same som PC-en).
    - Sørg for at smb.conf tas med i flash, dvs er med i fila /usr/local/.files:
    Code:
    echo /etc/smb.conf >> /usr/local/.files
    - legg til /usr/sbin/smbd -D og /usr/sbin/nmbd -D i fila /usr/local/sbin/post-boot for å starte Samba med NetBIOS (for å kunne aksessere via namn - det definerte "host name") når ruteren startar. Dette kan gjerast slik:
    Code:
    echo "/usr/sbin/smbd -D" >> /usr/local/sbin/post-boot
    echo "/usr/sbin/nmbd -D" >> /usr/local/sbin/post-boot

    Web-server

    Ruteren inkluderer ein webserver som kjører administrasjonssidene. I tillegg kan ein bruke busybox_httpd til å starte ein eigen webserver. Ei utfordring då er at port 80 allerede er brukt opp. Dersom ruteren står bak ein annan ruter/brannmur, f.eks. Nextgentel ADSL ruter, kan ein bruke denne til å rute frå port 80 til ein annan port som ein då kan bruke internt. Slik oppsettet blir beskrevet nedanfor blir ein web-server starta på Asus-ruteren som tek i mot forespørslar på port 8080. Netopia-ruteren frå Nextgentel blir satt opp til å rute alle forespørsler frå internett på port 80 til Asus-ruteren sin port 8080. Frå utsida av brannmuren kan ein då aksessere den nye webserveren uten å tenke på portnummer (f.eks. http://per.dyndns.org). Innafor brannmuren kjem ein til administrasjonssidene dersom ein berre bruker ruteren si lokale ipadresse (f.eks. http://10.0.0.3). For å få tilgang til mine websider innafrå må ein spesifisere port 8080 (f.eks. http://10.0.0.3:8080), eller ein kan sjølvsagt bruke den eksterne IP-adressa (kan finnast på sida http://www.whatismyip.com) slik at forespørselen går ut forbi brannmuren før den kjem inn igjen til Asus-ruteren.
    For å få til aksess på navn, slik som "http://kongeside.homeip.net", i staden for IP-adresse kan ein opprette såkalt "dynamic DNS". Meir om dette i neste kapittel.

    For små websider kan ein lagre dei direkte i ruteren, men pass på at størrelsen på flash-fila ikkje overstig 65536 byte!
    - Opprett ein katalog under /usr/local der html-filene skal ligge, f.eks. /usr/local/etc/httpd/wwwroot.
    - Filene kan leggast inn her ved å lagre dei på ein USB-disk, koble den til ruteren og kopiere dei frå /tmp/harddisk. Husk sjølvsagt flashfs save og flashfs commit til slutt.
    - I tillegg må ein konfigurere aksessen til websidene vha. ei conf-fil. Denne kan sjå slik ut:
    Code:
    A:* # Allow from all IP
    /adm:god:jul # Require user god, pwd jul on urls starting with /adm/
    Ei slik fil tillet alle klientar å koble seg opp, men for å få tilgang til filene under katalog adm krevst brukernavn og passord. Konfigurasjonsfila kan lagrast som /usr/local/etc/httpd/min_httpd.conf. Sidan den er under /usr/local blir den lagra når ein nå kaller flashfs save og commit igjen.
    - Til slutt må ein sørge for at busybox_httpd blir starta ved oppstart ved å legge inn følgande tekst som ei linje i fila /usr/local/sbin/post-boot:

    Code:
    busybox_httpd -p 8080 -r "Logg inn" -c /usr/local/etc/httpd/min_httpd.conf -h /usr/local/etc/httpd/wwwroot
    Argument "-p" brukes for å definere portnummer. Argument -r brukes for å sette ein tekst for brukernavn-skjemaet ved begrensa tilgang. Argument -h brukes for å sette "home" eller rotkatalogen til webserveren.


    For å få tilgong på port 80 og ikkje port 8080 utanfrå må følgande typisk gjerast i Netopia ADSL-ruteren, forutsatt at Asus-ruteren får IP-adresse 10.0.0.3:
    - Input filter:
    - Destination IP: 10.0.0.3
    - Destination Port: 80
    - NAT Server:
    - External Service: www-http 80
    - Server private adress: 10.0.0.3
    - Protocol: TCP
    - Internal Port Start: 8080

    For store websider bør ein i staden lagre desse på USB-disken. Kommandoen som må lagrast i fila /usr/local/sbin/post-boot er ganske lik, berre at home-argumentet nå peikar på USB-disken som blir montert på /tmp/harddisk.

    Code:
    busybox_httpd -p 8080 -r "Logg inn" -c /usr/local/etc/httpd/min_httpd.conf -h /tmp/harddisk/wwwroot

  6. #6
    Join Date
    Nov 2004
    Location
    Trondheim, Norway
    Posts
    14

    Del 4

    Web-server (fortsettelse...)

    Ein ting som er litt meir komplisert når ein skal ha sidene lagra på USB er at det tek litt tid etter oppstart av ruteren før USB-disken er montert. Ein kan legge inn ein liten forsinkelse i post-boot-skriptet slik at USB-disk rekk å bli montert før ein startar http-serveren:

    Code:
    j=0
    while [ $j -le 10 ]; do
    	if [ -d /tmp/harddisk/wwwroot ] ; then
    		busybox_httpd -p 8080 -r "Logg inn" -c /usr/local/etc/httpd/min_httpd.conf -h /tmp/harddisk/wwwroot
    		break
    	fi
    	sleep 1
    	: $((j = $j + 1 ))
    done

    DynDNS

    For å få til aksess på navn slik som "http://kongeside.homeip.net" kan ein opprette såkalt "dynamic DNS" på DynDNS.org. Dette er ein gratis teneste som anbefales!
    Kvar gong maskina di får ny IP-adresse må dette oppdaterast på DynDNS.org. Ruter-programvaren har innebygd støtte for automatisk oppdatering vha. programmet ez-ipupdate (http://ez-ipupdate.com/). Dette vises ikkje på administrasjonssidene når ruteren er satt opp i aksesspunkt modus. Den kan jo sjølvsagt settast opp vha. egne skript frå Telnet-kommandolinja, men grunnen til at dette ikkje er så enkelt er at Asus-ruteren i aksesspunkt modus ikkje vil ha ei ekstern IP-adresse, men kun ei lokal nettverksadresse - i mitt tilfelle IP 10.0.0.3.

    Frå Telnet-kommandolinja kan ein likevel lage eit skript som gjer at den eksterne IP-adressa blir henta, og DNS-kontoane oppdatert. For å få til dette brukes programmet wget (http://www.gnu.org/software/wget/, et program for aksessere filer vha. protokollane HTTP, HTTPS og FTP frå kommandolinja.

    For å oppdatere DNS-kontoane mine så bruker eg WGet først for å laste ned ei side (checkip.dyndns.org) som seier kva for ekstern IP-adresse maskina har. Sjølve IP-adresse blir "klipt ut", det sjekkes om IP-adressa har endra seg siden siste sjekk og hvis den har det så blir den nye IP-adressa registrert hos DynDNS vha. wget mot http://members.dyndns.org/.

    Mi WAN IP-adressa hentar eg frå nettsida http://checkip.dyndns.org/, som har ip-adresse 204.13.250.51 (Eg hadde litt problemer med å få wget til å virke saman med navn så eg måtte bruke IP adresse i staden) For å hente den gjeldande IP-adressa ned til ei fil, f.eks. /usr/local/etc/dyndns/current_wan_ip brukes følgande kommando:
    Code:
    wget -O - http://204.13.250.51 | sed -e 's/<\/body><\/html>.*//' |sed -e 's/<html><head><title>Current IP Check<\/title><\/head><body>Current IP Address: //'>/usr/local/etc/dyndns/current_wan_ip
    For å oppdatere DynDNS-tjenestene med IP-adressa kjøres følgande kommando:
    Code:
    wget -q http://<dyndnsusername>:<dyndnspwd>@63.208.196.95/nic/update?hostname=myhost.dnsalias.com\&myip=xxx.xxx.xxx.xxx --output-document=/usr/local/etc/dyndns/dyndns.log
    I kommandoen ovanfor skal IP 63.208.196.95 svare til adressa "members.dyndns.org". Har ein fleire enn et hostname registrert på DynDNS.org så kan ein inkludere alle i ein kommando ved å liste dei opp i hostname-argumentet separarert med komma. Argumentet "mypi" skal angi IP-adressa som skal oppdateres.
    Eg har laga meg eit skript /usr/local/etc/dyndns/dyndns_update som håndterer sjekking av IP og oppdatering av mine DynDNS kontoar. Dette er gitt i sin heilhet (kun fjerna passord og litt sånt) nedanfor under kapittelet Vedlegg. Husk å gi skriptet kjøre-rettigheter, altså f.eks. chmod +x /usr/local/etc/dyndns/dyndns_update.

    Det siste som må gjerast er å sette opp korleis skriptet skal kjørast. Dette kan settast opp i post-boot for å kjøre skriptet ein gong kvar gong ruteren startes. Eller det kan settes opp som ein autojobb som kjøres ved gitte intervaller vha. Cron.
    Eg har valgt å gjere begge deler. Eg har ADSL frå NextGentel og sålenge ADSL-modemet står på får eg då sjeldan ny IP-adresse. Hvis eg skrur av ADSL-modemet så skrur eg vanlegvis også av Asus-ruteren. Så når eg då legg eit kall til dyndns_update-skriptet i post-boot så skal i utgangspunktet dette halde. For sikkerhetsskyld har eg også lagt til ein autojobb som kjører skriptet ein gong i døgnet. Eit tilleggsargument for også å legge det inn som ein slik autojobb er at DynDNS kontoane går ut på tid hvis ein ikkje har oppdatert IP-adressa i løpet av rundt ein måneds tid (sjå her). Etter 25 dagar sender DynDNS ut påminnelsesmail. For å unngå dette så bør ei oppdatering uansett om IP har endra seg eller ikkje kjørast innan 25 dager. Eg har lagt til støtte for dette i skriptet (/usr/local/etc/dyndns/dyndns_update).

    Til å kjøre oppdateringsskriptet regelmessig har eg brukt Cron, som er allerede er installert på ruteren. Dette settes opp ved å legge til /usr/sbin/crond til usr/local/sbin/post-boot skriptet.
    I tillegg må det lages ei såkalla crontab-fil. Standard plassering av denne er på /var/spool/cron/crontabs (katalogen må sannsynligvis opprettes). På denne katalogen må det lages ei ny fil med navn "admin", altså brukernavnet du bruker på ruteren. For å kjøre skriptet kvar natt klokka 01:00 må fila innehalde følgande:

    Code:
    #<Minute 0-59> <Hour 0-23> <DayOfMonth 1-31> <Month 1-12> <DayOfWeek 0-6, Sunday=0>
    0 1 * * * /usr/local/etc/dyndns/dyndns_update
    Her er ei kort oppsummering av skriptet mitt dyndns_update og oppsettet av dette for oppdatering av mine DynDNS kontoar:
    • Skriptet kjøres ein gong kvar gong ruteren startes.
    • Hvis ruteren er på kjøres skriptet kvar natt klokka 01:00. Det vil slås opp på gjeldende WAN IP.
    • Når skriptet kjøres for første gong så vil DynDNS-kontoane oppdaterast med gjeldande IP.
    • Hvis skriptet har kjørt før, men det er 25 dagar eller meir sidan sist DynDNS-kontoane vart oppdatert, så vil dei (DynDNS-kontoane) oppdaterast med gjeldande IP.
    • Hvis skriptet har kjørt før, og det er mindre enn 25 dagar siden sist DynDNS-kontonae vart oppdatert, så vil dei (DynDNS-kontoane) oppdaterast med gjeldande IP - men bare hvis denne er forskjellig frå den WAN IP som vart funnen forrige gang skriptet vart kjørt!

Similar Threads

  1. Any luck using custom firmware on WL-700gE?
    By hernidez in forum WL-700g Firmware Discussion
    Replies: 0
    Last Post: 05-06-2006, 14:11
  2. custom firmware based on 1.9.5.0 beta?
    By Teddy in forum WL-500g Custom Development
    Replies: 5
    Last Post: 14-05-2006, 20:08
  3. Custom firmware
    By menno in forum Dutch Discussion - Nederlands
    Replies: 0
    Last Post: 02-04-2006, 14:32
  4. Custom Firmware v1.1.2.7
    By JOCKYW2001 in forum WL-HDD Firmware Releases
    Replies: 59
    Last Post: 11-12-2004, 12:26
  5. Flashing Oleg's Firmware in WL HDD
    By hugo in forum WL-HDD Custom Development
    Replies: 29
    Last Post: 21-10-2004, 14:55

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •