SSH
Laitoimme SSH:n päälle DD-WRT:n hallintapaneelin Services-välilehden kohdassa “Secure Shell” ja “SSHd”. Tilaksi laitettiin “Enable” ja klikattiin “Save”.
SSH:n toiminnan mahdollistamiseksi etäkäyttö tuli vielä laittaa päälle. Tämä tapahtui Administration-välilehden kohdassa “Remote Access” ja “SSH Management”. Tilaksi vaihdettiin “Enable”, klikattiin “Save” ja käynnistettiin reititin uudelleen. SSH-etäkäyttö oli nyt toiminnassa.
JFFS
Laitoimme reitittimelle toimimaan JFFS-tallennustilan (Journaling Flash File System). JFFS-tila mahdollistaa tiedostojen tallentamisen reitittimen flash-muistiin. JJFS:n toimintaankytkentä tapahtui hallintapaneelin Administration-välilehdellä kohdassa “JFFS2 Support” ja “JFFS2″. Tilaksi vaihdettiin “Enable”, klikattiin “Save” ja lopuksi vielä “Apply Settings”. Tämän jälkeen piti vielä vaihtaa kohtaan “Clean JFFS2″ tilaksi “Enable”, klikata “Apply Settings”. Tässä vaiheessa reititin formatoi käytettävissä olevan tallennustilan. Lopuksi vielä tarkistettiin, että “Clean JFFS2″ oli tilassa “Disable” ja klikattiin “Save”. Lopuksi reititin käynnistettiin uudelleen. JJFS-tallennustila oli nyt käytössä.
USB-tikun mounttaaminen
Alkuksi USB-tikku formatoitiin EXT2-tiedostojärjestelmälle. Tämän jälkeen DD-WRT:n hallintapaneelin Services-välilehden kohdassa “USB”. Valinnan “Core USB Support” tilaksi vaihdettiin “Enable”. Tämä avasi uusia valintoja, joista laitettiin päälle “USB Storage Support” ja “Automatic Drive Mount”. Kohtaan “Run-on-mount Script Name” laitettiin “/opt/usb.run” ja kohtaan “Disk Mount Point” “/opt”. Lopuksi klikattiin “Save” ja “Apply Settings”.
USB-tikkuun pääsi nyt käsiksi SSH-yhteyden kautta. Testasimme tiedostojakoa Ubuntussa. Käyttämässämme Ubuntu 11.10 -versiossa jaon käyttäminen tapahtuu valitsemalla työpöydällä ollessa yläpalkista File -> Connect to Server, valitsemalla palvelimen IP:ksi reitittimen IP, portiksi 22 ja hakemistopuluksi /opt. USB-tikun sisältö oli nyt käytettävissä tiedostojärjestelmän kautta.
Optware
Havaitsimme ipkg-paketinhallinnan riittämättömäksi tarpeisiimme, joten päätimme asentaa reitittimeen monipuolisemman Optware-paketinhallinnan. Lataaminen ja asentaminen tapahtui seuraavilla komennoilla:
$wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh
$sh /tmp/optware-install.sh
Käytön helpottamiseksi lisäsimme /opt/bin/ -polun PATH:iin:
$export PATH=/opt/bin:/opt/sbin:$PATH
Uuden käyttäjän lisääminen
DD-WRT:ssä on normaalisti vain root-käyttäjä. Halusimme turvallisuussyistä luoda reitittimeen tavallisen käyttäjätilin. Käyttäjien (etenkin salasanalla suojattujen) tekeminen on DD-WRT:ssä tehty kuitenkin varsin hankalaksi. Ratkaisimme tämän ongelman luomalla skriptin, joka luo käyttäjän aina käynnistymisen yhteydessä lisäämällä ryhmän, käyttäjän ja salasanan /etc/passwd ja /etc/group -tiedostoihin. Skripti näyttää seuraavalta:
#!/bin/sh
echo 'KÄYTTÄJÄRYHMÄ:x:10:' >> /etc/group
echo 'KÄYTTÄJÄNIMI:SALASANA_MD5-HASHATTUNA:101:10:OIKEA_NIMI,,,:/opt/home/KÄYTTÄJÄNIMI:/bin/sh' >> /etc/passwd
Luku 101 on käyttäjä-ID ja 10 on ryhmä-ID. Tässä voi käyttää myös muita lukuja, mutta päädyimme itse käyttämään lukuja 101 ja 10. Tallensimme skriptin nimellä passwd.startup sijaintiin /jffs/etc/config/ ja teimme vielä skriptin ajettavaksi komennolla
$chmod 700 /.../passwd.startup
Lisätietoja group- ja passwd-tiedostoista löytyy esimerkiksi seuraavilta sivuilta:
Understanding /etc/group File
Understanding /etc/passwd File Format
Throttling HTTP server PHP-tuella (php-thttp)
Aluksi vaihdetaan dd-wrt:n control panelin portti pois 80:stä. Tämä onnistuu selaimella: mennään dd-wrt:n hallintapaneeliin (IP 192.168.1.1) ja sieltä Administration-välilehdelle. Management-välilehdellä otetaan kohdassa “Web Access Protocol” täppä pois kohdasta “HTTP” ja lisätään täppä kohtaan “HTTPS”. Sitten klikataan “Save”, “Apply Settings” ja käynnistetään reititin uudelleen. Nyt 192.168.1.1 ei mene DD-WRT:n hallintapaneliin, vaan https://192.168.1.1. Tämä jättää portin 80 vapaaksi web-palvelimelle.
Asensimme webpalvelimen komennolla:
$ipkg-opt install php-thttpd
Muokkasimme /opt/etc/thttpd.conf -tiedostoa seuraavanlaiseksi:
dir=/opt/home/KÄYTTÄJÄNIMI/www
port=80
user=KÄYTTÄJÄNIMI
nochroot
nosymlink
novhost
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
cgipat=cgi-bin/*
PHP-tuki ei toiminut suoraan, vaan piti asentaa vielä C++ -tuen tarjoava paketti ipkg-opt:lla:
$ipkg-opt install libuclibc++
Jotta php-thttpd käynnistyisi automaattisesti, teimme seuraavan skriptin:
#!/bin/sh /opt/etc/init.d/S80thttpd start
Tallensimme skriptin sijaintiin /jffs/etc/config/. Teimme sen vielä ajettavaksi:
$chmod 700 /.../thttpd.startup
Käynnistimme thttpd:n uudelleen:
$/opt/etc/init.d/S80thttpd restart
Testasimme palvelimen ja PHP-tuen toiminnan luomalla tiedoston index.php, johon laitoimme sisällöksi seuraavan koodin:
<?php phpinfo(); ?>
Menimme selaimella katsomaan luomaamme sivua ja totesimme sivun toimivan.
Screen ja Irssi
Halusimme vielä projektimme lopuksi asentaa reitittimelle Irssin ja Screenin. Irssi on IRC-asiakasohjelma ja GNU Screen on apuohjelma, jolla luodaan virtuaalisia terminaaleja toisten ohjelmien käyttöön.
Loimme käyttäjän “irssiuser”. Tämä tapahtui samalla tavalla kuin “webuser” ylempänä. Teimme irssiuserille kotikansion komennolla
$mkdir /opt/home/irssiuser
Annoimme käyttäjälle oikeudet kotikansioonsa komennolla
$chown irssiuser /opt/home/irssiuser/
Asensimme root-käyttäjäksi kirjautunena Irssin ja Screen:
$ipkg-opt install screen
$ipkg-opt install irssi
kirjaudutaan sisään käyttäjänä irssiuser:
$login irssiuser
Yritimme käynnistää Screeni ja Irssin:
$screen
$irssi
Irssi ei käynnistynyt normaalisti, vaan antaa vikailmoituksen:
NO WINDOWS: -!- Irssi: Transliterations not supported in this system
NO WINDOWS: -!- Irssi: Invalid charset: CP1252
Pienen googletuksen jälkeen ratkaisu löytyi. Pitää asentaa Perl. Asennus tapahtui seuraavalla komennolla:
$ipkg-opt install perl
Kun perl oli asennettu, kokeilimme uudelleen Irssiä:
$irssi
Irssi käynnistyi normaalisti.
Nickin vaihto irssissä:
$/set nick
Ääkköset toimimaan:
$/set term_charset utf-8
Toimiva Irssi-asiakasohjelma on pystyssä!