Izdelajmo odprtokodni usmerjevalnik

Objavljeno: 11.6.2019 | Avtor: Simon Peter Vavpotič | Kategorija: Dosje | Revija: Posebna 2019

Odprtokodni usmerjevalnik s požarnim zidom lahko omogoča kakovostno in poceni zaščito domačih računalnikov pred nevarnostmi z interneta. Kako izbrati strojno osnovo? Katero programsko opremo namestiti in kako jo prilagoditi svojim željam, dopolniti ali popraviti? Lahko usmerjevalnik tudi omrežna podatkovna shramba ali predvajalnik filmov?

Razvoj namenske odprtokodne programske opreme za omrežne usmerjevalnike poteka že vsaj tri desetletja. Najprej so razvijalci prisegali na peceje, ki so jih opremili z več omrežnimi karticami, in v operacijskem sistemu vzpostavili ustrezne dodatne funkcionalnosti za usmerjanje paketov IP ter požarni zid. Osnovne funkcionalnosti so bile že vgrajene v operacijske sisteme, za podporo kompleksnejšim pa smo morali s spleta prenesti dodatno sistemsko programsko opremo in jo namestiti, kar velja še danes. Vendar so bili peceji energetsko potratni, sorazmerno dragi in ne preveč varni usmerjevalniki, v njihovih operacijskih sistemih pa so hekerji kmalu odkrili številne varnostne luknje. Hkrati so računalniški trg profesionalne omrežne opreme v tem času preplavile hitrejše, zmogljivejše in učinkovitejše namenske naprave, ki so združevale tako strojno kot programsko opremo.

Varnost na prvem mestu

Čeprav lahko le prebojni test pokaže, kako varno je pred vdori hekerjev naše intranetno omrežje, nam odprtokodne rešitve omogočajo vpogled v ključno sistemsko programsko opremo in tudi njeno prikrajanje po lastnih željah. Pri tem igrajo pomembno vlogo možnosti zavarovanje pretoka podatkov in omejitev uporabe premalo varnih komunikacijskih protokolov. Zagotoviti moramo predvsem varno upravljanje omrežne naprave, ki mora biti po možnosti v celoti del njenega komunikacijskega sestava, saj to onemogoča hekerjem, da bi na kakršenkoli način prodrli v njen operacijski sistem.

Zadnje bi bilo mogoče le v primeru grobih napak v osnovnih programskih knjižnicah za podporo protokolom IP ali vgrajeni programski opremi usmerjevalniških čipov, ki bi, denimo, zaradi nezaščitenih podatkovnih struktur, v določenih primerih v glavnem pomnilniku, lahko izvedla del predolge podatkovne vsebine kot programsko kodo.

Ko se je pred dobrimi desetimi leti izkazalo, da tudi te niso več kos hekerjem ali pa ne zmorejo dovolj dobro zaščititi računalnikov v intranetu, je razvoj odprtokodne programske opreme dobil nov zagon. Predvsem velika podjetja, ki so zaradi vdorov hekerjev utrpela največjo škodo, so si zaželela neprebojnih odprtokodnih rešitev, v katerih bi lahko njihovi programerji enostavno preverili obstoj morebitnih odzadnjih vrat ali pa programje sami dopolnili in s tem izboljšali varnost.

Namenska strojna oprema z odprto arhitekturo

Pomen odprtokodne programske opreme so končno zaznali tudi nekateri proizvajalci namenske strojne opreme, ki so bili pripravljeni razkriti podrobno zgradbo in delovanje svojih izdelkov ter se s tem odreči ekskluzivnosti svoje vgrajene programske opreme. Nekateri so v postopnem opuščanju razvoja lastne programske opreme in prehodu na odprtokodne rešitve videli celo prednost. V razvoj odprtokodnih rešitev so se vključili tudi nekateri proizvajalci namenskih mikrokrmilniških čipov za omrežne usmerjevalnike, ki so prej dokumentacijo nudili le pooblaščenim proizvajalcem strojne opreme, danes pa je na voljo vsem uporabnikom interneta.

V pestri ponudbi majhnih usmerjevalnikov različnih proizvajalcev strojne opreme na spletu danes ni malo takih, ki omogočajo zamenjavo vgrajene programske opreme z alternativno odprtokodno. Taka sta, na primer, ASUS RT-N16, naslednik uspešne serije usmerjevalnikov WRT54GL, ki temelji na procesorju 533 MHz z jedri ARM (v usmerjevalniku tečejo samo s 480 MHz) in Broadcomovem usmerjevalniškem čipu BCM53115S, ter Netgate ALIX m1n1wall 2D3 s procesorjem AMD Geode LX800 CPU, pecejevsko arhitekturo in z ukazi x86.

Oba omogočata tudi brezžično povezljivost oziroma usmerjanje v brezžična omrežja. Pri tem ima ASUS RT-N16 celo tri antene, s katerimi omogoča hitrejši brezžični prenos podatkov prek omrežja Wi-Fi in prilagajanje moči signala dejanskim potrebam. Podobno zgradbo ima tudi Netgate ALIX, le da moramo kartico za Wi-Fi za vodilo miniPCI kupiti posebej in jo sami vgraditi. Cena ASUS RT-N16 je v ZDA okoli 85 USD, za Netgate ALIX pa bomo morali odšteti 225 USD oziroma približno toliko kot za nov mini PC brez podatkovnega pogona. Je pa res, da ima Netgate ALIX tri ethernetne priključke.

Mikroračunalniki Banana Pi

Visoka cena in nezaupanje v varnost lastniške vgrajene programske opreme sta k razvoju preprostih odprtokodnih rešitev, namenjenih predvsem domači rabi, spodbudila tudi snovalce mikroračunalnikov, med katerimi je bil dolgo najuspešnejši Raspberry Pi. Vendar so ga na tem področju prehiteli nekateri mikroračunalniki iz družine Banana Pi, ki obsega od z Raspberry Pi Zero primerljivih mikroračunalnikov do takih s štirimi procesorskimi jedri ARM, vgrajenimi stikalno-usmerjevalni čipi in vodili SATA, ki omogočajo priklop diskov in SSD.

Za gradnjo odprtokodnega usmerjevalnika in/ali omrežne shrambe so trenutno najprimernejše štiri razvojne plošče Banana Pi BPI: R1, R2, W2 in R64. Banana Pi BPI-R1 je najstarejša in temelji na sorazmerno počasnem 32-bitnem mikroprocesorju Allwinner A20 z jedroma ARM Cortex A7, ki delujeta pri frekvenci z 1 GHz. 1 GB glavnega pomnilnika jedri delita z grafičnim jedrom ARM Mali 400 MP2, ki tiktaka pri 432 MHz. Od petih ethernetnih priključkov (vse naštete plošče Banana Pi omogočajo povezovanje z 10/100/1000 Mb/s) je eden namenjen priklopu na internet, ostali pa intranetu. Povezljivost z omrežji Wi-Fi zagotavlja vgrajeni brezžični modul. Razvojna plošča omogoča tudi neposredno vgradnjo diska 2,5'' ali SSD in dobro podpira večpredstavnost, ki poleg priključka za digitalno kamero vključuje še vgrajeni mikrofon, tri priključke USB (2x USB 2.0 in napajalni USB), priključek HDMI za monitor, infrardeči sprejemnik za daljinsko upravljanje in banansko vtičnico za stereo zvok.

Banana Pi BPI-R2 ima precej zmogljivejši 32-bitni procesor MTK MT7623N s štirimi jedri Cortex-A7, ki tiktakajo pri 1.3 GHz, ter 2 GB RAM, ki ga procesorska jedra delijo z grafičnim jedrom ARM Mali 450 MP4. Priključkov za ethernetno povezovanje je prav tako pet, pri čemer je le eden namenjen povezavi z internetom. Vgradimo lahko tudi SSD 1,3'' ali disk z vodilom SATA III in krmilnik MT7615 za brezžične povezave Wi-Fi. Večpredstavna podpora obsega priključek HDMI, ki podpira tudi prenos zvoka po protokolu I2S, infrardeči sprejemnik in tri zunanje priključke USB, od katerih sta dva USB 3.0.

Banana Pi BPI-R64 temelji na 64-bitnem dvojedrnem mikroprocesorju MediaTek MT7622 z jedroma ARM Cortex-A53, ki tiktakata z 1,36 GHz. Ima 1 GB RAM in omrežni krmilnik s štirimi intranetnimi priključki ter posebnim priključkom za priklop na internet. Integriran je tudi krmilnik Wi-Fi, MTK7615, vendar za strogo namenski mikroračunalnik, namenjen izključno gradnji usmerjevalnikov omrežnih shramb, ki v primerjavi s svojimi predhodniki nima večpredstavnih priključkov in tudi ne priključka za monitor. Zato ga moramo upravljati prek žične ali brezžične povezave. Vseeno lahko vgradimo tudi SSD 1,3'' ali disk z vodilom SATA III.

Banana Pi BPI-W2 ima 64-bitni Realtekov mikroprocesor s štirimi jedri ARM Cortex-A53 in je zato po procesorski moči trenutno najzmogljivejši. Vsebuje tudi grafično jedro ARM Mali T820 MP3, ki s procesorskimi jedri deli 2 GB RAM. Ethernetna priključka sta v nasprotju ostalimi ploščami samo dva, zato moramo za priklop več računalnikov kupiti še omrežno stikalo. Možnosti za vgradnjo modula Wi-Fi ni. Kljub temu imamo kar dva priključka SATA z napajanjem, v katera lahko pokončno vstavimo diska 2,5'' ali SSD. Po drugi strani imamo poleg izhodnega priključka HDMI na voljo še vhodnega. Ob tem je tudi več vhodnih in izhodnih avdio priključkov ter priključka USB 2.0 in USB 3.0.

Vsekakor je zato Banana Pi BPI-W2 primernejši za gradnjo večpredstavnih naprav, denimo predvajalnika filmov, kot gradnjo usmerjevalnika. Na to nas navaja tudi priključek za napajanje ventilatorja, ki lahko v vročih poletni dneh hladi razbeljeno čipovje brez hladilnih reber.

Povejmo še, da potrebujejo omenjene razvojne plošče napajanje 12 V s tokovno zmogljivostjo 2 A ali več, medtem ko za Banana Pi BPI-R1 potrebujemo napajanje 5 V z enako tokovno zmogljivostjo.

Programska oprema

Ker je bil Raspberry Pi prvi ceneni mikroračunalnik, so ga nadobudni programerji hitro usvojili in pripravili različne programske rešitve za posamezne omrežne funkcionalnosti, kot so usmerjevalnik, požarni zid, omrežna vrata, omrežna shramba itn. Zadnje so kasneje prenesli tudi na zmogljivejše Banana Pi s stikalno-usmerjevalnimi čipi in fizično ločitvijo interneta in intranetnih segmentov. Tako ni nevarnosti, da bi kateri od intranetnih računalnikov, ki bi se okužil z zlonamerno programsko opremo, zaobšel usmerjevalnik tako, da bi nekaj podatkovnega prometa mimo vidnih sistemskih nastavitev preusmeril neposredno na internet.

Danes je na internetu veliko namenske odprtokodne vgradne programske opreme. Ločimo jo na vgradno, ki jo prenesemo na ustrezen pomnilniški medij in ga nato preprosto vstavimo v usmerjevalnik, in klasično programsko opremo, ki jo namestimo z zunanjih podatkovnih nosilcev. Med prvo so najpopularnejši OpenWrt, DD-WRT, DebWRT, HyperWRT in Tomato, med drugo pa pfsense, OPNsense in m0n0wall (katerega razvoj je opuščen) za operacijski sistem FreeBSD ter Zeroshell in IPFire za Linux.

Vseeno ne smemo pričakovati, da bomo z vgradnjo programske opreme v hipu rešili vse težave. Največ dela je z nastavitvami in dodajanjem manjkajočih funkcionalnosti, ki jih potrebujemo za zagotavljanje želene stopnje varnosti.

Je Wi-Fi lahko (ne)varen in kako se ga znebimo?

Glavni usmerjevalnik mora omogočati kakovostno zaščito pred nevarnostmi z interneta. Brezžične povezave so vtem pogledu ahilova peta, saj vemo, da so v komunikacijskih protokolih luknje, ki lahko omogočijo napadalcu vdor v intranet z ne preveč oddaljene lokacije. Obenem pri testiranju različne odprtokodne programske opreme za usmerjevalnike hitro ugotovimo, da pogosto že začetne nastavitve omogočajo enakovredno rabo Wi-Fi in ethernetnega omrežja ter so tako upravljavske storitve na voljo tudi prek brezžičnih povezav.

Če brezžične povezljivosti ne potrebujemo, je morda najbolje, da brezžični modul električno onemogočimo ali odstranimo, kar lahko storimo tudi pri številnih prenosnih računalnikih. Bojazni, da bi odprtokodna programska oprema zaradi tega ne delovala, skoraj ni, saj operacijski sistem za neobstoječo strojno opremo preprosto ne naloži gonilnikov, ostali gonilniki pa delujejo normalno (kar sem tudi sam preveril pri odprtokodnem operacijskem sistemu Bananian, ki je podrazličica OpenWRT).

V Banana Pi BPI-R1 skrbi za komunikacijo prek Wi-Fi poseben modul z mikrokrmilniškim čipom RTL8192CU WLAN, ki je z glavnim mikroprocesorjem AllWinner A20 povezan prek posebnega notranjega priključka USB. Brezžični modul je k sreči na majhni ploščici tiskanega vezja, ki je na glavno tiskanino prispajkana z le dvanajstimi robnimi kontakti. Najlažje jo odstranimo tako, da najprej odspajkamo šest kontaktov na tisti strani, kjer so priključki za anteni. Upoštevati moramo, da je brezžični modul tudi prilepljen, zato si lahko pomagamo tudi z nožkom olfa, ki ga počasi porinemo med komunikacijski modul in glavno tiskanino. Vsekakor moramo nekoliko segreti tudi kontakte na drugi strani, da jih omehčamo. Ko lepilo popusti in lahko komunikacijski modul z ene strani znatno privzdignemo, je potrebno samo še malo gibanja gor in dol, da kontakti popustijo in lahko modul odstranimo. Modul je tako še vedno uporaben za kak drug projekt.

Vseeno opozorimo, da je pravkar opisana »kirurška« operacija primerna samo za izkušene elektrotehnike, pa tudi, da se je lotevate izključno na lastno odgovornost in da s spreminjanjem vezja lahko izgubite jamstvo! Če ne potrebujete Wi-Fi, raje izberite razvojno ploščo, ki ga nima.

Ne združujte preveč funkcionalnosti!

Čeprav ima večina razvojnih plošč Banana Pi za omrežne usmerjevalnike na voljo sorazmerno veliko večpredstavnih komponent, z združevanjem funkcionalnosti v eni napravi vseeno ne gre pretiravati. Še posebej tvegana bi bila uporaba mikroračunalnika s funkcionalnostmi večpredstavne naprave, igralne konzole, požarnega zidu, usmerjevalnika med intranetom in internetom ter strežnika v omrežju točka-točka (P2P, angl. peer-to-peer), saj bi lahko ob morebitnem vdoru vanj heker ob pomoči mikrofona prek interneta celo prisluškoval našim domačim pogovorom.

Fizična ločitev namenskih računalnikov, ki zagotavljajo varen dostop do interneta, in ostalih intranetnih računalnikov je vsekakor potrebna, saj je računalnik, kamor ne nameščamo nove programske opreme ali ne posodabljamo obstoječe vsakih nekaj dni, varnejši pred vdori hekerjev. Obenem v sodobnih operacijskih sistemih tipa Linux pogosto uporabljamo tudi spletne namestitve, ki črpajo manjkajoče programske module iz različnih javnih računalniških oblakov, ki so lahko prav tako tarče hekerjev.

Razvoj programske opreme za Banana Pi

Čeprav Banana Pi še zdaleč ni edina odprtokodna računalniška zasnova, ki omogoča varno usmerjanje podatkov med internetom in intranetom, so možnosti razvoja programske opreme zanjo omejene samo z zmogljivostjo strojne opreme.

Snovalci odprtokodnih usmerjevalnikov so se potrudili, da so na internetu vsem na voljo podrobne informacije o njihovi arhitekturi in delovanju posameznih čipov kakor tudi o že pripravljeni (zastonjski) programski opremi, s katero jih lahko takoj začnemo uporabljati. Čeprav se moramo za nekatere tehnične podrobnosti sprehoditi po spletnih straneh njihovih proizvajalcev, kljub temu najdemo vse. V veliko pomoč pri pregledovanju odprtokodnih arhitektur so nam tudi seznami spletnih strani, ki so jih pripravili snovalci, ter podrobne električne sheme, s katerih lahko razberemo oznake in povezave med ključnimi čipi, ki sestavljajo usmerjevalnik.

Zbrana dokumentacija je dovolj podrobna, da bi se lahko na njeni osnovi izkušen računalniški arhitekt, tehnolog in programer samostojno lotili razvoja lastne odprtokodne programske rešitve za podpro delovanju usmerjevalnika, vendar bi za njeno realizacijo skoraj gotovo potreboval več let. Zaradi kompleksnosti strojne opreme in funkcionalnosti, ki bi jih bilo treba podpreti, bi verjetno za osnovo uporabil katerega od odprtokodnih operacijskih sistemov tipa Linux.

Kaj je vgradna programska oprema?

Čeprav odprtokodno programsko opremo za usmerjevalnike ločimo na vgradno in splošnonamensko, za katero moramo predhodno namestiti operacijski sistem, vseeno vgradna programska oprema ni en sam program, kot smo je vajeni pri programiranju mikrokrmilnikov, temveč gre za datoteko, katere vsebino prenesemo na ustrezen pomnilniški medij (pomnilniška kartica microSD, SSD, disk).

Sestavlja jo predpripravljena podatkovna vsebina sistemskega pogona, na katerem sta nalagalnik operacijskega sistema (navadno na ločeni zagonski particiji) ter operacijski sistem z gonilniki in vso potrebno sistemsko ter aplikacijsko programsko opremo. Zato moramo na internetu poiskati vgradno programsko opremo, ki je natanko prilagojena za naš usmerjevalnik. K sreči je za najbolj popularne strojne osnove, kot je Banana Pi, vseeno veliko izbire vgradne programske opreme.

Vendar moramo v nasprotju z osebnim računalnikom, kamor operacijski sistem naložimo s cedeja ali podatkovnega ključka, vgradno programsko opremo najprej ob pomoči osebnega računalnika iz datoteke s sliko sistemskega diska (npr. *.img) prenesti na ustrezen pomniški medij, ki ga nato preprosto vstavimo v napravo. Nato s spleta dodamo manjkajočo programsko opremo in izvedemo nastavitve. S tem je usmerjevalnik pripravljen za uporabo. Po želji lahko omogočimo tudi samodejne posodobitve programske opreme z interneta.

Sestavimo vgrajeno programsko opremo brez programiranja

V že izdelanih slikah sistemskih pogonov, ki jih lahko prekopiramo z interneta in prenesemo na kartico microSD, nimamo možnosti izbire funkcionalnosti, ampak moramo neželene funkcionalnosti ročno odstraniti med delovanjem, manjkajoče pa dodati. Denimo, za izkušene uporabnike pogosto okensko grafično okolje ne pomeni prednosti, zato na spletu najdemo veliko slik sistemskih pogonov brez njega. Če pa si ga vseeno želimo, ga lahko kasneje prenesemo z interneta in vgradimo.

Snovalci vgrajene programske opreme OpenWRT, ki temelji na Ubuntu 14.04, so namesto tega pripravili postopek za sestavljanje in prevajanje vgrajene programske opreme z možnostjo izbora funkcionalnosti. Za prevajanje programske opreme potrebujemo računalnik z Ubuntu 14.04 (oziroma OpenWRT) ali novejšim, v katerega namestimo razvojno okolje z ukazom:

apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc unzip subversion file.

Nato z ukazom

git clone github.com/BPI-SINOVOIP/BPI-OpenWRT.git

iz GitHub prenesemo še razvojno okolje za OpenWRT. Iz imenika BPI-OpenWRT nazadnje zaporedoma zaženemo ukaza

./scripts/feeds update -a

in

./scripts/feeds install -a,

nakar v grafičnem vmesniku izberemo želene module sistemske programske opreme in ciljno strojno osnovo. Po prevajanju, ki ga zaženemo z ukazom make, v imeniku bin/sunxi v datoteki tipa *.img najdemo sliko sistemskega pogona, ki jo lahko prenesemo na kartico microSD. Povejmo še, da lahko ukazu make dodamo še opcijo -j4, če potrebujemo kodo za štirijedrni procesor oziroma želimo izkoristiti vsa štiri jedra.

Se izplača?

Odprtokodni usmerjevalniki z odprto strojno arhitekturo omogočajo sestavljanje in gradnjo učinkovite programske opreme, s katero si lahko iz domačega intraneta zagotovimo varen dostop do interneta in internetnih storitev. Vseeno moramo pri tem upoštevati dejstvo, da »vgrajena« programska oprema na kartici microSD še zdaleč ni edina. Za njen zagon mora procesor najprej zagnati poenostavljen BIOS, ki podobno kot pri peceju najprej ugotovi, da je v reži vstavljena kartica microSD z zagonsko in s sistemsko particijo. Nato zažene nalagalnik operacijskega sistema iz zagonske particije itn.

Vendar smo pri vzpostavitvi varnega usmerjevalnika spet pred dilemo, ali lahko zaupamo vgrajenemu BIOS. Vsekakor ni odveč, če se prepričamo o njegovi pristnosti in na spletu preverimo možnosti za njegovo zamenjavo z alternativno programsko opremo ali posodobitev.

Vendar priznam, da do tod v slabem dnevu časa, odkar so mi 16. maja v obtolčeni in nekoliko raztrgani kartonasti pošiljki dostavili Banana Pi BPI-R1, še nisem prišel. No, k sreči je omrežni usmerjevalnik, ki sem ga za okoli 100 evrov naročil v eni od slovenskih spletnih trgovin, »odisejado« prestal brez poškodb. Res pa je, da lahko za krmilnik Wi-Fi, RTL8192CU WLAN z interneta prenesemo datoteko z originalno vgrajeno programsko premo. Le zakaj tega ne bi mogli storiti tudi za procesor Allwinner A20? O tem pa kaj prihodnjič …

Nadaljnje branje

Domača stan večnamenskih mikroračunalnikov Banana Pi: wiki.banana-pi.org

Seznam projektov razvoja vgrajene programske opreme za omrežne usmerjevalnike: en.wikipedia.org/wiki/List_of_router_firmware_projects

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!
Prijava

ph

Komentirajo lahko le prijavljeni uporabniki