ylläpitäjän sivunootit

Muiden harrastuksien ohessa teen myös ylläpitoa verkkopalveluille. Lähinnä sitä teknistä puolta.
Kodin lähiverkon lisäksi on ollut vaihteleva määrä kodin ulkopuolisia verkkolaitteita, palvelimia ja virtuaalipalvelimia.

Ylläpitämilläni alustoilla on pyörinyt paitsi omia sovelluksia, myös ystävien ja tuttavien verkkopalveluita. Joitakin matalan budjetin webhosting-toteutuksia (aloitteleville yrittäjille ponnahduslautana näkyvyyteen verkossa), sekä muutama yhdistystoiminnan kautta tilattu projektialusta lyhytaikaiseen tarpeeseen. Yhdistävänä tekijänä usein pieni budjetti, mutta ajoittain astetta suurempi tarve.
Toisinaan oma roolini on ollut lähinnä konsultin tasoa.

Vuonna 2008 syntyi hetken mielijohteesta takaa.fi, jonka tarkoituksena oli siirtää ajatustasolla erilleen ulkopuolisille tuotetut palvelut ja omat projektit. Siitä tuli kuitenkin lähinnä infrastruktuurin domain-nimi, pois lukien ensisijainen nimipalvelin edelleen terae.fi-domainissa. Tämän viimeisteli olosuhteiden pakosta tapahtunut pikainen siirtymä takaisin kotiverkosta käsin jaeltavaan sisältöön, sillä budjetti oli hyvin rajallinen ja tarvittiin iso määrä tallennustilaa käytettäviin. Elettiin vuodenvaihdetta 2011-2012 ja muuton myötä kotona oli hieman yllättäen useampi 1GE-liityntärajapinta kuitukytkimeen, mikä toi uusia mahdollisuuksia toteuttaa itseään ja palveluita verkossa. Alkukesästä 2019 alkaen tuo tarve meni kuitenkin ohi, kun hankin uutta vuokrapalvelinrautaa konesaliin riittävällä levytilalla.

Kodin ulkopuolisen infran sydämenä toimii Hetzner EX42 juuripalvelin (sijainti "Helsinki" eli Tuusulassa).
Lisäksi epäkaupalliseen käyttöön pieni FAR ry. jäsenvirtuaalipalvelin ja slave DNS.
Tarvittaessa kapasiteettia kasvatetaan lisäämällä tarpeeseen soveltuvia fyysisiä tai virtuaalisia laitteita verkkoon.
Kodin sisäpuolista infraa varten on RouterBOARD RB1200 & RB450G, Ubiquiti AmpliFi HD WiFi Mesh-reititin ja ProCurve 1800-8G.
Kotiverkossani on myös QNAP TS-459 Pro+ levypalvelin (2x 1GE NIC, 4 levyä, 1.8TB RAID 10), jota käytetään myös palvelinten varmuuskopiointiin.

Tämä kotisivujeni alaosasto käsittelee blogimaisesti ylläpitäjän roolissa kokemiani juttuja.

Referrer-spam-botnetit kuriin (Nginx)

Nykyaikana kaiken sortin spammaaminen on yleistä. Siten on kasvavana ongelmana myös www-sivutilojen kautta tapahtuva liikenteen kaiutus ja pyrkimys nostaa pisteitään mainosverkostoissa, hakukoneissa, jne...

Jotkin mainosverkostot näkyvät toistuvasti referer-tiedoissa web-statistiikassa. Heidän kaiuttamansa liikenne tulee usein kolmansien osapuolien kautta ja saatat haluta poikkasta useiden referer-kohteiden liikenteet heti alkuunsa.

Useita nettilähteitä selattuani päädyin lisäämään Nginx-pohjaisen proxyni site/server-konfiguraation alle seuraavan rivin:
if ($http_referer ~* (semalt\.com|\.ru) ) { return 403; }
Tämä antaa HTTP-virhekoodin 403 ja estää liikenteen kaikilta semalt.com ja *.ru kautta tulevilta yhteyksiltä web-palvelimelleni.
HUOM! Tuo \.ru saattaa estää joitakin muita ".ru"-osuuden nimessään sisältäviä sivustoja, käytä varovaisesti. Omalle palvelimelleni ei ole erityistä syytä päästä sisään suorilla linkeillä minkään vastaavan web-sivun kautta.

Edellisen lisäksi olen päätynyt estämään IP-pohjaisesti häiritsevän paljon liikennöimään yrittäneet IP:t eli samassa server-osuudessa on rivi
if ($bannattu) { return 403; }
ja tätä edeltävässä osuudessa yleisellä tasolla kongifuraatiossa (voi laittaa saman tiedoston alkuun ennen "server {" osuutta) rivit
geo $bannattu {
default 0; #normaalisti kaikki pääsee läpi
93.221.199.91/32 1; #numero 1 tarkoittaa bannin olevan voimassa
112.168.56.131/32 1;
85.25.43.94/32 1;
141.212.121.0/24 1;
141.212.122.0/24 1;
}

Täten haitalliseksi havaittu liikenne on näiden osalta pysäytetty virhekoodilla 403.

Voiko olla liian nopea netti? Joskus voi, kun hinta ja käyttöaste (järki) ratkaisee.

Palvelinympäristöjen uudelleenjärjestelyn myötä Saunalahti Kotikuitu 1000M jäi käytännössä turhan nopeaksi, sillä enää ei tarvita kodin ja ulkopuolella olevan palvelimen välisiä NFS-levykytköksiä muuhun kuin kotiin päin tapahtuvaan varmuuskopiointiliikenteeseen. Muun ajan levykytkennät voi olla irrotettuina, jolloin kodin ja palvelimen välinen liikenteen hidastuminen ei vaikuta palvelinten toimintaan.

Johtuen mainituista varmuuskopiointitarpeista ja yleisesti lapsiperheen nykypäivän WiFi-käyttöasteesta (nämä jakautuvat eri vuorokaudenaikoihin), valikoitui Saunalahti Kotikuitu 250M tämän hetken tarpeisiin sopivimmaksi. Se on tämän hetken hinnoilla aikaisempaa sopimusta 30€ halvempi ja siten tällä erotuksella voi maksaa suuren osan uuden palvelimen tuomista kuluista.

Nopeusluokan laskua lähdin harkitsemaan, paitsi edellä mainituista kustannusrakenteen jakautumisen syistä, myös teknisistä järkisyistä.
Näitä mainitakseni:
Osoittautui, että edes uusin hankintani WiFi-käyttöön (Ubiquiti AmpliFi HD, hinta 170€) ei kyennyt tarjoamaan kuin noin 300Mbit/s siirtokapasiteettia langattomana kotiverkossa. Suurimmat nopeudet olivat noin 500Mbit/s oman MiMo-puhelimeni kanssa käyttäessä, mutta tämä toteutui todella harvoin. Siten isommasta kapasiteetista ei ollut juurikaan hyötyä normaalissa kotikäytössä. Parantaakseni WiFi-toimivuutta olisi pitänyt hommata ainakin yksi tällainen laite lisää ja mahdollisesti muutama mesh-toistin niille.
Kotiverkkoni sydämenä toimiva reititin osoittautui sekin alimitoitetuksi Gigabit-luokan käyttöön, sillä usean käyttäjän pikkupaketit saavat sen liian varhain tukkoon. Kokeiluni ylikellotettuna antoivat kyllä täyden nopeuden reitityskapasiteetin, mutta ennemmin vakaus kuin riskillä lisätehoa. Eli tämä laite olisi vaihdettava uuteen. Uusi omaan määritelmääni riittävä laite olisi ollut Mikrotik CCR1009-7G-1C-1S+ Cloud Core Router (kuola valuu tätä kirjoittaessa), mutta hinta hieman hirvitti - se kustantaa noin 500€.

Uudet laitteet jäivät tilaamatta, sillä nopeusluokan lasku ratkaisi kapasiteettiongelman tältä erää.
Ja samalla harrastusbudjetin hintalappu laski 30€/kk.

Dovecot-optimointia (pari sanaa mobiilikäytöstä)

Tehdessäni aikaisemman kirjoitukseni muutoksia Dovecot-asennukseen huomasin muutamia pikkuseikkoja, jotka on hyvä huomata muuttaa. Muussa tapauksessa palvelimen vakioasennus on omiaan tuhlaamaan langattomista laitteista akkua aivan turhaan.

Tiedostossa 20-imap.conf:
imap_idle_notify_interval = 20 mins
Ei ole syytä ilmoitella kovin tiuhaan olevansa paikalla ja aktivoida mobiilikäyttäjän radiota turhalla viestillä.

Tiedostossa 10-mail.conf:
mailbox_list_index = yes
Ilman tätä IMAP NOTIFY ei voi toimia ja tällöin asiakasohjelma tekee tarpeetonta toistuvaa viestien hakua.

Dovecot-optimointia (spam-suodon parantelua)

Käytän sähköpostipalveluissani Dovecot-palvelinta (dovecot-imapd, Debian).

Tänään asensin lisäpaketin dovecot-antispam.
Kyseinen plugin mahdollistaa tunnistetulle spam-kansion (yleensä nimellä Junk) sähköpostien käsittelyn sa-learn (SpamAssassin Bayes-opetus) avulla heti viestin kansioon siirtäessä. Ja myös sisällön palauttamista tunnetuksi hyötysisällöksi ("ham") mikäli kansioon vahingossa päätynyt sähköposti palautetaan pois sieltä (muualle kuin roskakoriin).

Ohjeet ja skriptin pätkä löytyivät raimue.blog (2016/08/21) "setting up dovecot antispam with spamassassin"

Dovecot-antispam asennus meni lyhykäisyydessään seuraavasti:

apt-get install dovecot-antispam
joe /etc/dovecot/conf.d/90-plugin.conf
joe /usr/local/sbin/sa-learn-pipe
chmod +x /usr/local/sbin/sa-learn-pipe joe /etc/dovecot/conf.d/20-imap.conf
service dovecot restart

/etc/dovecot/conf.d/90-plugin.conf: (lisää rivit)
plugin {
# dovecot-antispam
antispam_backend = pipe
antispam_trash = trash;Trash;Deleted Items;Deleted Messages;Roskakori;roskakori
antispam_spam = Junk;SPAM;spam;junk
antispam_pipe_program = /usr/local/sbin/sa-learn-pipe
antispam_pipe_program_spam_arg = --spam
antispam_pipe_program_notspam_arg = --ham
antispam_pipe_tmpdir = /tmp
}

/usr/local/sbin/sa-learn-pipe: (uusi tiedosto)
#!/bin/bash
out=$(sa-learn "$@" - 2>&1)
ret=$?
if [ $ret -gt 0 ]; then
logger -p mail.err -i -t "${0##*/}" "${1//[^a-z]/}: $out"
fi
exit $ret

/etc/dovecot/conf.d/20-imap.conf: (uusi rivi)
protocol imap {
mail_plugins = antispam
}

liima, purkka, sinitarra...teippi!

System health

Kun olin aikani ihmetellyt melko korkeita reitittimen lämpöjä, tuli mieleeni kirjoitella siitä, miten asiat tehdään pieleen ihan huomaamatta. Tätä tapahtuu niin amatöörien kuin ammattilaistenkin keskuudessa.
Onneksi yhä vähemmän ammattilaisten keskuudessa. Sitä varten on niitä laatustandardeja.
Toki korjasin ennen kirjoittelua sen pieleen menneen osuuden; lisäsin parempaa teippiä ja mekaanisen varmistuksen, josta et halua tietää sen enempää.

Olen hommannut runkoreitittimeni aikoinaan "asiakkaan omaksi palomuuriksi" viileään konesaliin, jossa asiakaskohtainen uplink oli 100M. Kuitenkin sillä idealla, että se aikanaan siirtyy kotiin "eläkkeelle".
100M nopeusluokalle se on ylijäreä tuulettimeton malli, jonka voi alikellottaa sopivasti ja saavuttaa siten hyvän tasapainon.

Aikaa kului ja lopulta laite pääsi "eläkkeelle" kotikäyttöön. Sitä ostaessa en osannut kuin unelmoida tästä nykyisestä kodin verkkoympäristöstä. Unelmat kävivät kuitenkin toteen ja WAN on Gigabit Ethernet, jossa myöskin 1G down/100M up nopeusluokan internet-liittymä. Tulevaisuuden optiona myös isommat nopeusluokat, mutta todetusti RB1200 ei jaksa tarvittavilla verkkokonfiguraatioilla yli 1Gbit/s reititystä.

Pitkän alustuksen jälkeen itse asiaan eli siihen viritelmään, joka petti.
Tuulettimeton verkkolaite kaipasi ulkoista viilennystä. Kotiympäristössä se ei kuitenkaan ole tasalämpöisessä viileässä tilassa, vaan räkkiasennettu eteisen nurkassa olevaan kaappiin. Niinpä asensin sen välittömään läheisyyteen pienen tuulettimen, jonka virtalähteeksi valikoitui sopivasti jännitettä madaltava kiinalainen perusvirtalähde (jostain ZyXELin verkkolaitteesta ylijäämää). Tällaisen teholähteen ja tuulettimen liittimet eivät tietenkään ole samasta maailmasta, joten tuulettimen johdot tulivat kiinnitetyiksi teippiavusteisesti.

Useimmille teipeille on ominaista, että niiden liima menettää adheesionsa noin 60°C lämpötiloissa. Tuossa laitekaapissa lämpötilat saattavat nousta hetkellisesti yli 50°C. Ja vähemmän yllättäen teippiliitos oli rakoillut irti.

Onneksi nuo laitteet on tehty toimimaan myös korkeissa ympäristön lämpötiloissa. Suorituskyky kuitenkin kärsii lämpöjen noustessa.
Ulkoisella tuulettimella lämmöt pysyvät alle 50°C normaalin rasituksen alaisena.
Ilman tuuletinta CPU-lämpö nousee 70°C tuntumaan jo käynnistäessä laitteen.

Seuraavaksi hankintalistalle voisi päätyä tuoreempi runkoreititin, jossa kapasiteetti riittää moninkertaiseen määrään liikennettä ja palomuurisääntöjä. Niin voisi sitten taas asettaa sen vajaateholle käyttöön ja lämmötkään ei pääsisi muodostumaan ongelmaksi.
Mutta mañana, mañana. Uusi teippi pitänee tuon kasassa toistaiseksi. ;)

[=]