Banana Pi R64 bideratzailea - Debian, Wireguard, RKN
Banana Pi 64 Raspberry Pi-ren antzeko plaka bakarreko ordenagailua da, baina Ethernet hainbat ataka dituena, eta horri esker, helburu orokorreko Linux banaketan oinarritutako bideratzaile bihurtzea posible da.
Bai, dagoeneko badago Openwrt, baina baditu bere arazoak, bere GUI eta CLI; Mikrotik dago, baina berriro ere bere GUI/CLI du, eta Wireguard-ek ez du kaxatik kanpo funtzionatzen... Orokorrean, ezarpen malguak dituen router bat nahi dut, zuk lan egiten duzun Linux estandarraren esparruan mantenduz. egunero.
BPI, R64, taula bakarra izenen pean dagoen artikuluan, gauza bera esan nahi dut: Banana Pi R64 plaka bakarra bera.
Irudi bat aukeratzea. Deskargatu eMMC bidez
Lanean lortu behar duzun lehen trebetasuna SBC orokorrean, eta R64rekin bereziki, sistema eragile bat bertan kargatzen ikastea eta harekin elkarreragin ahal izatea esan nahi du, R64-k ez baitu monitore baterako atakarik (HDMI, adibidez). Dena erori zenean - Wifi, Ethernet, Bluetooth, USB, etab. funtzionatzeari utzi zion. UART bat dago, zeinaren interfazearen bidez beti ikusi ahal izango duzu zer gertatu den gaizki, eta, halaber, kontsolatik komando pare bat exekutatu, behar izanez gero.
USB-UART bidez R64-ra konektatzeko algoritmoa:
irratiko piezen dendara joaten gara USB-UART kable bat lortzeko (PL2303, Serial-to-USB)
konektatu USB mutur bat ordenagailura, eta bestea, UART, R64ra, lautik hiru harirekin, beheko irudian bezala
exekutatu ordenagailuaren kontsolan sudo minicom
Horren ostean, kasu gehienetan taula bakarreko kontsola agertuko da = arrakasta.
Xehetasun gehiago ikus ditzakezu Hemen.
Ondoren, modurik errazena sistema eragilea SD txartel batetik kargatzea da: deskargatu by link irudia eta bete:
Txartela R64 SD zirrikituan sartzen dugu, pizten dugu eta konektatutako kontsola lehenik uboot-a kargatzen dela ikusten dugu, ondoren Linux-en karga estandarra.
Abioko aukera alternatibo bat R64-n dagoeneko integratutako 8 Gb-ko txartela erabiltzea da, eMMC izenekoa. Wikiko argibideen arabera, irudia gailuan kopiatzen dugu
/dev/mmcblk0 BPIra, berrabiarazi, SD txartela kendu, BPI berriro piztu... eta ez du funtzionatzen. Nola joan eta aurrera Boot select ez kezkatu.
Kontua da BPIrentzat gutxienez bandera berezi bat ezarri behar duzula barneko flash drive batetik abiarazi ahal izateko:
R64 fabrikatzaileak (Txina) bitar hau argitaratu du Hemen. Zer egiten duen ezezaguna da (ez dago iturburu-koderik), baina hori gabe ere ez du funtzionatuko.
Oro har, honen ondoren, irudiak eMMC-tik kargatzen hasten dira. Irudikatu eta hutsetik irudiak sortu nahi badituzu, bi kasuetarako (SD/eMMC) hainbat fitxategi gehiago idatzi behar dituzu (SD txartelaren aurrekargatzailea, ATF, u-boot) nukleoa kargatzera iristeko. Gai hau oraindik dago garatzen da, baina guretzat gauza nagusia da funtzionatzen duela eta ondo.
Orain eMMC bidez deskargatzen dut, egia esan, ez dut erabiltzen, SD txartela nahikoa da, baina denbora dezente eman nuen funtzionatzen, beraz, artikuluan egon dadila.
Sistema eragile bat hautatzea. Armbian
Aplikazioaren lehen zeregina VPN bat abiarazteko da, Wireguard, jakina. Berehala jakin zen nukleoaren aldean ez zegoela muntatuta eta goibururik ez zegoela. Nukleoa berreraiki nuen eta, x86rekin dudan ohitura bezala, nukleoaren modulua muntatu nuen DKMS erabiliz. Hala ere, arm64-n utilitate txikiak ere eraikitzeko abiadurak desatsegina harritu ninduen. Eta gero beste nukleo-modulu bat behar zen, etab. Oro har, kernelarekin erlazionatutako guztia x86 ordenagailu eramangarri epel batean muntatzen dela ematen du, ondoren R64ra transferitzen dela kopia soil bidez, berrabiarazi eta probatu.
Beste gauza bat erabiltzaile-espazioaren zatia da. Debian aukeratzearen kasuan, arm64 arkitekturarako guztia packages.debian.org-en dago jada eta ez dago ezer berreraiki beharrik.
Beste bizikleta bat ez egiteko, nik porturatuarmbian BPI R64-n.
Edo hobeto esanda, hau: erabiltzaile-espazioaren zatia Armbian da, eta nukleoa biltegitik hartzen da Frank-A. Azken irudia deskargatu daiteke Hemen.
R64-ren software-zatiaren garapenari buruzko jarduera guztiak egiten dira forum. Orokorrean, fabrikatzailea bera Openwrt-erako bideratzailea ezagutarazten ahalegintzen da, baina Alemaniako Frank garatzailearen jarduerari esker, funtzio guztiak azkar amaitzen dira Debian-en nukleoan. Harrigarria bada ere, Frank aktiboa da foroko hari guztietan.
Lan-eremuaren antolaketa: hariak
Bereizita, esan nahiko nuke nola, garapenean/probak egiten ari diren bitartean, SBC bat (ez BPI bat bakarrik) mahai batean jarri, gela/bulego osoan Ethernet kable bat ez exekutatzeko. Kontua da, alde batetik, hardware bat Internetekin eman behar duzula, baina, bestetik, hardware horretan dagoen guztia matxuratu daiteke, eta lehenik Wifi-a.
Lehenik eta behin, USB-Wifi "txistu" merkea erostea erabaki nuen, BPIko ataka bakarrera konektatu eta hariak ahaztu. Horretarako, TP-LINK TL-WN725N USB 2.0 merke bat erosi nuen, baina oso laster argi geratu zen ez zela aireratuko: txistua funtziona dezan, kernel-gidari bat behar duzu, eta, noski, ez zegoen. (Geroago beharrezko RTL8XXXU kontrolatzailea muntatu nuen, baina oraindik ez da praktikoa). Eta Ethernet kableak gelaren itxura hondatu zuen pixka batean.
Ondorioz, Tenda MW3-ren (Wifi mesh system) laguntzarekin kablea kentzea lortu nuen: kubo bat mahai azpian jarri eta BPI azken honen LAN ataka konektatu nuen metro luzeko Ethernet kable batekin. Arrakasta.
Irtenbide hau zehazki zabaldu nuen Ansible erabiliz: link.
VPS Ubuntu 18.04 exekutatzen ari dela suposatzen da. Europako bi ostalariren funtzionaltasuna egiaztatu nuen: Amazon eta Digital Ocean.
Beraz, goiko Armbian instalatu dugu R64-n, ssh bidez eskuragarri dago izenaren azpian hm-bananapi-1 eta interneterako sarbidea du. Ansible, automatizazio scriptak etengabe zabaltzen ditugu eta instalazioa bera abiarazten dugu R64-n:
Bai, eragiketa hauen guztien aurretik sekretuak sortu behar dituzu (batez ere Wireguard gakoak) karpetan ./secrets, direktorioa itxura izan beharko luke beraz,.
Ansible Automation Python-en
Konturatuko zara YAML formatuan egon beharrean, Ansible komandoak Python scriptetan kodetzen direla. Konparazio baterako, nola gaitu txori deabrua ohiko moduan:
with mapping:
append("name", "start bird")
with mapping("systemd"):
append("name", "bird")
append("state", "started")
append("enabled", "yes")
Ansible komandoak Python-en idazteak kodea berrerabiltzeko aukera ematen du, eta, oro har, erabilera orokorreko hizkuntzaren aukera guztiak irekitzen ditu. Adibidez, bird instalatzea R64 eta VPS-n:
Guztira: telegramek funtzionatzen dute, linkedin eta pornhub-ek ere, orokorrean erabiltzailearen esperientzia ondo dago. Baina dena hautsi daiteke, txinatar hardwarea barne.
Kernelaren eguneraketak ere interesgarriak izan daitezke: adibidez, nukleoa 5.4 => 5.6 eguneratu nahi nuen, tira, Wireguard hor dago kutxatik kanpo, ez dago adabakirik egin behar... Egin baino lehen esan baino lehen: 5.4tik adabakiak neketsu transferitu nituen. 5.6ra, nukleoa abiarazi zen, VPSrako tunelak ping-a egin zuen, baina bird-ek ezin du "BGP Error" akatsarekin konektatu... "Izututa itzuli nintzen" (c) 5.4ra; 5.6ra pasatzea TODOn atzeratu zen.
Hori dela eta, bideratzailea eta VPS instalatzeaz gain, monitorizazioa gehitu nuen (x86 Ubuntu 18.04-n), zeina osagai hauek dituen ostalari bereizi batean instalatuta:
prometheus, alertmanager, blackbox_exporter - dena docker-en
Alertak telegram kanalera bidaltzen dira metalmatze/alertmanager-bot bot erabiliz - Docker-en ere
tor botarentzat, bot-ak Internet dagoenean egoerak abisatu dezan, baina telegramek oraindik ez du funtzionatzen eta bot-a bera ezin da konektatu
aplikatu alertak: NodeVPNTroubles (VPSrako pingik gabe), BirdVPNTroubles (Ez da Bird saiorik), AntifilterDownloadTroubles (errorea blokeatutako IP helbideak kargatzean), SiteTroubles (ez dago telegrama ez dago erabilgarri)
sistemaren alertak, adibidez, HostGrowingDiskReadLatency (SD txartel merkea irakurezin bihurtzen da)
Prometheus-en aurkikuntza automatikoa /etc/prometheus/auto_http karpetan konfiguratuta dago, monitorizazioari ostalari bat gehitzeko adibide bat (ostalariak ez dira lehenespenez kontrolatzen):
Guztiaz gain, bi hornitzailerekin konektatzeko asmoa nuen, Internetek funtzionatzen jarrai zezan, nahiz eta hornitzaile batek sarearekin arazoak izan, edo Internet eta abar ordaintzea ahaztu zitzaien eta beste giza faktore batzuk.
Multi-wan gaiari buruzko erabiltzailearen esperientzia aurreratuena deskribatzen da Hemen Openwrt pean Mwan3 sistemarako. Irtenbide honek funtzionalitate aberatsa du, baina orokorrean multi-wan-erako konfiguratzea eta funtzionatzea nahiko zaila da. Adibide bakarra: gune batzuetara bi IP helbidetatik aldi berean etortzen bazara, baliteke ez zaiela gustatuko, funtzionatzeari utziko diote => "Internetek ez du funtzionatzen".
Esperientzia hori kontuan hartuta, multihoming-a oraindik ez dela lehentasuna erabaki nuen, hutsegitea soilik. Hala ere, badirudi Linux-en azken bertsioetan dena komando batekin funtzionatu beharko lukeela:
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5
Beraz, hutsegite puntu bakar bat saihesteko, 2 BPI hartzen ditugu, bakoitza hornitzaile batera konektatzen dugu, elkarri konektatu eta elkarren arteko konexioa bideratze dinamikoa egiten dugu bird/OSPF bidez.
Ondoren, IP helbide bera iragartzen dugu bakoitzean zerbitzua erabilgarri badago (Internet, DNS). Hau da, ez dugu bide lehenetsia guk geuk ezarriko, txorien bidez baizik. Irtenbidea zelatatu nuen Hemen .
Funtzionalitate hau oraindik ez da inplementatu, koronavirus maltzurrak trikimailu bat jokatu zuen hemen (dena ez zen Aliexpressetik iritsi; beste online denda batek, Laytak, aste batean entregatuko zuela agindu zuen, baina hilabete baino gehiago igaro da; bigarren hornitzaileak ez zuen denborarik izan. kablea berrogeialdiaren aurretik luzatzeko, kablearen horman zulo bat sartzea bakarrik lortu zuen).
Nola eskatu R64
Taula bera denda ofizialean dago SinoVoip.
Hobe da berehala eskatzea:
food + jakinarazi EBko edo AEBetako entxufearen estandarra
bero-hustugailua: erradiadoreak/haizagailuak; CPU eta switch txipa berotzen ari direlako
Γabardura bat dago: denbora pixka bat entregatzeko prezioa nahiko altua izan da denda ofizialean. Judy Huang kudeatzaileak akatsik ez zegoela konbentzitu ninduen, eta ePacket aukera dezakezu 5 $-ren truke, baina ikusi nuen Errusiako EMS baino > $33-tan dagoela. Desatsegina, baina ez kritikoa. Gainera, entregatzeko beste herrialderen bat aukeratzen baduzu (kontinente guztietatik pasatu nintzen), bidalketak ~ $ 5 balioko du. Errusofoboak?.. Baina orduan aurkitu nuen Frantziarako bidalketa prezioa ere ~30$ dela, eta lasaitu nintzen.
Ondorioz, Judyk eskaera bat egitea eskaini zuen, baina ez ordaintzea (hinting: txartelari gutxiago jarri ordainketa automatikoa igaro ez dadin); idatzi hari eta bidalketa prezioa normaltasunera murriztuko du. Arrakasta.
Aleak
Oraindik ez da dena primeran funtzionatzen.
produktibitatea
Ansible=Python-en komandoak astiro exekutatzen dira, inaktiboenak ere, 20-30 segundoz; x86 ordenagailu eramangarri batean baino magnitude ordena handiagoa. Gainera, hasieran nahiko azkar exekutatzen dira, ~ 3 segundo, gero moteldu egiten dira nabarmen. Hau PUZa berotzearen ondorioz (throttling) izan daiteke. Go kodeak ere denbora asko behar du funtzionatzeko:
# Π·Π°ΠΏΡΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ Π΄Π»Ρ ΠΏΡΠΎΠΌΠ΅ΡΠ΅Ρ ΠΈΠ· 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-ak funtzionatzen du, baina Armbian-en egun baten ondoren gelditzen da, idazten du: