Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon

Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon

Iuj el ni ne uzas Interreton sen VPN pro unu aŭ alia kialo: iu bezonas dediĉitan IP, kaj estas pli facile kaj pli malmultekosta aĉeti VPS kun du IP-oj ol aĉeti adreson de provizanto, iu volas aliri ĉiujn retejojn. , kaj ne nur tiuj permesitaj sur la teritorio de la Rusa Federacio, aliaj bezonas IPv6, sed la provizanto ne provizas ĝin...
Plej ofte, VPN-konekto estas establita sur la aparato mem, kiu estas uzata en certa momento, kio havas sencon se vi havas nur unu komputilon kaj unu telefonon kaj malofte uzas ilin samtempe. Se estas multaj aparatoj en via hejma reto, aŭ, ekzemple, estas iuj, sur kiuj VPN ne povas esti agordita, estus pli oportune krei tunelon rekte sur la hejma enkursigilo por ne pensi pri agordo de ĉiu aparato aparte. .

Se vi iam instalis OpenVPN sur via enkursigilo, vi verŝajne estis malagrable surprizita de kiom rapide ĝi funkcias. La SoC-oj de eĉ malmultekostaj enkursigiloj trairas ĉirkaŭ gigabita trafiko senprobleme, pro la translokigo de vojigo kaj NAT-funkcioj al aparta blato desegnita ekskluzive por ĉi tiu tasko, kaj la ĉefaj procesoroj de tiaj enkursigiloj estas sufiĉe malfortaj, ĉar Preskaŭ ne estas ŝarĝo sur ili. Ĉi tiu kompromiso ebligas al vi atingi altan rapidon de la enkursigilo kaj signife redukti la prezon de la finita aparato - enkursigiloj kun potencaj procesoroj kostas plurajn fojojn pli, kaj estas poziciigitaj ne nur kiel skatolo por distribui interreton, sed ankaŭ kiel NAS, torento. elŝutilo kaj hejma plurmedia sistemo.

Mia enkursigilo, TP-Link TL-WDR4300, ne povas esti nomata nova - la modelo aperis meze de 2012, kaj havas arkitekturan procesoron 560 MHz MIPS32 74Kc, kies potenco sufiĉas nur por 20-23 Mb/s de ĉifrita trafiko. per OpenVPN, kio laŭ normoj La rapideco de moderna hejma Interreto estas sufiĉe malalta.
Kiel ni povas pliigi la rapidecon de ĉifrita tunelo? Mia enkursigilo estas sufiĉe funkcia, subtenas 3x3 MIMO, kaj ĝenerale funkcias bone, mi ne volus ŝanĝi ĝin.
Ĉar nun estas kutime fari 10-megabajtajn interretajn paĝojn, skribi labortablajn aplikaĵojn en node.js kaj paki ilin en 100-megabajtan dosieron, pliigi komputikan potencon anstataŭ optimumigo, ni faros ion teruran - ni transdonos la VPN-konekton al produktiva unu-tabulo "komputilo" Orange Pi One, kiun ni instalos en la enkursigilo sen uzi ekzistantajn retajn kaj USB-havenojn, por nur $9.99*!
* + livero, + impostoj, + por biero, + MicroSD.

OpenVPN

La procesoro de la enkursigilo ne povas esti nomata tute malforta - ĝi kapablas ĉifri kaj haŝi datumojn uzante la algoritmon AES-128-CBC-SHA1 kun rapido de 50 Mb/s, kiu estas rimarkeble pli rapida ol kiel funkcias OpenVPN, kaj la moderna CHACHA20-fluo. ĉifro kun POLY1305 hash eĉ atingas 130 megabitojn sekundo! Kial la rapideco de la VPN-tunelo estas tiel malalta? Ĉio temas pri kuntekstoŝanĝo inter uzantspaco kaj kernspaco: OpenVPN ĉifras trafikon kaj komunikas kun la ekstera mondo en la uzantkunteksto, kaj la vojigo mem okazas en la kernkunteksto. La operaciumo devas konstante ŝanĝi tien kaj reen por ĉiu pako ricevita aŭ transdonita, kaj ĉi tiu operacio estas malrapida. Ĉi tiu problemo estas eneca en ĉiuj VPN-aplikoj kurantaj tra TUN/TAP-ŝoforo, kaj oni ne povas diri, ke la problemo de malalta rapideco estas kaŭzita de malbona OpenVPN-optimumigo (kvankam, kompreneble, estas lokoj, kiuj devas esti relaboritaj). Eĉ ne unu uzantspaca VPN-kliento provizas eĉ gigabiton kun ĉifrado malŝaltita sur mia tekokomputilo, des malpli sistemoj kun malforta procesoro.

Orange PiOne

La unutabulo Orange Pi One de Xunlong estas la plej bona oferto laŭ rendimento/preza proporcio nuntempe. Por $ 9.99* vi ricevas solidan kvar-kernan ARM Cortex-A7-procesoron funkciantan (stabile) ĉe 1008 MHz, kaj klare superas ĝiajn prezpunktajn najbarojn la Raspberry Pi Zero kaj Next Thing CHIP. Ĉi tie finiĝas la avantaĝoj. La kompanio Xunlong tute nula atentos al la programaro de siaj tabuloj, kaj tiam, kiam la One estis lanĉita por vendo, ĝi eĉ ne disponigis tabuldosieron, por ne paroli pri pretaj bildoj. Allwinner, fabrikanto de SoC, ankaŭ ne estas aparte sentema subteni sian produkton. Ili interesiĝas nur pri minimuma rendimento en la Android 4.4.4 OS, kio signifas, ke ni estas devigitaj uzi la 3.4-kernon kun Android-flakoj. Feliĉe, estas entuziasmuloj kiuj kunvenas distribuojn, redaktas la kernon, skribas kodon por subteni tabulojn en la ĉeftendenca kerno, t.e. ili efektive faras la laboron por la fabrikanto, igante ĉi tiun aĉan laboron akcepteble. Por miaj celoj, mi elektis la Armbian-distribuon; ĝi estas ofte kaj oportune ĝisdatigita (novaj kernoj estas instalitaj rekte per la pakadministranto, kaj ne kopiante dosierojn al speciala sekcio, kiel kutime ĉe Allwinner), kaj ĝi subtenas plej multajn. ekstercentraj, male al la aliaj.

Router

Por ne ŝarĝi la malfortan procesoron de la enkursigilo per ĉifrado kaj akceli nian VPN-konekton, ni povas ŝanĝi ĉi tiun taskon al la ŝultroj de pli potenca Orange Pi-procesoro iel konektante ĝin al la enkursigilo. Konekti aŭ per Ethernet aŭ USB venas al menso - ambaŭ ĉi tiuj normoj estas subtenataj de ambaŭ aparatoj, sed mi ne volis uzi ekzistantajn havenojn. Feliĉe, estas elirejo.

La GL850G USB naba blato, kiu estas uzata en la enkursigilo, subtenas 4 USB-havenojn, du el kiuj ne estas kabligitaj. Estas neklare kial la fabrikanto ne malsoldis ilin, mi supozas, por malhelpi uzantojn konekti 4 aparatojn kun alta kurenta konsumo (ekzemple, malmolaj diskoj) samtempe. La norma nutrado de la enkursigilo ne estas desegnita por tia ŝarĝo. Ĉiukaze, ĉi tio estas por nia avantaĝo.
Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon
Por akiri alian USB-havenon, vi nur bezonas luti du dratojn al pingloj 8(D-) kaj 9(D+) aŭ 11(D-) kaj 12(D+).

Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon

Tamen, ne sufiĉas simple enŝovi du USB-aparatojn kaj esperi, ke ĉio funkcios memstare, kiel ĝi farus kun Ethernet. Unue, ni devas igi unu el ili funkcii en USB Kliento-reĝimo, kaj ne USB-Gastiganto, kaj due, ni devas decidi kiel la aparatoj detektos unu la alian. Estas multaj peliloj por la tiel nomataj USB Gadgets (nomitaj laŭ la subsistemo de Linukso-kerno), kiuj ebligas kopii diversajn specojn de USB-aparatoj: retadaptilo, sonkarto, klavaro kaj muso, poŝmemoro, fotilo, konzolo per serialo. haveno. Ĉar nia aparato funkcios kun la reto, emuli Ethernet-adaptilon estas plej bone por ni.

Ekzistas tri Ethernet-super-USB-normoj:

  • Fora NDIS (RNDIS). Malmoderna normo de Mikrosofto, uzata ĉefe dum Windows XP.
  • Ethernet Kontrola Modelo (ECM). Simpla normo kiu enkapsuligas Eterretajn kadrojn ene de USB-pakoj. Bonega por kablaj modemoj kun USB-konekto, kie estas oportune transdoni kadrojn sen prilaborado, sed pro sia simpleco kaj limigoj de la USB-buso, ĝi ne estas tre rapida.
  • Ethernet-Emulado-Modelo (EEM). Pli inteligenta protokolo, kiu konsideras USB-limojn kaj optimume kunigas plurajn kadrojn en unu, tiel pliigante la trairon.
  • Reta Kontrola Modelo (NCM). La plej nova protokolo. Havas la avantaĝojn de EEM kaj plue optimumigas la busan sperton.

Por ke iu el ĉi tiuj protokoloj funkciu en nia tabulo, kiel ĉiam, ni devos renkonti kelkajn malfacilaĵojn. Pro la fakto, ke Allwinner nur interesiĝas pri la Android-partoj de la kerno, nur Android Gadget funkcias normale - la kodo, kiu efektivigas komunikadon kun adb, eksportante la aparaton per la MTP-protokolo kaj imitante poŝmemoron sur Android-aparatoj. Android Gadget mem ankaŭ subtenas la protokolon RNDIS, sed ĝi estas rompita en la Allwinner-kerno. Se vi provas kompili la kernon per iu ajn alia USB-Aparato, la aparato simple ne aperos en la sistemo, negrave kion vi faros.
Por solvi la problemon, amike, vi devas trovi la lokon, kie la USB-regilo estas pravigita en la kodo de la Android-aparato android.c modifita de la programistoj, sed ankaŭ ekzistas solvo por fari almenaŭ Ethernet-imuladon super. USB-laboro:

--- sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:40.427088792 +0300
+++ sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:45.339088792 +0300
@@ -57,7 +57,7 @@
 static sunxi_udc_io_t g_sunxi_udc_io;
 static u32 usb_connect = 0;
 static u32 is_controller_alive = 0;
-static u8 is_udc_enable = 0;   /* is udc enable by gadget? */
+static u8 is_udc_enable = 1;   /* is udc enable by gadget? */
 
 #ifdef CONFIG_USB_SUNXI_USB0_OTG
 static struct platform_device *g_udc_pdev = NULL;

Ĉi tiu flikaĵo devigas USB-klientreĝimon, permesante al vi uzi regulajn USB-Gazetojn de Linukso.
Nun vi devus rekonstrui la kernon per ĉi tiu flikaĵo kaj la necesa aparato. Mi elektis EEM ĉar... Laŭ testrezultoj, ĝi montriĝis pli produktiva ol NCM.
La Armbiana teamo provizas tre simpla kaj oportuna munta sistemo por ĉiuj subtenataj tabuloj en la distribuo. Nur elŝutu ĝin, enmetu nian peceton userpatches/kernel/sun8i-default/otg.patch, redaktu iomete compile.sh kaj elektu la bezonatan aparaton:

Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon

La kerno estos kompilita en deb-pakaĵon, kiu ne estos malfacile instalebla sur la tabulo per dpkg.
Restas nur konekti la tabulon per USB kaj agordi nian novan retan adaptilon por ricevi adreson per DHCP. Por fari tion, vi devas aldoni ion kiel la jenon al /etc/network/interfaces:

auto usb0
        iface usb0 inet dhcp
        hwaddress ether c2:46:98:49:3e:9d
        pre-up /bin/sh -c 'echo 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role'

Estas pli bone agordi la MAC-adreson permane, ĉar... ĝi estos hazarda ĉiufoje kiam la aparato estas rekomencita, kio estas maloportuna kaj ĝena.
Ni konektas la MicroUSB-kablon al la OTG-konektilo, konektas potencon de la enkursigilo (ĝi povas esti provizita al pingloj 2 kaj 3 de la kombilo, kaj ne nur al la elektra konektilo).

Restas nur agordi la enkursigilon. Sufiĉas instali la pakaĵon per la EEM-ŝoforo kaj aldoni nian novan USB-retan aparaton al la ponto de la loka fajroŝirmilo:

opkg install kmod-usb-net-cdc-eem

Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon
Por direkti la tutan trafikon al la VPN-tunelo, vi devas aŭ aldoni SNAT-regulon al la IP-adreso de la tabulo ĉe la enkursigilo, aŭ distribui la adreson de la tabulo kiel enirejo-adreso per dnsmasq. Ĉi-lasta estas farita aldonante la sekvan linion al /etc/dnsmasq.conf:

dhcp-option = tag:lan, option:router, 192.168.1.100

kie 192.168.1.100 — IP-adreso de via tabulo. Ne forgesu enigi la adreson de la enkursigilo en la retaj agordoj sur la tabulo mem!

Melamina spongo estis uzita por izoli la tabulkontaktojn de la enkursigilo-kontaktoj. Rezultis io kiel ĉi tio:
Akcelu OpenVPN por $ 9.99* aŭ integru Orange Pi One en vian enkursigilon

konkludo

La reto per USB funkcias surprize rapide: 100-120 Mb/s, mi atendis malpli. OpenVPN pasas tra ĉirkaŭ 70 Mb/s de ĉifrita trafiko, kio ankaŭ ne estas tre multe, sed sufiĉas por miaj bezonoj. La kovrilo de la enkursigilo ne firme fermiĝas, lasante malgrandan breĉon. Estetoj povas forigi la Ethernet- kaj USB-Gastig-konektilojn de la tabulo, kio permesos al la kovrilo tute fermiĝi kaj ankoraŭ havi iom da spaco.
Pli bone ne okupiĝi pri tia pornografio kaj aĉeti Turris Omnia.

fonto: www.habr.com

Aldoni komenton