Banana Pi R64 marÅ”rutÄtÄjs ā Debian, Wireguard, RKN
Banana Pi 64 ir viena borta dators, kas lÄ«dzÄ«gs Raspberry Pi, taÄu ar vairÄkiem Ethernet portiem, kas ļauj to pÄrvÄrst par marÅ”rutÄtÄju, kura pamatÄ ir vispÄrÄja Linux izplatÄ«Å”ana.
JÄ, Openwrt jau ir, bet tam ir savas problÄmas, tÄ GUI un CLI; Ir Mikrotik, bet tam atkal ir savs GUI/CLI, un Wireguard nestrÄdÄ no kastes... VispÄr gribu rÅ«teri ar elastÄ«giem iestatÄ«jumiem, paliekot standarta Linux ietvaros, ar kuru jÅ«s strÄdÄjat ar katru dienu.
RakstÄ ar nosaukumiem BPI, R64, vienplate, es domÄju to paÅ”u - paÅ”u Banana Pi R64 vienplati.
AttÄla izvÄle. LejupielÄdÄt, izmantojot eMMC
Pati pirmÄ prasme, kas jÄapgÅ«st, strÄdÄjot SBC kopumÄ, un jo Ä«paÅ”i ar R64, tas nozÄ«mÄ iemÄcÄ«ties tajÄ ielÄdÄt operÄtÄjsistÄmu un spÄju ar to mijiedarboties, jo R64 nav pieslÄgvietas monitoram (piemÄram, HDMI). Kad viss nokrita - pÄrstÄja darboties Wifi, Ethernet, Bluetooth, USB utt.. Ir UART, caur kuru interfeisu vienmÄr var redzÄt, kas nogÄja greizi, kÄ arÄ« palaist pÄris komandas no konsoles, ja nepiecieÅ”ams.
Algoritms savienojuma izveidei ar R64, izmantojot USB-UART:
mÄs skrienam uz radio detaļu veikalu pÄc USB-UART kabeli (PL2303, Serial-to-USB)
pievienojiet vienu USB galu datoram, bet otru, UART, R64, ar trim vadiem no Äetriem, kÄ parÄdÄ«ts attÄlÄ zemÄk
palaist datora konsolÄ sudo minicom
PÄc tam vairumÄ gadÄ«jumu parÄdÄ«sies vienas plates konsole = veiksme.
JÅ«s varat redzÄt sÄ«kÄku informÄciju Å”eit.
PÄc tam vienkÄrÅ”Äkais veids ir ielÄdÄt operÄtÄjsistÄmu no SD kartes: lejupielÄdÄjiet lÄ«dz saite attÄlu un aizpildiet to:
MÄs ievietojam karti R64 SD slotÄ, ieslÄdzam to un novÄrojam pievienotÄs konsoles ielÄdi vispirms uboot, pÄc tam standarta Linux ielÄdi.
AlternatÄ«va sÄknÄÅ”anas iespÄja ir izmantot 64Gb karti, kas jau ir iebÅ«vÄta R8, ko sauc par eMMC. SaskaÅÄ ar wiki norÄdÄ«jumiem mÄs kopÄjam attÄlu ierÄ«cÄ
/dev/mmcblk0 uz BPI, restartÄjiet, izÅemiet SD karti, atkal ieslÄdziet BPI... un tas nedarbojas. KÄ iet uz priekÅ”u un atpakaļ Boot select netraucÄ.
Fakts ir tÄds, ka vismaz BPI ir jÄiestata Ä«paÅ”s karodziÅÅ”, lai varÄtu palaist no iekÅ”ÄjÄ zibatmiÅas diska:
RažotÄjs R64 (Ķīna) ievietoja Å”o binÄro failu Å”eit. Tas, ko tas dara, nav zinÄms (nav avota kodu), taÄu tas nedarbosies arÄ« bez tÄ.
KopumÄ pÄc tam attÄli sÄk ielÄdÄt no eMMC. Ja vÄlaties to izdomÄt un izveidot attÄlus no nulles, tad abos gadÄ«jumos (SD/eMMC) ir jÄuzraksta vÄl vairÄki faili (SD kartes priekÅ”ielÄdÄtÄjs, ATF, u-boot), lai tikai tiktu pie kodola ielÄdÄÅ”anas. Å Ä« tÄma joprojÄm ir attÄ«stÄs, bet mums galvenais, lai strÄdÄ un labi.
Tagad lejupielÄdÄju caur eMMC, godÄ«gi sakot, neizmantoju, pietiek ar SD karti, bet pavadÄ«ju diezgan daudz laika, lai tÄ darbotos, tÄpÄc lai tas ir rakstÄ.
OperÄtÄjsistÄmas izvÄle. Armbija
Pirmais lietojumprogrammas uzdevums ir palaist VPN, dabiski Wireguard. Uzreiz atklÄjÄs, ka kodola pusÄ tas nav samontÄts un nav galvenes. Es pÄrbÅ«vÄju kodolu un, kÄ tas ir mans ieradums ar x86, saliku kodola moduli, izmantojot DKMS. TomÄr pat nelielu inženierkomunikÄciju izveides Ätrums uz arm64 mani nepatÄ«kami pÄrsteidza. Un tad vajadzÄja vÄl vienu kodola moduli utt. KopumÄ izrÄdÄs, ka visu, kas saistÄ«ts ar kodolu, vislabÄk ir salikt uz silta x86 klÄpjdatora, pÄc tam vienkÄrÅ”i kopÄjot pÄrsÅ«tÄ«t uz R64, pÄrstartÄt un pÄrbaudÄ«t.
VÄl viena lieta ir userspace daļa. ManÄ gadÄ«jumÄ, izvÄloties Debian, viss arm64 arhitektÅ«rai jau atrodas vietnÄ packages.debian.org, un nekas nav jÄpÄrbÅ«vÄ.
Lai neražotu vÄl vienu velosipÄdu, I pÄrnestsArmbija uz BPI R64.
PareizÄk sakot, Ŕī: lietotÄja telpas daļa ir Armbian, un kodols tiek Åemts no repozitorija atklÄts-A. JaunÄko attÄlu var lejupielÄdÄt Å”eit.
Visas darbÄ«bas, kas saistÄ«tas ar R64 programmatÅ«ras daļas izstrÄdi, tiek veiktas forums. VispÄrÄ«gi runÄjot, pats ražotÄjs cenÅ”as popularizÄt Openwrt marÅ”rutÄtÄju, taÄu, pateicoties izstrÄdÄtÄja Frank no VÄcijas darbÄ«bai, visas funkcijas Ätri nonÄk Debian kodolÄ. PÄrsteidzoÅ”i, Frenks ir aktÄ«vs katrÄ foruma pavedienÄ.
Darba telpas organizÄcija: vadi
AtseviŔķi es vÄlÄtos jums pastÄstÄ«t, kÄ izstrÄdes/testÄÅ”anas laikÄ novietot SBC (ne tikai BPI) uz galda, lai visÄ telpÄ/birojÄ uz to netiktu palaists Ethernet kabelis no interneta avota. Fakts ir tÄds, ka, no vienas puses, jums ir jÄnodroÅ”ina aparatÅ«ra ar internetu, bet, no otras puses, viss Å”ajÄ aparatÅ«rÄ var sabojÄties, un, pirmkÄrt, Wi-Fi.
PirmkÄrt, es nolÄmu nopirkt lÄtu USB-Wifi āsvilpiā, iespraust to vienÄ«gajÄ BPI portÄ un aizmirst par vadiem. Lai to izdarÄ«tu, es iegÄdÄjos lÄtu TP-LINK TL-WN725N USB 2.0, taÄu ļoti drÄ«z kļuva skaidrs, ka tas nepacelsies: lai svilpe darbotos, ir nepiecieÅ”ams kodola draiveris, kura, protams, tur nebija. (vÄlÄk es samontÄju nepiecieÅ”amo RTL8XXXU draiveri, bet tas joprojÄm ir nepraktisks ). Un Ethernet kabelis uz brÄ«di sabojÄja telpas izskatu.
RezultÄtÄ man izdevÄs atbrÄ«voties no kabeļa ar Tenda MW3 (Wifi mesh system) palÄ«dzÄ«bu: es vienkÄrÅ”i noliku vienu kubu zem galda un ar metru garu Ethernet kabeli savienoju BPI ar pÄdÄjÄ LAN portu. PanÄkumi.
Stiepļu aizsargs, RKN, putns
Viena no lietÄm, kurai es vÄlos izmantot Banana PI, ir nodroÅ”inÄt bezmaksas piekļuvi vietnÄm, kuras bloÄ·Äjis RKN, lai varÄtu darboties Telegram un Slack zvani. Par Å”o tÄmu jau ir ierosinÄti raksti par HabrÄ: laiks, Š“Š²Š°, trÄ«s.
Es izvietoju tieÅ”i Å”o risinÄjumu, izmantojot Ansible: saite.
Tiek pieÅemts, ka VPS darbojas Ubuntu 18.04. Es pÄrbaudÄ«ju funkcionalitÄti divos mitinÄtÄjos EiropÄ: Amazon un Digital Ocean.
TÄtad, mÄs instalÄjÄm iepriekÅ” minÄto Armbian uz R64, tas ir pieejams caur ssh ar nosaukumu hm-bananapi-1 un ir interneta pieslÄgums. MÄs konsekventi izvietojam Ansible automatizÄcijas skriptus un palaižam paÅ”u instalÄciju uz R64:
TÄlÄk jums ir jÄizvieto mÅ«su VPN VPS tÄdÄ paÅ”Ä veidÄ:
ansible-playbook ./router.py -l current-vpn
Å eit arguments vienmÄr ir paÅ”reizÄjais-vpn, un faktiskais VPS nosaukums ir konfigurÄts mainÄ«gajÄ (Å”ajÄ gadÄ«jumÄ tas ir paris-vpn-aws-t2-micro-1):
Ak jÄ, pirms visÄm Ŕīm darbÄ«bÄm mapÄ ir jÄÄ£enerÄ noslÄpumi (it Ä«paÅ”i Wireguard atslÄgas). ./secrets, direktorijam vajadzÄtu izskatÄ«ties Å”Ädi tÄ.
IespÄjamÄ automatizÄcija Python
JÅ«s varat pamanÄ«t, ka tÄ vietÄ, lai tÄs bÅ«tu YAML formÄtÄ, Ansible komandas tiek kodÄtas Python skriptos. SalÄ«dzinÄjumam, kÄ parastajÄ veidÄ iespÄjot putnu dÄmonu:
with mapping:
append("name", "start bird")
with mapping("systemd"):
append("name", "bird")
append("state", "started")
append("enabled", "yes")
Ansible komandu rakstÄ«Å”ana Python ļauj atkÄrtoti izmantot kodu un kopumÄ paver visas universÄlÄs valodas iespÄjas. PiemÄram, putna instalÄÅ”ana uz R64 un VPS:
KopÄ: telegramma darbojas, linkedin un pornhub arÄ«, kopumÄ lietotÄja pieredze ir ok. Bet viss var salÅ«zt, ieskaitot Ä·Ä«nieÅ”u aparatÅ«ru.
Kodola atjauninÄjumi var bÅ«t arÄ« interesanti: piemÄram, es gribÄju atjauninÄt kodolu 5.4 => 5.6, labi, Wireguard jau ir izÅemts no kastes, nav nepiecieÅ”ams labot... Neko ÄtrÄk pateikts: es cÄ«tÄ«gi pÄrnesu ielÄpus no 5.4 uz 5.6, kodols tika palaists, tunelis uz VPS tika pingÄts, bet putns nevar izveidot savienojumu ar kļūdu "BGP Error" ... "I rolled back in horror" (c) uz 5.4; PÄreja uz 5.6 tika atlikta TODO.
TÄpÄc papildus marÅ”rutÄtÄja un VPS instalÄÅ”anai es pievienoju uzraudzÄ«bu (uz x86 Ubuntu 18.04), kas ir instalÄts atseviÅ”Ä·Ä resursdatorÄ ar Å”Ädiem komponentiem:
prometheus, alertmanager, blackbox_exporter ā viss docker
BrÄ«dinÄjumi tiek nosÅ«tÄ«ti uz telegrammas kanÄlu, izmantojot robotu metalmatze/alertmanager-bot ā arÄ« programmÄ Docker
tor robotam, lai robots varÄtu brÄ«dinÄt par situÄcijÄm, kad ir internets, bet Telegram joprojÄm nedarbojas un pats robots nevar izveidot savienojumu
piemÄrots brÄ«dinÄjumus: NodeVPNTproblÄmas (nav ping uz VPS), BirdVPNTproblÄmas (nav Bird sesijas), Antifiltra lejupielÄdes problÄmas (kļūda, ielÄdÄjot bloÄ·Ätas IP adreses), SiteTroubles (neveiksmÄ«gÄ telegramma nav pieejama)
Prometheus automÄtiskÄ atklÄÅ”ana ir konfigurÄta mapÄ /etc/prometheus/auto_http, kas ir piemÄrs resursdatora pievienoÅ”anai uzraudzÄ«bai (saimnieki netiek pÄrraudzÄ«ti pÄc noklusÄjuma):
TODO: 2 pakalpojumu sniedzÄji, 2 BPI, jebkuras apraides kļūmjpÄrlÄce
Papildus visam plÄnoju pieslÄgties pie diviem provaideriem, lai internets turpinÄtu strÄdÄt, pat ja vienam provaiderim bÅ«tu problÄmas ar tÄ«klu, vai aizmirsu samaksÄt par internetu utt un citi cilvÄciskie faktori.
Ir aprakstÄ«ta visprogresÄ«vÄkÄ lietotÄju pieredze par multi-wan tÄmu Å”eit Mwan3 sistÄmai saskaÅÄ ar Openwrt. Å im risinÄjumam ir bagÄtÄ«ga funkcionalitÄte, taÄu tÄ iestatÄ«Å”ana un darbÄ«ba kopumÄ vairÄkiem wan ir diezgan apgrÅ«tinoÅ”a. Tikai viens piemÄrs: ja jÅ«s ierodaties uz dažÄm vietnÄm no divÄm IP adresÄm vienlaikus, viÅiem tas var nepatikt, viÅi pÄrtrauks darboties => "internets nedarbojas."
Å emot vÄrÄ Å”o pieredzi, nolÄmu, ka multihoming pagaidÄm nav prioritÄte, tikai failover. Lai gan Ŕķiet, ka jaunÄkajÄs Linux versijÄs visam vajadzÄtu darboties ar vienu komandu, piemÄram:
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5
TÄtad, lai izvairÄ«tos no viena kļūmes punkta, mÄs Åemam 2 BPI, savienojam katru ar vienu pakalpojumu sniedzÄju, savienojam tos savÄ starpÄ un izveidojam savienojumu savÄ starpÄ dinamisku marÅ”rutÄÅ”anu, izmantojot putnu/OSPF.
TÄlÄk mÄs reklamÄjam vienu un to paÅ”u IP adresi katrÄ, ja pakalpojums ir pieejams (internets, DNS). Tas ir, mÄs paÅ”i nenostÄdÄ«sim noklusÄjuma marÅ”rutu, bet gan caur putnu. Es izspiegoju risinÄjumu Å”eit .
Å Ä« funkcionalitÄte vÄl nav ieviesta, mÄnÄ«gais koronavÄ«russ Å”eit piespÄlÄja (ne viss ieradÄs no Aliexpress; cits interneta veikals Layta solÄ«ja piegÄdÄt pÄc nedÄļas, bet pagÄjis vairÄk nekÄ mÄnesis; otrajam pakalpojumu sniedzÄjam nebija laika lai pagarinÄtu kabeli pirms karantÄ«nas, izdevÄs tikai dabÅ«t sienÄ caurumu kabeli).
KÄ pasÅ«tÄ«t R64
Pati dÄlis atrodas oficiÄlajÄ veikalÄ SinoVoip.
LabÄk ir arÄ« nekavÄjoties pasÅ«tÄ«t:
pÄrtika + informÄt ES vai ASV spraudÅa standartu
siltuma izlietne: radiatori/ventilatori; jo uzsilst gan CPU, gan slÄdža mikroshÄma
Ir nianse - oficiÄlajÄ veikalÄ piegÄdes cena jau kÄdu laiku kļuvusi neadekvÄti augsta. Menedžere Džūdija Huanga mani pÄrliecinÄja, ka kļūdu nav, un jÅ«s varat izvÄlÄties ePacket par 5 USD, bet es redzÄju, ka Krievijai ir tikai EMS par > 33 USD. NepatÄ«kami, bet ne kritiski. TurklÄt, ja izvÄlÄsieties piegÄdei jebkuru citu valsti (izbraucu cauri visiem kontinentiem), piegÄde maksÄs ~5$. Rusofobi?.. Bet tad konstatÄju, ka Francijai piegÄdes cena arÄ« ~30$, un nomierinÄjos.
RezultÄtÄ Džūdija piedÄvÄja veikt pasÅ«tÄ«jumu, bet nemaksÄt (mÄjiens: ielieciet karti mazÄk, lai automÄtiskais maksÄjums netiktu cauri); uzraksti viÅai un viÅa samazinÄs piegÄdes cenu lÄ«dz normÄlai. PanÄkumi.
JautÄjumi
Ne viss vÄl darbojas ideÄli.
ŠŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŠµŠ»ŃŠ½Š¾ŃŃŃ
Ansible=Python komandas tiek izpildÄ«tas lÄni, pat dÄ«kstÄves, 20-30 sekundes; par lielumu garÄks nekÄ x86 klÄpjdatorÄ. TurklÄt sÄkumÄ tie tiek izpildÄ«ti diezgan Ätri, ~3 sekundes, pÄc tam strauji bremzÄ. Tas var bÅ«t saistÄ«ts ar CPU uzkarÅ”anu (droselÄÅ”anu). ArÄ« Go kods darbojas ilgi:
# Š·Š°ŠæŃŠ¾Ń Š¼ŠµŃŃŠøŠŗ Š“Š»Ń ŠæŃŠ¾Š¼ŠµŃŠµŃ ŠøŠ· node_exporter Š½Š° Go
$ time curl -s http://172.30.1.1:9100/metrics > /dev/null
real 0m6,118s
user 0m0,005s
sys 0m0,009s
# Š¾Š“Š½Š°ŠŗŠ¾ ŃŠµŠ¼ŠæŠµŃŠ°ŃŃŃŠ° 51 Š³ŃŠ°Š“ŃŃ, Š½Šµ ŃŠ°Šŗ Šø Š¼Š½Š¾Š³Š¾
sa@bananapir64:~$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
51700
Wifi
Wifi darbojas, bet Armbian tas apstÄjas apmÄram pÄc dienas, raksta: