Olen huomannut trendin viime aikoina. Sen sijaan, että vaihtaisin reitittimen, kun se kirjaimellisesti lakkaa toimimasta, olen joutunut toimimaan aikaisemmin – vaihtamaan uuden laitteen, koska vanha reititin ei enää pysynyt mukana alueella saatavilla olevien Internet-nopeuksien kasvussa. (Huomaa, että olen tästä ongelmasta asianmukaisesti kiitollinen.) Viimeisimpänä esimerkkinä kokonainen joukko Netgear ProSafe 318G -reitittimiä petti minut viimeisen kerran, kun pienyritykset ovat siirtyneet 1,5-9mbps perinteisistä T1-yhteyksistä 50mbps:n koaksiaaliyhteyksiin (kaapeli).
Joo, koaksiaali – ei kuitu. Jopa koaksiaali on osoittautunut liikaa vanhalle ProSafe-sarjalle. Nämä laitteet eivät vain pysyneet perässä, vaan kaatuivat. Usein vanhat reitittimet pudottivat nopeustestitulokset 9mbps:stä vanhalla yhteydellä 3mbps:iin tai alle 50mbps:n yhteydellä. Se ei selvästikään onnistu.
Tänä päivänä vastaus näyttää yhä useammin olevan langattomat reitittimet. Niissä on yleensä paljon lipevää muovia ja kirkkaanvärisiä web-käyttöliittymiä, mutta vähän teknisiä ominaisuuksia ja luotettavuutta. Mitä palkkasoturi-sysadmin voi tehdä? Pohjimmiltaan mikä tahansa, jossa on kaksi fyysistä verkkoliitäntää, voi olla reititin. Ja nykyään on olemassa paljon ja paljon suhteellisen nopeita, edullisia ja (erittäin tärkeää!) täysin kiinteitä yleisiä laatikoita.
Aika oli siis vihdoin koittanut. Kohdatessani vanhenevan laitteiston ja uudet kuluttajatarjoukset, jotka eivät vastanneet tarpeitani, päätin rakentaa oman reitittimeni. Ja jos tämän päivän muuntuva liitettävyysmaisema jättää sinut samanlaiseen tilanteeseen, käy ilmi, että sekä rakentaminen että rakentaminen ovat varsin nopeita.
Miksi tehdä se vaikealla tavalla
Vielä moni teistä varmaan mutisee: ”Aivan, pfSense, totta kai”. Jotkut teistä saattavat jopa miettiä smoothwallia tai untangle NG:tä. Leikittelin suurimmalla osalla palomuuridistroista, mutta päätin valita yksinkertaisemman, vanhanaikaisemman lähestymistavan: pelkkä Ubuntu Serverin CLI-asennus ja muutama iptables-sääntö.
Todennäköisesti tämä ei ole kaikkein käytännöllisin lähestymistapa jokaiselle lukijalle, mutta itselleni se oli järkevä. Minulla on melko paljon kokemusta iptablesin ja itse Linux-ytimen hienosäätöstä suuren läpimenon aikaansaamiseksi Internetin mittakaavassa, ja mitä vähemmän kiiltäviä ominaisuuksia ja grafiikkaa ja klikkaavia asioita laitetaan minun ja palomuuripöydän väliin, sitä vähemmän pörräämistä minun täytyy saada pois tieltä ja sitä vähemmän uusia ei-soveltuvia-muun-työni-mukaan-juttuja minun täytyy oppia. Kaikki säännöt, jotka osaan jo luoda iptablesissa palvelimieni pääsyn hallitsemiseksi, osaan myös soveltaa palomuuriini – jos palomuurissani käytetään samaa distroa kuin palvelimissani.
Työskentelen melko paljon OpenVPN:n parissa ja haluan pystyä jatkossakin asentamaan sen palvelimet ja asiakkaat tavalla, johon jo luotan. Joissakin palomuurin distroissa on OpenVPN-tuki sisäänrakennettuna ja joissakin ei, mutta jopa ne, joissa on sisäänrakennettu tuki, odottavat asioiden toimivan eri tavalla kuin minä. Jälleen, mitä enemmän järjestelmä pysyy poissa tieltäni, sitä tyytyväisempi olen.
Lisäbonuksena tiedän, että voin hyvin helposti pitää kaiken täysin ajan tasalla uudessa ja täysin vaniljaisessa Ubuntu-reitittimessäni. Kaikki on suoraan Canonicalin tukemaa, ja kaikilla voi (ja on) automaattiset päivitykset päällä. Lisää satunnainen cron-työ reitittimen uudelleenkäynnistämiseksi (uusien ytimien saamiseksi), ja olen kultainen.
Hardware, hardware, hardware
Käymme läpi how-to:n tulevassa artikkelissa, mutta tänään on tärkeää selvittää, miksi DIY-reitittimen rakentaminen voi olla paras vaihtoehto. Sitä varten sinun on ensin ymmärrettävä tämän päivän yleinen maisema.
Kuluttajamaailmassa reitittimissä on konepellin alla useimmiten pikkuruisia MIPS-suorittimia, joissa ei ole paljon RAM-muistia (lievästi sanottuna). Nämä reitittimet eroavat toisistaan pitkälti käyttöliittymän perusteella: Kuinka kiiltävä se on? Kuinka monta teknistä ominaisuutta siinä on? Pystyvätkö käyttäjät hahmottamaan sen helposti?
SOHO-markkinoiden korkeammassa päässä aletaan nähdä älypuhelinluokan ARM-suorittimia ja paljon enemmän RAM-muistia. Näissä reitittimissä – kuten Nightgear Nighthawk -sarjassa, joista yhtä käsittelemme myöhemmin – on useita ytimiä, korkeampi kellotaajuus ja paljon enemmän RAM-muistia. Niissä on myös paljon korkeampi hintalappu kuin halvemmissa kilpailijoissa. Hain Linksys EA2750:n 89 dollarilla, mutta sen mukana saamani Netgear Nighthawk X6 oli lähes kolme kertaa kalliimpi (jopa lomamyynnissä!) 249 dollarilla.
Siltikin halusin kulkea erilaista tietä. Markkinoille on viime aikoina alkanut ilmestyä paljon mielenkiintoisia ja kohtuullisen edullisia pieniä tuulettimettomia x86-64-koneita. Reitittimen rakentamisen juju on löytää sellainen, jossa on useita verkkokortteja. Amazonista löytyy pari melko varmaa vaihtoehtoa, mutta ne ovat vanhempia Atom-pohjaisia prosessoreita, ja minä halusin uudemman Celeronin. Vanhan kunnon Internet-selailun ja pähkäilyn jälkeen otin lopulta Alibaban tarjouksen ja tilasin itselleni uuden Partaker Mini PC:n Shenzhen Inctel Technology Companylta. Kun itse reititin maksoi 240 dollaria ja 120 gigatavun Kingstonin SSD-levy Neweggiltä maksoi vielä 48 dollaria, olin käyttänyt Homebrew Specialiin noin 40 dollaria enemmän kuin Nighthawkiin. Olisiko se sen arvoista?
Haastaja ilmaantuu
Ennen kuin aloitamme testauksen, katsotaanpa nopeasti kilpailijoita silmämääräisesti.
Tämä Nighthawk on muihin verrattuna VALTAVA ja vaikuttava (jopa enemmän kuin kuvassa näyttää). Se on itse asiassa huomattavasti suurempi kuin minun Homebrew Specialini, joka on täysin toimiva, yleiskäyttöinen PC, jota voisi käyttää täysin pätevänä työpöytänä. Aivan kuin DC Comics olisi pyytänyt H.R. Gigeriä auttamaan Batmanin langattoman reitittimen suunnittelussa.
Homebrew Special itsessään on aika suloinen. Siinä on yksi sininen ja yksi punainen LED kotelon sisällä, ja yöllä molempien valo valuu epäsuorasti ulos sen jäähdytysaukoista, mikä antaa verkkopinolle juhlavan juhlavan ilmeen. Jos siinä olisi tuulettimia, jotka aiheuttaisivat välkkymistä, se tekisi minut hulluksi, mutta koska se on tasaista pehmeää hehkua, pidän siitä oikeastaan.
Linkys ja Buffalo sen sijaan näyttävät juuri siltä, mitä ne ovat – halvoilta reitittimiltä. Kannattaa kuitenkin huomioida, että Linksysin muotoilu on suuri parannus merkin menneisyyteen verrattuna. Se näyttää enemmän ammattimaiselta eikä niinkään lasten lelulta. (Mutta tarpeeksi muotoilusta – on aika laittaa nämä reititinparat koetukselle.)
Ensimmäinen haaste on ilmeisesti yksinkertainen kaistanleveystesti. Laitat yhden tietokoneen LAN-puolelle ja yhden tietokoneen WAN-puolelle, ja suoritat näppärän pienen työkalun nimeltä iperf keskellä. Itse verkko mittaa gigabitin, kolme gigabitin reititintä mittaa gigabitin ja 100 megabitin reititin mittaa 100 megabitin.
Tosiasiassa näin yksinkertainen testi ei edes alkuunkaan kerro kaikkea. Ainoa syy sen tekemiseen voi olla sen osoittaminen, kuinka turhaa se on. Reititinvalmistajat ovat yhä tietoisempia siitä, että ihmiset oikeasti testaavat heidän tuotteitaan, eikä yksikään valmistaja halua tuotteensa olevan missään muualla kuin smallnetbuilderin reititinlistan kärjessä. Valossa valmistajat jahtaavat nykyään aktiivisesti tilastoja.
Ongelma on, että tilastot ovat vain tilastoja. Korkean luvun saavuttaminen puhtaassa läpäisykykytestissä on parempi kuin ei mitään, mutta se on kaukana koko tarinasta. Opin sen kantapään kautta työskennellessäni T-1-myyjällä 2000-luvun alussa. Heidän erittäin kalliit Adtran-modeemit pystyivät käsittelemään 50-100 henkilön normaalia Internetin käyttöä hienosti, mutta yksittäinen käyttäjä, joka käytti Limewireä tai jotain muuta P2P-asiakasta, kaatoi koko järjestelmän hetkessä. (Ratkaisu tuolloin: kalliin Adtran-modeemin eteen laitettiin edullinen mutta mahtava 150 dollarin Netopia-reititin. Ongelma ratkaistu.)
Jopa suhteellisen yksinkertaisessa reitityksessä – ei syvä pakettitarkastus, ei suoratoisto-haittaohjelmien skannaus tai tunkeutumisen havaitseminen, ei muodonmuodostus – reitittimen suorittimen ja RAM-muistin merkitys ylittää reilusti Internet-linkin kyllästämisen. Vertaisverkossa tapahtuva tiedostojen jakaminen on nykyään rajuinta toimintaa, jota verkko näkee (olipa kyseessä sitten bittorrent, jokin Gnutella- tai eDonkey-muunnos tai pelifirman vertaisverkossa toimiva latausjärjestelmä). Olin lopettanut WoWin pelaamisen siihen mennessä, kun Blizzardin P2P-jakelujärjestelmä otettiin käyttöön, mutta silloinen kämppikseni ei ollut. Lanseerauspäivänä WoWin uusi vertaisverkkolatausjärjestelmä ei auttamatta oletusarvoisesti rajoittanut lainkaan. Se yritti iloisesti löytää ja ylläpitää yhteyksiä kirjaimellisesti tuhansien asiakkaiden kanssa samanaikaisesti, ja kotiverkkoni kaatui kuin Gilbert Godfried Terry Taten taklaamana. Kämppikseni ja minä keskustelimme.
Tällaisten aiempien kokemusten perusteella en halua vain minimaalisesti ”testata” haastajiani ja lopettaa, vaan haluan saada heidät todella hikoilemaan. Siksi aion tehdä heille työtehtäviä, jotka korostavat kolmea ongelma-aluetta: verkkoyhteyden kyllästäminen, yksittäisten TCP/IP-yhteyksien muodostaminen ja katkaiseminen todella nopeasti ja massiivisen määrän yksittäisten TCP/IP-yhteyksien pitäminen auki samaan aikaan.
Minulla on botnet taskussa, ja olen valmis rokkaamaan sitä
Harkitsin hetken aikaa jonkinlaisen kammottavan, Dockerilla toimivan hirviön perustamista, jossa on kymmeniätuhansia Linux-kontteja, joilla on yksilölliset IP-osoitteet, ja jotka kaikki huutavat yhteyksiä ja/tai tarjoilevat verkkosivuja. Sitten tulin järkiini. Reitittimien kannalta ei ole mitään eroa siinä, pidetäänkö yllä yhteyksiä tuhansiin yksittäisiin IP-osoitteisiin vai vain tuhansiin portteihin samassa IP-osoitteessa. Käytin hieman aikaa siihen, että tein Lee Hutchinsonin suosikki-verkkopalvelimesta nginxistä naurettavan Lovecrafti-hirviön, jolla on 10 000 päätä ja tuhonhimo.
Testasin ApacheBenchin avulla jokaiselle reitittimelle jpegin lataamista kolmella eri tiedostokoolla (10K, 100K ja 1M) neljällä eri samanaikaisuustasolla (10, 100, 1 000 ja 10 000 samanaikaista asiakasta). Näin saamme yhteensä 12 testiä, lukuun ottamatta alkuperäistä iperf-testiämme, ja niitä kaikkia kannattaa tarkastella eräänlaisena spektrinä.
Useimmissa suhteissa tuo 10K-tiedosto on haastavampi. Pieni tiedostokoko tarkoittaa, että voit toimittaa paljon enemmän yksittäisiä tiedostoja sekunnissa ennen kuin rajapinta kyllästyy, mikä tarkoittaa paljon useampien TCP-yhteyksien muodostamista ja katkaisemista, mikä kuormittaa reitittimen prosessoria. Toisaalta 1M:n tiedosto tarkoittaa, että pidät taatusti useampia yhteyksiä auki korkeammilla samanaikaisuustasoilla. Kannattaa katsoa, miten reitittimet käsittelevät koko skaalaa, koska jokainen taso mallintaa melko hyvin melko tavallista haastetta, jota reitittimen on ehkä käsiteltävä (suuren määrän sähköpostien lataaminen tai lähettäminen, tiedostojen jakaminen vertaisverkossa tai yleinen web-selailu monilta käyttäjiltä), jos se viedään äärimmäiselle tasolle.
Päädyin lopulta siihen, että jouduin virittämään nginx:n lisäksi itse Linux-ytimen, jotta saisin luotettavasti aikaan kaipaamani läpäisykyvyn. Itse reitittimet ovat ”varastossa” – jopa minun Homebrew Special jätettiin virittämättä – mutta testipalvelimet, Menhir ja Monolith (jokaisessa AMD FX-8320 8-ydinprosessori, 32GB DDR3-muistia ja Ubuntu Trusty -käyttöjärjestelmä, joka on korjattu täysin ajan tasalle) tarvitsivat melko vakavaa hierontaa, jotta ne pystyivät käsittelemään tuollaista kuormitusta.
Toisella määrällä hulluutta kannattaa varmistaa, mihin todelliset palvelimesi ja verkkosi pystyvät, ennen kuin teet johtopäätöksiä niiden väliin laitettavista reitittimistä. Aluksi testasin Menhiriä ensin yksinään localhost-liittymässä (ei lainkaan verkkoa) ja testasin sitten palvelimien välillä vain verkkokytkimeni kautta (Netgear ProSafe 16-porttinen gigabit, jos mietit).
Localhost-tulokset eivät olisi voineetkaan olla parempia – kaukana, kaukana suuremmat läpäisykertoimet kuin gigabitissä jokaisessa testissä. Itse asiassa jouduin manuaalisesti rajoittamaan kuvaajan Y-akselin mittakaavaa, muuten todellisia testejä olisi ollut vaikea nähdä ollenkaan. Suora verkkotesti ei ollut liian huono, mutta olemme selvästi alkaneet saavuttaa joitakin rajoja yläpäässä. En ole varma, onko kamppaileva komponentti itse kytkin vai molempien palvelimien sisäiset verkkoliitännät, mutta jokin ei ole täysin haasteiden tasalla. Työskentelyyn se kuitenkin riittää. Aika vihdoin ottaa reitittimet käyttöön.
Valmistaudutaan rymistelemään!
Hieman jännitti. Tunsin jo valmiiksi melkoista hellyyttä pientä kotitekoista laitettani kohtaan – rakensinhan sen itse. Tiesin, että se päihittäisi helposti laatikosta kaivamani vanhan Buffalon ja Linksysin, joka oli kirjaimellisesti Staplesin halvin gigabitin liitännällä varustettu laite. Mutta voittaisiko se tuon Nighthawkin laserohjatun atomihöyryhammerin? Luulin niin, mutta en ollut varma.
Kun lataustestit olivat ohi, Homebrew Specialista ei ollut enää kysymyksiä. Kyllä, se pystyi voittamaan Nighthawkin… ja kävelemään sen jälkeen haukotellen pois. Yhtä pientä notkahdusta lukuun ottamatta 10K tiedostokoko/10 samanaikaista yhteyttä -tasolla (joka haastaa suorittimen absoluuttisesti eniten tehtyjen ja katkaistujen yhteyksien kanssa), se suoriutui lähes identtisesti itse suoran verkkoyhteyden kanssa.
Nighthawk on muuten tosiaan loistava SOHO-reititin, jota olen ottanut käyttööni aika paljon. Tosin se putosi melkein heti pois. Megatavun latauksissa 10 kerrallaan se oli niskan päällä. Vähänkään suuremmilla haasteilla suorituskyky alkoi laskea jyrkästi.
Linksys, ei yllätys, ei suoriutunut lainkaan hyvin. Jopa niinkin yksinkertainen tehtävä kuin 10 tiedoston samanaikainen lataaminen leikkasi sen läpäisykyvyn lähes puoleen siitä, mitä naiivi iperf-testi osoitti. Asiat vain pahenivat siitä, ja se ei onnistunut edes suorittamaan useita testejä. Hyvänä puolena Linksys osoittaa hienosti, että reitittimellä on todella väliä.
Loppujen lopuksi urhea pikku Buffalo ansaitsee kiitoksen. Huolimatta siitä, että se maksoi vähemmän kuin Linksys, kun se oli upouusi (kahdeksan vuotta sitten, muistaakseni) ja makasi pöytälaatikossa viisi vuotta, se nousi sananmukaisesta baarijakkarasta ja itse asiassa voitti Linksysin puolessa testeistä. Buffalo menestyi näin hyvin, vaikka sen verkkoliitäntä oli mitoitettu kymmenesosalle nopeudesta. Se on rohkeutta. Seuraavalla kerralla, kun joku tekee halpahintaisia puukotuksia tuoreista kiinalaisvalmisteisista tuotteista, aion huutaa: ”Muistakaa Buffalo!”
Ennen johtopäätösten tekemistä on kuitenkin otettava huomioon latausnopeudet.
Onneksi mikään ei ole oikeastaan muuttunut reitittimien välisissä suhteissa tässä. Homebrew näyttää edelleen siltä kuin sitä ei olisi edes olemassa, vastaa lähes täysin suoraa verkkoyhteyttä. Nighthawk dominoi edelleen täysin Linksysia, ja rupinen pikkubuffalo tekee edelleen vanhentunutta parhaansa. Absoluuttisesti tarkasteltuna Nighthawk ja Linksys suoriutuvat latauksesta hieman paremmin kuin latauksesta, mutta se ei ole mitään ihmeellistä. Tämä lopputulos pysyy samana: Homebrew Special pysyy verkon perässä (kumma kyllä, jopa paremmin kuin suora yhteys 10 000 yhteyden/10K tiedoston testissä), Nighthawk on selvästi hintalappunsa arvoinen Linksysiin verrattuna, ja Linksys on, no, edullinen.
Tässä viimeisessä kuvaajassa meillä on kuitenkin uudet tulokset – lohenpunaiset palkit, jotka ovat melko tasaisesti hieman yli 200mbps koko kuvaajassa. Tuo on Homebrew Special, joka taivuttaa kryptolihaksiaan. Siinä on käynnissä OpenVPN-palvelin. Tätä testiä varten WAN-puolen palvelin, Menhir, on yhdistetty reitittimen sisäiseen OpenVPN-palvelimeen. Homebrew Specialin LAN-puolen liikenne ohjataan VPN-tunnelin läpi, joten Menhir tavoittaa Monolithin (LAN-puolen palvelimen) LAN-IP-osoitteen melko vaikuttavan 2048-bittisen, SSL-pohjaisen salauksen avulla. Kun otetaan huomioon, että kukaan ei vielä tarjoa yli 200 Mbps:n Internet-yhteyksiä alueellani, tämä saa sisäisen salausnörttini tanssimaan riemusta. Voisin kirjaimellisesti salata jokaisen yksittäisen tavun Internet-liikenteestäni, kumpaankin suuntaan, ilman suorituskyvyn heikkenemistä.
Yksi nopea varoitus lopuksi
Niin vaikuttava kuin pieni Homebrew Specialini onkin, siitä puuttuu yksi asia, jonka kaikki kolme muuta kilpailijaa tarjoavat: langaton yhteys. Voisin lisätä langattoman kortin Homebrew’hun ja saada sen palvelemaan langattomasti, mutta tällä hetkellä en aio tehdä niin. Tiedän liiankin hyvin, mitä PC:n langattomia kortteja on saatavilla, ja ne kaikki haisevat jäällä. Jopa halvat laitteet, kuten Linksys tai Buffalo, olisivat langattoman kattavuuden ja kantaman suhteen surkeita, eikä Nighthawk ole edes samassa luokassa. Se on todella laserohjattu atomihöyryvasara, kun on kyse langattomasta kantamasta, kattavuudesta ja samanaikaisista yhteyksistä. (Minulla on yksi sellainen, joka kattaa 50+ käyttäjää 53 000-neliöisessä tilassa nurkasta nurkkaan juuri nyt.)
Tämän sanottuasi mikään ei estä sinua käyttämästä erillistä WAP:ia (Wireless Access Point) tiukasti Wi-Fi-tehtävien hoitamiseen. Omassa talossani se on pari Ubiquiti ”hockey puck” WAP:ia, yksi talon jokaiseen kerrokseen. Niiden hallinta on hieman työläämpää kuin Nighthawkin, mutta pari maksaa puolet vähemmän. Ne ovat melko tavallisia Linux-laitteita, joihin voi mennä suoraan SSH:lla, ja niitä hallitaan melko siistillä pienellä Web-sovelluksella, jota voi käyttää… arvaattehan, suoraan Homebrew Specialilla. (Ubiquiti-palvelimen siirtäminen työasemaltani Homebrew Specialiin on yksi ensimmäisistä tehtävistäni tämän jutun jälkeen, ja siirrän sen sitten aktiiviseen käyttöön kotitoimistoverkkoni eteen.)
Perusteellisuuden nimissä on syytä huomioida yksi yhteinen rajoitus, joka on jotakin kaikilta hallinnoimiltani kuluttajaverkkolaitteilta: halu käynnistyä uudelleen melkein minkä tahansa muutoksen jälkeen. Jotkut näistä uudelleenkäynnistyksistä kestävät reilusti yli minuutin. Minulla ei ole aavistustakaan, miksi, mutta oli syy mikä tahansa, Homebrew Special ei kärsi tästä alan standardista. Kun teet muutoksen, teet sen, olet valmis. Entä jos sinun täytyy käynnistää Special uudelleen? Se käynnistyy uudelleen 12 sekunnissa. (Ajoitin sen laskemalla pudotetut pingit.)
Jos siis numerot saivat sinut vakuuttuneeksi ja haluat rakentaa oman Homebrew Specialin, tarvitset vain tietokoneen, jossa on kaksi fyysistä verkkoliitäntää. Se voi olla erityinen mini-PC, kuten tässä käyttämäni, tai mikä tahansa vanha laatikko, joka sinulla on lojumassa ja johon voit tunkea kaksi verkkokorttia. Älä anna ensimmäisen kuvakaappauksen pelottaa sinua. Oman todella nopean reitittimen rakentaminen ei ole kovin vaikeaa. Ja jos huudat etenemissuunnitelmaa, me itse asiassa hahmottelemme prosessin aina ”tässä on tavallinen tietokone” ja ”tässä on reititin, ja näin konfiguroit sen” välille pian.
Jim Salter (@jrssnet) on kirjailija, puhuja, pienyrityksen omistaja, palkkatyöläinen järjestelmänvalvoja ja kolmen lapsen isä – ei välttämättä tässä järjestyksessä. Hän sai ensimmäisen todellisen kosketuksen avoimeen lähdekoodiin pyörittämällä Apachea omalla FreeBSD 3.1 -palvelimellaan vuonna 1999, ja siitä lähtien hän on ollut FOSS:n kiihkeä puolestapuhuja. Hän myös loi ja ylläpitää http://freebsdwiki.net ja http://ubuntuwiki.net.
.