Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā

Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā

Daži no mums viena vai otra iemesla dēļ neizmanto internetu bez VPN: kādam ir nepiecieÅ”ams Ä«paÅ”s IP, un vieglāk un lētāk ir iegādāties VPS ar diviem IP, nekā pērkot adresi no pakalpojumu sniedzēja, kāds vēlas piekļūt visām vietnēm. , un ne tikai tiem, kas atļauti Krievijas Federācijas teritorijā, citiem ir nepiecieÅ”ams IPv6, bet pakalpojumu sniedzējs to nenodroÅ”ina...
Visbiežāk VPN savienojums tiek izveidots paŔā ierÄ«cē, kas tiek izmantota noteiktā brÄ«dÄ«, kas ir jēga, ja jums ir tikai viens dators un viens tālrunis un jÅ«s tos reti izmantojat vienlaikus. Ja jÅ«su mājas tÄ«klā ir daudz ierīču vai, piemēram, ir dažas, kurās VPN nevar konfigurēt, ērtāk bÅ«tu izveidot tuneli tieÅ”i mājas marÅ”rutētājā, lai nedomātu par katras ierÄ«ces iestatÄ«Å”anu atseviŔķi. .

Ja kādreiz savā marÅ”rutētājā esat instalējis OpenVPN, iespējams, esat bijis nepatÄ«kami pārsteigts par tā darbÄ«bas ātrumu. Pat lētu marÅ”rutētāju SoC bez problēmām iziet cauri apmēram gigabitu trafikam, jo ā€‹ā€‹marÅ”rutÄ“Å”anas un NAT funkcijas tiek pārsÅ«tÄ«tas uz atseviŔķu mikroshēmu, kas paredzēta tikai Å”im uzdevumam, un Ŕādu marÅ”rutētāju galvenie procesori ir diezgan vāji, jo Uz tiem praktiski nav slodzes. Å is kompromiss ļauj sasniegt lielu marÅ”rutētāja ātrumu un ievērojami samazināt gatavās ierÄ«ces cenu - marÅ”rutētāji ar jaudÄ«giem procesoriem maksā vairākas reizes vairāk, un tiek novietoti ne tikai kā kaste interneta izplatÄ«Å”anai, bet arÄ« kā NAS, torrents. lejupielādētājs un mājas multivides sistēma.

Mans marÅ”rutētājs TP-Link TL-WDR4300 nav nosaucams par jaunu - modelis parādÄ«jās 2012. gada vidÅ«, un tam ir 560 MHz MIPS32 74Kc arhitektÅ«ras procesors, kura jauda pietiek tikai 20-23 Mb/s Å”ifrētai trafikam. izmantojot OpenVPN, kas ir pēc standartiem MÅ«sdienu mājas interneta ātrums ir diezgan zems.
Kā mēs varam palielināt Å”ifrēta tuneļa ātrumu? Mans marÅ”rutētājs ir diezgan funkcionāls, atbalsta 3x3 MIMO un kopumā darbojas labi, es negribētu to mainÄ«t.
Tā kā tagad pieņemts taisÄ«t 10 megabaitu interneta lapas, rakstÄ«t darbvirsmas aplikācijas iekÅ” node.js un iepakot 100 megabaitu failā, optimizācijas vietā palielināt skaitļoÅ”anas jaudu, tad izdarÄ«sim ko Å”ausmÄ«gu - pārsÅ«tÄ«sim VPN savienojumu uz produktÄ«vs vienas plates "dators" Orange Pi One, kuru mēs uzstādÄ«sim marÅ”rutētāja korpusā, neaizņemot esoÅ”os tÄ«kla un USB portus, tikai par 9.99 USD*!
* + piegāde, + nodokļi, + par alu, + MicroSD.

OpenVPN

MarÅ”rutētāja procesoru nevar saukt par pilnÄ«gi vāju - tas spēj Å”ifrēt un jaukt datus, izmantojot AES-128-CBC-SHA1 algoritmu ar ātrumu 50 Mb/s, kas ir ievērojami ātrāks par OpenVPN darbÄ«bu un mÅ«sdienu CHACHA20 straumi. Å”ifrs ar POLY1305 hash sasniedz pat 130 megabitus sekundē! Kāpēc VPN tuneļa ātrums ir tik mazs? Tas viss ir saistÄ«ts ar konteksta maiņu starp lietotāja telpu un kodola telpu: OpenVPN Å”ifrē trafiku un sazinās ar ārpasauli lietotāja kontekstā, un pati marÅ”rutÄ“Å”ana notiek kodola kontekstā. Operētājsistēmai ir nepārtraukti jāpārslēdzas uz priekÅ”u un atpakaļ par katru saņemto vai pārsÅ«tÄ«to paketi, un Ŕī darbÄ«ba ir lēna. Å Ä« problēma ir raksturÄ«ga visām VPN lietojumprogrammām, kas darbojas, izmantojot TUN/TAP draiveri, un nevar teikt, ka mazā ātruma problēmu izraisa slikta OpenVPN optimizācija (lai gan, protams, ir vietas, kuras ir jāpārstrādā). Neviens lietotāja telpas VPN klients nenodroÅ”ina pat gigabitu ar atspējotu Å”ifrÄ“Å”anu manā klēpjdatorā, nemaz nerunājot par sistēmām ar vāju procesoru.

Oranžais Pi Viens

Vienas plates Orange Pi One no Xunlong ir Å”obrÄ«d labākais piedāvājums veiktspējas/cenas attiecÄ«bas ziņā. Par 9.99 $* jÅ«s iegÅ«stat stabilu četrkodolu ARM Cortex-A7 procesoru, kas darbojas (stabils) ar frekvenci 1008 MHz un nepārprotami pārspēj savus cenas lÄ«meņa kaimiņus Raspberry Pi Zero un Next Thing CHIP. Å eit priekÅ”rocÄ«bas beidzas. Uzņēmums Xunlong pilnÄ«bā nepievērÅ” uzmanÄ«bu savu dēļu programmatÅ«rai, un laikā, kad One tika laists pārdoÅ”anā, tas pat neiesniedza dēļa konfigurācijas failu, nemaz nerunājot par gataviem attēliem. Allwinner, SoC ražotājs, arÄ« nav Ä«paÅ”i jutÄ«gs pret sava produkta atbalstu. Viņus interesē tikai minimāla veiktspēja operētājsistēmā Android 4.4.4, kas nozÄ«mē, ka mēs esam spiesti izmantot 3.4 kodolu ar Android ielāpiem. Par laimi, ir entuziasti, kas montē distribÅ«cijas, rediģē kodolu, raksta kodu atbalsta dēļiem galvenajā kodolā, t.i. viņi faktiski dara darbu ražotāja labā, padarot Å”o slikto darbu pieņemamu. Saviem nolÅ«kiem es izvēlējos Armbian izplatÄ«Å”anu; tas tiek bieži un ērti atjaunināts (jauni kodoli tiek instalēti tieÅ”i caur pakotņu pārvaldnieku, nevis kopējot failus uz Ä«paÅ”u nodalÄ«jumu, kā tas parasti notiek ar Allwinner), un tas atbalsta lielāko daļu perifērijas ierÄ«ces, atŔķirÄ«bā no citām.

MarÅ”rutētāju

Lai nenoslogotu vājo marÅ”rutētāja procesoru ar Å”ifrÄ“Å”anu un paātrinātu mÅ«su VPN savienojumu, varam Å”o uzdevumu pārcelt uz jaudÄ«gāka Orange Pi procesora pleciem, kaut kādā veidā savienojot to ar rÅ«teri. Nāk prātā izveidot savienojumu, izmantojot Ethernet vai USB ā€” abus Å”os standartus atbalsta abas ierÄ«ces, taču es negribēju izmantot esoÅ”os portus. Par laimi, ir izeja.

GL850G USB centrmezgla mikroshēma, kas tiek izmantota marÅ”rutētājā, atbalsta 4 USB portus, no kuriem divi nav savienoti. Nav skaidrs, kāpēc ražotājs tos, pieļauju, neatlodēja, lai neļautu lietotājiem vienlaikus savienot 4 ierÄ«ces ar lielu strāvas patēriņu (piemēram, cietos diskus). MarÅ”rutētāja standarta baroÅ”anas avots nav paredzēts Ŕādai slodzei. Jebkurā gadÄ«jumā tas mums ir izdevÄ«gi.
Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā
Lai iegÅ«tu citu USB portu, jums vienkārÅ”i jāpielodē divi vadi pie tapām 8 (D-) un 9 (D+) vai 11 (D-) un 12 (D+).

Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā

Tomēr nepietiek vienkārÅ”i pievienot divas USB ierÄ«ces un cerēt, ka viss darbosies pats no sevis, kā tas bÅ«tu ar Ethernet. Pirmkārt, mums ir jāpanāk, lai viens no tiem darbotos USB klienta režīmā, nevis USB Host, un, otrkārt, mums ir jāizlemj, kā ierÄ«ces atklās viena otru. Tā sauktajiem USB sÄ«krÄ«kiem (nosaukti Linux kodola apakÅ”sistēmas vārdā) ir daudz draiveru, kas ļauj emulēt dažāda veida USB ierÄ«ces: tÄ«kla adapteri, audio karti, tastatÅ«ru un peli, zibatmiņas disku, kameru, konsoli, izmantojot seriālo savienojumu. osta. Tā kā mÅ«su ierÄ«ce darbosies ar tÄ«klu, mums vislabāk ir emulēt Ethernet adapteri.

Ir trīs Ethernet-over-USB standarti:

  • Attālais NDIS (RNDIS). Novecojis Microsoft standarts, ko galvenokārt izmanto operētājsistēmā Windows XP.
  • Ethernet vadÄ«bas modelis (ECM). VienkārÅ”s standarts, kas iekapsulē Ethernet kadrus USB paketēs. Lieliski piemērots vadu modemiem ar USB pieslēgumu, kur ērti pārsÅ«tÄ«t kadrus bez apstrādes, taču vienkārŔības un USB kopnes ierobežojumu dēļ tas nav Ä«paÅ”i ātrs.
  • Ethernet emulācijas modelis (EEM). Viedāks protokols, kas ņem vērā USB ierobežojumus un optimāli apvieno vairākus kadrus vienā, tādējādi palielinot caurlaidspēju.
  • TÄ«kla vadÄ«bas modelis (NCM). Jaunākais protokols. Sniedz EEM priekÅ”rocÄ«bas un vēl vairāk optimizē autobusu lietoÅ”anas pieredzi.

Lai kāds no Å”iem protokoliem darbotos mÅ«su panelÄ«, kā vienmēr, mums bÅ«s jāsaskaras ar dažām grÅ«tÄ«bām. Sakarā ar to, ka Allwinner interesē tikai kodola Android daļas, normāli darbojas tikai Android Gadget - kods, kas realizē saziņu ar adb, eksportējot ierÄ«ci, izmantojot MTP protokolu, un emulējot zibatmiņu Android ierÄ«cēs. Pats Android sÄ«krÄ«ks atbalsta arÄ« RNDIS protokolu, taču tas ir bojāts Allwinner kodolā. Ja mēģināsit kompilēt kodolu ar jebkuru citu USB sÄ«krÄ«ku, ierÄ«ce vienkārÅ”i neparādÄ«sies sistēmā neatkarÄ«gi no tā, ko jÅ«s darāt.
Lai atrisinātu problēmu draudzīgā veidā, izstrādātāju modificētā Android sīkrīka android.c kodā ir jāatrod vieta, kur tiek inicializēts USB kontrolleris, taču ir arī risinājums, lai veiktu vismaz Ethernet emulāciju. USB darbs:

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

Šis ielāps piespiež USB klienta režīmu, ļaujot izmantot parastos USB sīkrīkus no Linux.
Tagad jums vajadzētu atjaunot kodolu ar Å”o ielāpu un nepiecieÅ”amo sÄ«krÄ«ku. Es izvēlējos EEM, jo... Saskaņā ar testa rezultātiem tas izrādÄ«jās produktÄ«vāks par NCM.
Armbijas komanda nodroÅ”ina ļoti vienkārÅ”a un ērta montāžas sistēma visiem atbalstÄ«tajiem dēļiem sadalē. VienkārÅ”i lejupielādējiet to, ievietojiet mÅ«su ielāpu userpatches/kernel/sun8i-default/otg.patch, nedaudz rediģējiet compile.sh un atlasiet vajadzÄ«go sÄ«krÄ«ku:

Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā

Kodols tiks apkopots deb pakotnē, kuru nebūs grūti instalēt uz tāfeles, izmantojot dpkg.
Atliek tikai savienot plati, izmantojot USB, un konfigurēt mūsu jauno tīkla adapteri, lai saņemtu adresi, izmantojot DHCP. Lai to izdarītu, jums jāpievieno kaut kas līdzīgs tālāk norādītajam /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'

MAC adresi labāk iestatÄ«t manuāli, jo... tas bÅ«s nejauÅ”s katru reizi, kad ierÄ«ce tiek pārstartēta, kas ir neērti un apgrÅ«tinoÅ”i.
Mēs savienojam MicroUSB kabeli ar OTG savienotāju, pievienojam baroÅ”anu no marÅ”rutētāja (to var piegādāt Ä·emmes 2. un 3. tapām, nevis tikai strāvas savienotājam).

Atliek tikai konfigurēt marÅ”rutētāju. Pietiek instalēt pakotni ar EEM draiveri un pievienot mÅ«su jauno USB tÄ«kla ierÄ«ci vietējā ugunsmÅ«ra zonas tiltam:

opkg install kmod-usb-net-cdc-eem

Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā
Lai novirzÄ«tu visu trafiku uz VPN tuneli, marÅ”rutētāja pusē ir jāpievieno SNAT kārtula plates IP adresei vai jāizplata dēļa adrese kā vārtejas adrese, izmantojot dnsmasq. Pēdējais tiek darÄ«ts, pievienojot Ŕādu rindu /etc/dnsmasq.conf:

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

kur 192.168.1.100 ā€” jÅ«su dēļa IP adrese. Neaizmirstiet ievadÄ«t marÅ”rutētāja adresi tÄ«kla iestatÄ«jumos uz paÅ”as plates!

Lai izolētu plates kontaktus no marÅ”rutētāja kontaktiem, tika izmantots melamÄ«na sÅ«klis. Tas izrādÄ«jās apmēram Ŕāds:
Paātriniet OpenVPN par 9.99 USD* vai integrējiet Orange Pi One savā marÅ”rutētājā

Secinājums

TÄ«kls caur USB darbojas pārsteidzoÅ”i ātri: 100-120 Mb/s, gaidÄ«ju mazāk. OpenVPN Ŕķērso apmēram 70 Mb/s Å”ifrētu trafiku, kas arÄ« nav ļoti daudz, bet manām vajadzÄ«bām pietiek. MarÅ”rutētāja vāks neaizveras cieÅ”i, atstājot nelielu atstarpi. Estēti var noņemt Ethernet un USB Host savienotājus no plates, kas ļaus vākam pilnÄ«bā aizvērties un joprojām paliks nedaudz vietas.
Labāk neiesaistīties Ŕādā pornogrāfijā un pirkt Turiss Omnija.

Avots: www.habr.com

Pievieno komentāru