Loppuyhteenveto

Posted: December 2, 2011 in Uncategorized

Saimme projektimme päätökseen ja lopputuloksena reitittimellä on nyt SSH-palvelin, JFFS-tallennustila, tuki USB-tallennuslaitteille, Irssi ja WWW-palvelin, jossa PHP-tuki sekä toimivaksi todettu testisivu.

Jouduimme aikataulusyistä tyytymään Samba-tiedostojaon sijaan SSH-palvelintoimintoihin, mutta saimme toteutettua myös toimintoja, joita alunperin ei ollut aikomus toteuttaa; näihin lukeutuvat muun muassa Irssi sekä palvelimen PHP-tuki.

Suurimmaksi ongelmaksi projektin edistymiselle osoittautui DD-WRT:n varsin puutteellinen käyttäjähallinta: DD-WRT ei sellaisenaan tue ylimääräisten, salasanasuojattujen käyttäjien lisäämistä, joten reititinpalvelinta joutuu joko käyttämään root-oikeuksin tai tyytymään erikoisiin “purkkaviritelmiin”, kuten ryhmämme toteuttamaan skriptiratkaisuun. DD-WRT:tä ei siis voi suositella peruskäyttäjille eikä palvelinkäyttöön sanan varsinaisessa merkityksessä, mutta hieman kokeneemmalle käyttäjälle se tarjoaa mukavasti lisätoimintoja kotikäyttöön.

Ryhmämme on tyytyväinen projektiin ja sen lopputuloksena syntyneeseen hieman tavallisesta poikkeavaan palvelinkokoonpanoon. Projektimme on oiva esimerkki avoimen lähdekoodin ohjelmien ja nykyaikaisen teknologian tarjoamista moninaisista mahdollisuuksista.

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ä!

DD-WRT:n asennus

Posted: November 14, 2011 in Uncategorized

Asensimme 14.11. DD-WRT:n reitittimelle. Asennus sujui odotetusti, kiitos selkeän asennusohjeen, joka löytyi DD-WRT:n Wiki-sivuilta.

Asennus alkoi laitteen tehdasasetusten palauttamisella. Tämä tapahtui reitittimen hallintapaneelissa osoitteessa 192.168.1.1.  Tämän jälkeen reititin tuli käynnistää uudelleen ja asennustyökaluna käytettävä kannettava liitettiin sen LAN1-porttiin.

Kun reititin oli saatu uutta vastaavaan tilaan, flashasimme siihen DD-WRT:n sivulta löytyvän Mini DD-WRT -firmwaren. Mini DD-WRT on kevyt firmware, joka päivitetään asennuksen loppuvaiheessa täydeksi versioksi. Flashaaminen tapahtui Internet Explorer -selaimella reitittimen hallintapaneelissa. Ohjeissa neuvottiin käyttämään nimenomaan IE:tä. Flashaaminen kesti noin kaksi minuuttia. Lopuksi reititin käynnistettiin jälleen uudelleen.

Laitteen käynnistyttyä uudelleen osoitteeseen 192.168.1.1 oli ilmestynyt DD-WRT:n hallintapaneeli. Paneelissa kysyttiin uutta käyttäjätunnusta ja salasanaa. Käyttäjätunnukseksi neuvottiin ohjeessa laittamaan “root”, joten teimme niin.

Laite tuli taas resetoida tehdasasetuksiinsa, jotta sen NVRAM (Non-volatile random-access memory, säilyvä RAM-muisti) tyhjentyisi. Tämä tapahtui taas reitittimen hallintapaneelissa kohdassa Administration/Factory Defaults.

DD-WRT:n asennus huipentui täyden firmwaren lataamiseen. Tämä tapahtui hallintapaneelissa kohdassa Administration/Firmware upgrade. Kohtaan “After flashing, reset to” tuli valita “Reset to Default settings”. Asennus kesti huomattavasti odotettua kauemmin ja tämä aiheutti projektiryhmässä hieman hämmennystä.

Asennus viimeisteltiin tekemällä reitittimelle “30/30/30 reset”, eli täysi oletusasetusten palautus. Ohjeen mukaan tämä tulisi tehdä jatkossa aina firmwarea päivitettäessä tai palautettaessa vanhempaan versioon.

DD-WRT:n langaton tukiasema on vakiona suojaamaton. Laitoimme hallintapaneelin kohdassa “Wireless” ja sen välilehdessä “Wireless Security” kohtaan “Security Mode” valinnan “WPA2 Personal Mixed” ja kohtaan “WPA Algorithms” valinnan “AES”. Laitoimme vielä salasanan kohtaan “WPA Shared Key” ja klikkasimme “Save” ja “Apply Settings”. WLAN oli nyt suojattu.

Asennus saatiin päätökseen odotetusti ilman huomattavia ongelmia.

DD-WRT:n asennusohje Asus RT-N16 -reitittimelle:

Asus RT-N16 – DD-WRT Wiki

Projektisuunnitelma

Posted: November 2, 2011 in Uncategorized

Yhteenveto

Reititin palvelimena on on HAAGA-HELIA -ammattikorkeakoulun Järjestelmäprojekti 1 -kurssilla opiskelevien Henri Sukin, Antti Tirrosen ja Sampo Tyllilän kurssiprojekti.

Tavoitteet

Projektissa asennetaan DD-WRT -ohjelmisto Asus RT-N16 -reitittimeen. DD-WRT on reitittimille tarkoitettu Linux-pohjainen avoimen lähdekoodin firmware, joka mahdollistaa kevyiden palvelinratkaisujen toteuttamisen reitittimellä.

Ensisijaisena tavoitteena on saada asennettua reitittimelle webbipalvelin ja sinne toimiva nettisivu, Lisätavoitteena on asentaa reitittimelle tiedostopalvelin käyttäen Samba-tiedostojakoa.

Odotettavat tulokset

Projektin odottettavana tuloksena reitittimellä toimii webbipalvelin ja tiedostojako.

Aikataulu

Projektin suunniteltu aikataulu on seuraava:

  • Viikko 44: projektisuunnitelma
  • Viikko 45: perehtyminen aiheeseen ja projektin valmistelu
  • Viikko 46: projektityöskentelyä, tilannekatsaus (lähiopetus)
  • Viikko 47: projektityöskentelyä
  • Viikko 48: Lopputuloksen julkaisu
  • Viikko 49 & 50: Projektin esittely (lähiopetus)

Projektin ongelmat ja riskit

  • Mahdolliset laitteiston ja ohjelmistojen yhteensopivuusongelmat

Projektiryhmä

  • Henri Sukki
  • Antti Tirronen
  • Sampo Tyllilä

Projektin pääasialliset työvälineet

  • Asus RT-N16 -reititin
  • Projektin jäsenten HP EliteBook 2530p -kannettavat

 

Projektin osallistujiin saa yhteyden sähköpostitse:

reititinpalvelimena [at] gmail.com