Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj

Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj

Disa prej nesh nuk e përdorin internetin pa një VPN për një arsye ose një tjetër: dikush ka nevojë për një IP të dedikuar dhe është më e lehtë dhe më lirë të blesh një VPS me dy IP sesa të blesh një adresë nga një ofrues, dikush dëshiron të hyjë në të gjitha faqet e internetit , dhe jo vetëm ato të lejuara në territorin e Federatës Ruse, të tjerët kanë nevojë për IPv6, por ofruesi nuk e ofron atë...
Më shpesh, një lidhje VPN vendoset në vetë pajisjen që përdoret në një moment të caktuar, gjë që ka kuptim nëse keni vetëm një kompjuter dhe një telefon dhe i përdorni ato rrallë në të njëjtën kohë. Nëse ka shumë pajisje në rrjetin tuaj të shtëpisë, ose, për shembull, ka disa në të cilat VPN nuk mund të konfigurohet, do të ishte më e përshtatshme të krijoni një tunel direkt në ruterin e shtëpisë, në mënyrë që të mos mendoni për konfigurimin e secilës pajisje veç e veç. .

Nëse keni instaluar ndonjëherë OpenVPN në ruterin tuaj, ndoshta jeni befasuar në mënyrë të pakëndshme nga sa shpejt funksionon. SoC-të madje edhe të ruterëve të lirë kalojnë rreth një trafik gigabit pa asnjë problem, për shkak të transferimit të funksioneve të rrugëzimit dhe NAT në një çip të veçantë të krijuar ekskluzivisht për këtë detyrë, dhe procesorët kryesorë të ruterëve të tillë janë mjaft të dobët, sepse Praktikisht nuk ka asnjë ngarkesë mbi to. Ky kompromis ju lejon të arrini shpejtësinë e lartë të ruterit dhe të ulni ndjeshëm çmimin e pajisjes së përfunduar - ruterat me procesorë të fuqishëm kushtojnë disa herë më shumë dhe pozicionohen jo vetëm si një kuti për shpërndarjen e Internetit, por edhe si një NAS, torrent shkarkues dhe sistem multimedial në shtëpi.

Ruteri im, TP-Link TL-WDR4300, nuk mund të quhet i ri - modeli u shfaq në mesin e vitit 2012 dhe ka një procesor të arkitekturës MIPS560 32Kc 74 MHz, fuqia e të cilit është e mjaftueshme vetëm për 20-23 Mb/s trafik të koduar. nëpërmjet OpenVPN, që është sipas standardeve Shpejtësia e internetit moderne në shtëpi është mjaft e ulët.
Si mund ta rrisim shpejtësinë e një tuneli të koduar? Ruteri im është mjaft funksional, mbështet 3x3 MIMO dhe në përgjithësi funksionon mirë, nuk do të doja ta ndryshoja.
Meqenëse tani është zakon të krijoni faqe interneti 10 megabajt, të shkruani aplikacione desktopi në node.js dhe t'i paketoni në një skedar 100 megabajt, të rrisim fuqinë llogaritëse në vend të optimizimit, do të bëjmë diçka të tmerrshme - do ta transferojmë lidhjen VPN në një "kompjuter" produktiv me një bord Orange Pi One, të cilin do ta instalojmë në kutinë e ruterit pa marrë rrjetin ekzistues dhe portat USB, për vetëm 9.99 $*!
* + dërgesë, + taksa, + për birrën, + MicroSD.

OpenVPN

Procesori i ruterit nuk mund të quhet plotësisht i dobët - ai është i aftë të kodojë dhe hash të dhënat duke përdorur algoritmin AES-128-CBC-SHA1 me një shpejtësi prej 50 Mb/s, që është dukshëm më i shpejtë se si funksionon OpenVPN, dhe rryma moderne CHACHA20 shifra me një hash POLY1305 madje arrin 130 megabit për sekondë! Pse shpejtësia e tunelit VPN është kaq e ulët? Gjithçka ka të bëjë me ndërrimin e kontekstit midis hapësirës së përdoruesit dhe hapësirës së kernelit: OpenVPN kodon trafikun dhe komunikon me botën e jashtme në kontekstin e përdoruesit, dhe vetë kursimi ndodh në kontekstin e kernelit. Sistemi operativ duhet të kalojë vazhdimisht përpara dhe mbrapa për çdo paketë të marrë ose të transmetuar, dhe ky operacion është i ngadalshëm. Ky problem është i natyrshëm në të gjitha aplikacionet VPN që funksionojnë përmes një drejtuesi TUN/TAP dhe nuk mund të thuhet se problemi i shpejtësisë së ulët është shkaktuar nga optimizimi i dobët i OpenVPN (megjithëse, sigurisht, ka vende që duhet të ripunohen). Asnjë klient i vetëm i hapësirës së përdoruesit VPN nuk ofron as edhe një gigabit me enkriptim të çaktivizuar në laptopin tim, e lëre më sistemet me një procesor të dobët.

Portokalli Pi One

Orange Pi One me një dërrasë nga Xunlong është oferta më e mirë për sa i përket raportit të performancës/çmimit për momentin. Për 9.99 dollarë* ju merrni një procesor të fortë me katër bërthama ARM Cortex-A7 që funksionon (i qëndrueshëm) në 1008 MHz, dhe qartësisht tejkalon fqinjët e tij në pikën e çmimit Raspberry Pi Zero dhe Next Thing CHIP. Këtu mbarojnë avantazhet. Kompania Xunlong i kushton saktësisht zero vëmendje softuerit të bordeve të saj dhe në kohën kur One u hodh në shitje, ajo nuk ofroi as një skedar konfigurimi të bordit, për të mos përmendur imazhe të gatshme. Allwinner, një prodhues SoC, gjithashtu nuk është veçanërisht i ndjeshëm ndaj mbështetjes së produktit të tij. Ata janë të interesuar vetëm për performancën minimale në sistemin operativ Android 4.4.4, që do të thotë se ne jemi të detyruar të përdorim kernelin 3.4 me arna Android. Për fat të mirë, ka entuziastë që mbledhin shpërndarje, redaktojnë kernelin, shkruajnë kode për të mbështetur bordet në kernelin kryesor, d.m.th. ata në fakt bëjnë punën për prodhuesin, duke e bërë këtë mut të funksionojë në mënyrë të pranueshme. Për qëllimet e mia, zgjodha shpërndarjen Armbian; ajo përditësohet shpesh dhe me lehtësi (kernelet e reja instalohen direkt përmes menaxherit të paketave, dhe jo duke kopjuar skedarë në një ndarje të veçantë, siç ndodh zakonisht me Allwinner), dhe mbështet shumicën. periferikësh, ndryshe nga të tjerët.

router

Për të mos ngarkuar procesorin e dobët të ruterit me kriptim dhe për të shpejtuar lidhjen tonë VPN, ne mund ta zhvendosim këtë detyrë në supet e një procesori më të fuqishëm Orange Pi duke e lidhur atë me ruterin në një farë mënyre. Lidhja ose nëpërmjet Ethernetit ose USB-së më vjen në mendje - të dyja këto standarde mbështeten nga të dyja pajisjet, por unë nuk doja të merrja portet ekzistuese. Për fat të mirë, ka një rrugëdalje.

Çipi i shpërndarës USB GL850G, i cili përdoret në ruter, mbështet 4 porte USB, dy prej të cilave nuk janë me tela. Është e paqartë pse prodhuesi nuk i shkriu ato, supozoj, për të parandaluar që përdoruesit të lidhin 4 pajisje me konsum të lartë aktual (për shembull, disqet e ngurtë) menjëherë. Furnizimi standard me energji i ruterit nuk është krijuar për një ngarkesë të tillë. Në çdo rast, kjo është në avantazhin tonë.
Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj
Për të marrë një portë tjetër USB, thjesht duhet të lidhni dy tela në kunjat 8(D-) dhe 9(D+) ose 11(D-) dhe 12(D+).

Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj

Megjithatë, nuk mjafton thjesht të lidhni dy pajisje USB dhe të shpresoni se gjithçka do të funksionojë më vete, siç do të ndodhte me Ethernet. Së pari, ne duhet të bëjmë që njëra prej tyre të funksionojë në modalitetin USB Client, dhe jo në USB Host, dhe së dyti, ne duhet të vendosim se si pajisjet do të zbulojnë njëra-tjetrën. Ka shumë drejtues për të ashtuquajturat Gadgets USB (të emërtuar sipas nënsistemit të kernelit Linux), të cilët ju lejojnë të imitoni lloje të ndryshme të pajisjeve USB: përshtatës rrjeti, kartë audio, tastierë dhe miun, flash drive, kamerë, konsolë përmes një serie port. Meqenëse pajisja jonë do të funksionojë me rrjetin, imitimi i një përshtatësi Ethernet është më i miri për ne.

Ekzistojnë tre standarde Ethernet-mbi-USB:

  • NDIS në distancë (RNDIS). Një standard i vjetëruar nga Microsoft, i përdorur kryesisht gjatë Windows XP.
  • Modeli i kontrollit Ethernet (ECM). Një standard i thjeshtë që përmbledh kornizat Ethernet brenda paketave USB. E shkëlqyeshme për modemet me tela me lidhje USB, ku është i përshtatshëm për të transferuar korniza pa përpunim, por për shkak të thjeshtësisë dhe kufizimeve të autobusit USB, nuk është shumë i shpejtë.
  • Modeli i Emulimit Ethernet (EEM). Një protokoll më i zgjuar që merr parasysh kufizimet e USB-së dhe grumbullon në mënyrë optimale korniza të shumta në një, duke rritur kështu xhiron.
  • Modeli i kontrollit të rrjetit (NCM). Protokolli më i ri. Ka përfitimet e EEM dhe optimizon më tej përvojën e autobusit.

Për të vënë në punë ndonjë nga këto protokolle në bordin tonë, si gjithmonë, do të na duhet të hasim disa vështirësi. Për shkak të faktit se Allwinner është i interesuar vetëm për pjesët Android të kernelit, vetëm Android Gadget funksionon normalisht - kodi që zbaton komunikimin me adb, eksportimin e pajisjes përmes protokollit MTP dhe imitimin e një flash drive në pajisjet Android. Vetë Gadget Android mbështet gjithashtu protokollin RNDIS, por ai është i prishur në kernelin Allwinner. Nëse përpiqeni të përpiloni kernelin me ndonjë pajisje tjetër USB, pajisja thjesht nuk do të shfaqet në sistem, pavarësisht se çfarë bëni.
Për të zgjidhur problemin, në mënyrë miqësore, duhet të gjeni vendin ku kontrolluesi USB është inicializuar në kodin e pajisjes Android android.c të modifikuar nga zhvilluesit, por ekziston gjithashtu një zgjidhje për të bërë të paktën emulimin Ethernet. Puna 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;

Ky patch detyron modalitetin e klientit USB, duke ju lejuar të përdorni pajisje të rregullta USB nga Linux.
Tani duhet të rindërtoni kernelin me këtë patch dhe vegël e nevojshme. Zgjodha EEM sepse... Sipas rezultateve të testit, doli të ishte më produktiv se NCM.
Ekipi Armbian ofron sistem montimi shumë i thjeshtë dhe i përshtatshëm për të gjitha bordet e mbështetura në shpërndarje. Thjesht shkarkoni atë, vendosni patch-in tonë userpatches/kernel/sun8i-default/otg.patch, redakto pak compile.sh dhe zgjidhni vegël e kërkuar:

Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj

Kerneli do të përpilohet në një paketë deb, e cila nuk do të jetë e vështirë të instalohet në tabelë nëpërmjet dpkg.
Gjithçka që mbetet është të lidhni tabelën përmes USB-së dhe të konfiguroni përshtatësin tonë të ri të rrjetit për të marrë një adresë përmes DHCP. Për ta bërë këtë, duhet të shtoni diçka si më poshtë /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'

Është më mirë të vendosni adresën MAC me dorë, sepse... do të jetë e rastësishme sa herë që pajisja rindizet, gjë që është e papërshtatshme dhe e mundimshme.
Ne lidhim kabllon MicroUSB me lidhësin OTG, lidhim energjinë nga ruteri (mund të furnizohet me kunjat 2 dhe 3 të krehës, dhe jo vetëm në lidhësin e energjisë).

Gjithçka që mbetet është të konfiguroni ruterin. Mjafton të instaloni paketën me drejtuesin EEM dhe të shtoni pajisjen tonë të re të rrjetit USB në urën e zonës lokale të murit të zjarrit:

opkg install kmod-usb-net-cdc-eem

Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj
Për të drejtuar të gjithë trafikun në tunelin VPN, duhet ose të shtoni një rregull SNAT në adresën IP të bordit në anën e ruterit, ose të shpërndani adresën e bordit si një adresë porte përmes dnsmasq. Kjo e fundit bëhet duke shtuar rreshtin e mëposhtëm /etc/dnsmasq.conf:

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

ku 192.168.1.100 — Adresa IP e bordit tuaj. Mos harroni të vendosni adresën e ruterit në cilësimet e rrjetit në vetë tabelën!

Një sfungjer melamine u përdor për të izoluar kontaktet e tabelës nga kontaktet e ruterit. Doli diçka si kjo:
Përshpejtoni OpenVPN për 9.99 dollarë* ose integroni Orange Pi One në ruterin tuaj

Përfundim

Rrjeti përmes USB funksionon çuditërisht shpejt: 100-120 Mb/s, prisja më pak. OpenVPN kalon nëpër rreth 70 Mb/s trafik të koduar, i cili gjithashtu nuk është shumë, por i mjaftueshëm për nevojat e mia. Kapaku i ruterit nuk mbyllet fort, duke lënë një boshllëk të vogël. Aesthetes mund të heqin lidhësit Ethernet dhe USB Host nga bordi, gjë që do të lejojë që kapaku të mbyllet plotësisht dhe të ketë ende pak hapësirë.
Është më mirë të mos përfshiheni në një pornografi të tillë dhe të blini Turris Omnia.

Burimi: www.habr.com

Shto një koment