Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău

Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău

Unii dintre noi nu folosim internetul fără VPN dintr-un motiv sau altul: cineva are nevoie de un IP dedicat și este mai ușor și mai ieftin să cumperi un VPS cu două IP-uri decât să cumperi o adresă de la un furnizor, cineva dorește să acceseze toate site-urile web , și nu numai cele permise pe teritoriul Federației Ruse, altele au nevoie de IPv6, dar furnizorul nu îl furnizează...
Cel mai adesea, o conexiune VPN este stabilită pe dispozitivul în sine care este utilizat la un moment dat, ceea ce are sens dacă aveți doar un computer și un telefon și le folosiți rar în același timp. Dacă există multe dispozitive în rețeaua dvs. de acasă sau, de exemplu, există unele pe care VPN nu poate fi configurat, ar fi mai convenabil să creați un tunel direct pe routerul de acasă pentru a nu vă gândi la configurarea fiecărui dispozitiv separat .

Dacă ați instalat vreodată OpenVPN pe router, probabil că ați fost neplăcut surprins de cât de repede funcționează. SoC-urile chiar și ale routerelor ieftine trec printr-un trafic gigabit fără probleme, datorită transferului funcțiilor de rutare și NAT pe un cip separat conceput exclusiv pentru această sarcină, iar procesoarele principale ale unor astfel de routere sunt destul de slabe, deoarece Practic nu există nicio sarcină asupra lor. Acest compromis vă permite să obțineți o viteză mare a routerului și să reduceți semnificativ prețul dispozitivului finit - routerele cu procesoare puternice costă de câteva ori mai mult și sunt poziționate nu numai ca o cutie pentru distribuirea Internetului, ci și ca NAS, torrent. descărcator și sistem multimedia de acasă.

Routerul meu, TP-Link TL-WDR4300, nu poate fi numit nou - modelul a apărut la mijlocul anului 2012 și are un procesor cu arhitectură MIPS560 32Kc de 74 MHz, a cărui putere este suficientă doar pentru 20-23 Mb/s de trafic criptat prin OpenVPN, care este conform standardelor Viteza internetului modern acasă este destul de scăzută.
Cum putem crește viteza unui tunel criptat? Routerul meu este destul de funcțional, acceptă 3x3 MIMO și, în general, funcționează bine, nu aș vrea să-l schimb.
Deoarece acum este obișnuit să facem pagini de Internet de 10 megaocteți, să scriem aplicații desktop în node.js și să le ambalăm într-un fișier de 100 de megaocteți, să creștem puterea de calcul în loc de optimizare, vom face ceva groaznic - vom transfera conexiunea VPN la un „computer” productiv cu o singură placă Orange Pi One, pe care îl vom instala în carcasa routerului fără a ocupa porturile de rețea și USB existente, la doar 9.99 USD*!
* + livrare, + taxe, + pentru bere, + MicroSD.

OpenVPN

Procesorul routerului nu poate fi numit complet slab - este capabil să cripteze și să hashing datele folosind algoritmul AES-128-CBC-SHA1 la o viteză de 50 Mb/s, care este vizibil mai rapid decât modul în care funcționează OpenVPN și fluxul modern CHACHA20 cifrul cu un hash POLY1305 ajunge chiar și la 130 de megabiți pe secundă! De ce este viteza tunelului VPN atât de mică? Totul este despre comutarea contextului între spațiul utilizator și spațiul kernel: OpenVPN criptează traficul și comunică cu lumea exterioară în contextul utilizatorului, iar rutarea în sine are loc în contextul kernelului. Sistemul de operare trebuie să comute în mod constant înainte și înapoi pentru fiecare pachet primit sau transmis, iar această operație este lentă. Această problemă este inerentă tuturor aplicațiilor VPN care rulează printr-un driver TUN/TAP și nu se poate spune că problema vitezei reduse este cauzată de o optimizare slabă a OpenVPN (deși, desigur, există locuri care trebuie reluate). Niciun client VPN pentru spațiu de utilizator nu oferă măcar un gigabit cu criptarea dezactivată pe laptopul meu, darămite sistemele cu un procesor slab.

Orange PiOne

Orange Pi One single-board de la Xunlong este cea mai bună ofertă în ceea ce privește raportul performanță/preț în acest moment. Pentru 9.99 USD* primești un procesor solid quad-core ARM Cortex-A7 care rulează (stabil) la 1008 MHz și depășește în mod clar vecinii săi cu preț, Raspberry Pi Zero și Next Thing CHIP. Aici se termină avantajele. Compania Xunlong acordă exact zero atenție software-ului plăcilor sale, iar în momentul în care One a fost lansat la vânzare, nu a furnizat nici măcar un fișier de configurare a plăcilor, ca să nu mai vorbim de imagini gata făcute. De asemenea, Allwinner, un producător de SoC, nu este deosebit de sensibil la susținerea produsului său. Ei sunt interesați doar de performanța minimă în sistemul de operare Android 4.4.4, ceea ce înseamnă că suntem forțați să folosim nucleul 3.4 cu patch-uri Android. Din fericire, există entuziaști care asamblează distribuții, editează nucleul, scriu cod pentru a suporta plăci în nucleul principal, de exemplu. de fapt, ei fac treaba pentru producător, făcând această porcărie să funcționeze acceptabil. Pentru scopurile mele, am ales distribuția Armbian; aceasta este actualizată frecvent și convenabil (kernel-urile noi sunt instalate direct prin managerul de pachete și nu prin copierea fișierelor într-o partiție specială, așa cum este de obicei cazul cu Allwinner) și acceptă majoritatea periferice, spre deosebire de celelalte.

router

Pentru a nu încărca procesorul slab al routerului cu criptare și pentru a accelera conexiunea noastră VPN, putem transfera această sarcină pe umerii unui procesor Orange Pi mai puternic, conectându-l la router într-un fel. Îmi vine în minte conectarea fie prin Ethernet, fie prin USB - ambele standarde sunt acceptate de ambele dispozitive, dar nu am vrut să ocup porturile existente. Din fericire, există o cale de ieșire.

Cipul hub-ului USB GL850G, care este utilizat în router, acceptă 4 porturi USB, dintre care două nu sunt cu fir. Nu este clar de ce producătorul nu le-a dezlipit, presupun, pentru a împiedica utilizatorii să conecteze simultan 4 dispozitive cu consum mare de curent (de exemplu, hard disk). Sursa de alimentare standard a routerului nu este proiectată pentru o astfel de sarcină. În orice caz, acest lucru este în avantajul nostru.
Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău
Pentru a obține un alt port USB, trebuie doar să lipiți două fire la pinii 8(D-) și 9(D+) sau 11(D-) și 12(D+).

Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău

Cu toate acestea, nu este suficient să conectați pur și simplu două dispozitive USB și să sperați că totul va funcționa singur, așa cum ar fi cu Ethernet. În primul rând, trebuie să facem ca unul dintre ele să funcționeze în modul USB Client, și nu USB Host și, în al doilea rând, trebuie să decidem cum se vor detecta dispozitivele unul pe celălalt. Există multe drivere pentru așa-numitele USB Gadgets (numite după subsistemul kernel-ului Linux), care vă permit să emulați diferite tipuri de dispozitive USB: adaptor de rețea, placă audio, tastatură și mouse, unitate flash, cameră, consolă printr-un serial. port. Deoarece dispozitivul nostru va funcționa cu rețea, emularea unui adaptor Ethernet este cea mai bună pentru noi.

Există trei standarde Ethernet-over-USB:

  • NDIS la distanță (RNDIS). Un standard învechit de la Microsoft, folosit în principal în timpul Windows XP.
  • Model de control Ethernet (ECM). Un standard simplu care încapsulează cadre Ethernet în pachetele USB. Excelent pentru modemurile cu fir cu conexiune USB, unde este convenabil să transferați cadre fără procesare, dar datorită simplității și limitărilor magistralei USB, nu este foarte rapid.
  • Model de emulare Ethernet (EEM). Un protocol mai inteligent care ia în considerare limitările USB și agregează în mod optim mai multe cadre într-unul singur, crescând astfel debitul.
  • Model de control al rețelei (NCM). Cel mai nou protocol. Are beneficiile EEM și optimizează și mai mult experiența cu autobuzul.

Pentru ca oricare dintre aceste protocoale să funcționeze pe placa noastră, ca întotdeauna, va trebui să întâmpinăm unele dificultăți. Datorită faptului că Allwinner este interesat doar de părțile Android ale nucleului, doar Android Gadget funcționează normal - codul care implementează comunicarea cu adb, exportând dispozitivul prin protocolul MTP și emulând o unitate flash pe dispozitivele Android. Android Gadget în sine acceptă și protocolul RNDIS, dar este rupt în nucleul Allwinner. Dacă încercați să compilați nucleul cu orice alt gadget USB, dispozitivul pur și simplu nu va apărea pe sistem, indiferent ce faceți.
Pentru a rezolva problema, pe cale amiabilă, trebuie să găsiți locul unde controlerul USB este inițializat în codul gadget-ului Android android.c modificat de dezvoltatori, dar există și o soluție pentru a face cel puțin emulare Ethernet peste Lucru USB:

--- 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;

Acest patch forțează modul client USB, permițându-vă să utilizați gadgeturi USB obișnuite de la Linux.
Acum ar trebui să reconstruiți nucleul cu acest patch și gadgetul necesar. Am ales EEM pentru că... Conform rezultatelor testelor, s-a dovedit a fi mai productiv decât NCM.
Echipa Armbian asigură sistem de asamblare foarte simplu și convenabil pentru toate plăcile suportate în distribuție. Doar descărcați-l, puneți patch-ul nostru userpatches/kernel/sun8i-default/otg.patch, editați puțin compile.sh și selectați gadgetul dorit:

Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău

Nucleul va fi compilat într-un pachet deb, care nu va fi dificil de instalat pe placă prin intermediul dpkg.
Tot ce rămâne este să conectați placa prin USB și să configurați noul adaptor de rețea pentru a primi o adresă prin DHCP. Pentru a face acest lucru, trebuie să adăugați ceva de genul următor la /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'

Este mai bine să setați manual adresa MAC, deoarece... va fi aleatoriu de fiecare dată când dispozitivul este repornit, ceea ce este incomod și supărător.
Conectăm cablul MicroUSB la conectorul OTG, conectăm alimentarea de la router (poate fi alimentat la pinii 2 și 3 ai pieptenelor și nu doar la conectorul de alimentare).

Tot ce rămâne este să configurați routerul. Este suficient să instalați pachetul cu driverul EEM și să adăugați noul nostru dispozitiv de rețea USB pe puntea zonei firewall locale:

opkg install kmod-usb-net-cdc-eem

Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău
Pentru a direcționa tot traficul către tunelul VPN, trebuie fie să adăugați o regulă SNAT la adresa IP a plăcii de pe partea routerului, fie să distribuiți adresa plăcii ca adresă de gateway prin dnsmasq. Acesta din urmă se realizează prin adăugarea următoarei linii la /etc/dnsmasq.conf:

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

unde 192.168.1.100 — Adresa IP a plăcii dvs. Nu uitați să introduceți adresa routerului în setările de rețea de pe placa în sine!

A fost folosit un burete melaminat pentru a izola contactele plăcii de contactele routerului. S-a dovedit cam așa:
Accelerează OpenVPN pentru 9.99 USD* sau integrează Orange Pi One în routerul tău

Concluzie

Rețeaua prin USB funcționează surprinzător de repede: 100-120 Mb/s, mă așteptam la mai puțin. OpenVPN trece prin aproximativ 70 Mb/s de trafic criptat, care, de asemenea, nu este foarte mult, dar suficient pentru nevoile mele. Capacul routerului nu se închide etanș, lăsând un mic spațiu. Esteștii pot scoate conectorii Ethernet și USB Host de pe placă, ceea ce va permite capacului să se închidă complet și va mai rămâne ceva spațiu.
Este mai bine să nu te implici într-o astfel de pornografie și să nu cumperi Turris Omnia.

Sursa: www.habr.com

Adauga un comentariu