Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi

Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi

Jotkut meistä eivät käytä Internetiä ilman VPN-yhteyttä syystä tai toisesta: joku tarvitsee erillisen IP-osoitteen, ja on helpompaa ja halvempaa ostaa VPS kahdella IP-osoitteella kuin ostaa osoite palveluntarjoajalta, joku haluaa käyttää kaikkia verkkosivustoja , eivätkä vain Venäjän federaation alueella sallitut, toiset tarvitsevat IPv6:n, mutta palveluntarjoaja ei tarjoa sitä...
Useimmiten VPN-yhteys muodostetaan itse tietyllä hetkellä käytössä olevaan laitteeseen, mikä on järkevää, jos sinulla on vain yksi tietokone ja yksi puhelin ja käytät niitä harvoin samanaikaisesti. Jos kotiverkossasi on monia laitteita tai esimerkiksi on sellaisia, joissa VPN:ää ei voi konfiguroida, olisi kätevämpää luoda tunneli suoraan kotireitittimeen, jotta ei tarvitse miettiä jokaisen laitteen asentamista erikseen. .

Jos olet koskaan asentanut OpenVPN:n reitittimellesi, olet luultavasti yllättynyt ikävästi sen toimivuudesta. Jopa halpojen reitittimien SoC:t kulkevat noin gigabitin liikenteen läpi ilman ongelmia, koska reititys- ja NAT-toiminnot siirretään erilliselle sirulle, joka on suunniteltu yksinomaan tätä tehtävää varten, ja tällaisten reitittimien pääprosessorit ovat melko heikkoja, koska Niissä ei käytännössä ole kuormitusta. Tämän kompromissin avulla voit saavuttaa reitittimen suuren nopeuden ja alentaa merkittävästi valmiin laitteen hintaa - reitittimet, joissa on tehokkaat prosessorit, maksavat useita kertoja enemmän, ja ne on sijoitettu paitsi Internetin jakelulaatikoksi, myös NAS-, torrentiksi. latausohjelma ja kodin multimediajärjestelmä.

Reititintäni, TP-Link TL-WDR4300, ei voi kutsua uudeksi - malli ilmestyi vuoden 2012 puolivälissä, ja siinä on 560 MHz MIPS32 74Kc -arkkitehtuuriprosessori, jonka teho riittää vain 20-23 Mb/s salattuun liikenteeseen OpenVPN:n kautta, joka on standardien mukaan Nykyaikaisen koti-Internetin nopeus on melko alhainen.
Kuinka voimme lisätä salatun tunnelin nopeutta? Reitittimeni on melko toimiva, tukee 3x3 MIMO:ta ja toimii yleensä hyvin, en haluaisi muuttaa sitä.
Koska nykyään on tapana tehdä 10 megatavun Internet-sivuja, kirjoittaa työpöytäsovelluksia node.js:ään ja pakata ne 100 megatavun tiedostoon, lisätä laskentatehoa optimoinnin sijaan, teemme jotain kauheaa - siirrämme VPN-yhteyden tuottava yksilevyinen "tietokone" Orange Pi One, jonka asennamme reitittimen koteloon ilman olemassa olevia verkko- ja USB-portteja, hintaan vain 9.99 dollaria*!
* + toimitus, + verot, + oluet, + MicroSD.

OpenVPN

Reitittimen prosessoria ei voida kutsua täysin heikoksi - se pystyy salaamaan ja tiivistämään tietoja AES-128-CBC-SHA1-algoritmilla 50 Mb/s nopeudella, mikä on huomattavasti nopeampi kuin OpenVPN:n toiminta ja nykyaikainen CHACHA20-virta. salaus POLY1305-hashilla saavuttaa jopa 130 megabittiä sekunnissa! Miksi VPN-tunnelin nopeus on niin alhainen? Kyse on kontekstin vaihtamisesta käyttäjätilan ja ydintilan välillä: OpenVPN salaa liikenteen ja kommunikoi ulkomaailman kanssa käyttäjäkontekstissa, ja itse reititys tapahtuu ytimen kontekstissa. Käyttöjärjestelmän on jatkuvasti vaihdettava edestakaisin jokaista vastaanotettua tai lähetettyä pakettia kohden, ja tämä toiminta on hidasta. Tämä ongelma on luontainen kaikille VPN-sovelluksille, jotka toimivat TUN/TAP-ohjaimen kautta, eikä voida sanoa, että alhaisen nopeuden ongelma johtuu huonosta OpenVPN-optimoinnista (vaikka tietysti on paikkoja, joita on muokattava). Yksikään käyttäjätilan VPN-asiakas ei tarjoa edes gigabittiä, jonka salaus on poistettu käytöstä kannettavassani, puhumattakaan järjestelmistä, joissa on heikko prosessori.

Oranssi Pi Yksi

Xunlongin yksilevyinen Orange Pi One on tällä hetkellä paras tarjous suorituskyvyn ja hintasuhteen suhteen. 9.99 dollarilla* saat vankan neliytimisen ARM Cortex-A7 -prosessorin, joka toimii (vakaa) taajuudella 1008 MHz ja ylittää selvästi hintapisteensä naapurit Raspberry Pi Zero ja Next Thing CHIP. Tähän edut loppuvat. Xunlong-yhtiö ei kiinnitä tarkalleen nolla huomiota levyjensä ohjelmistoon, ja Onea lanseerattaessa se ei toimittanut edes levykonfiguraatiotiedostoa, puhumattakaan valmiista kuvista. SoC-valmistaja Allwinner ei myöskään ole erityisen herkkä tuotteensa tukemiselle. He ovat kiinnostuneita vain minimaalisesta suorituskyvystä Android 4.4.4 -käyttöjärjestelmässä, mikä tarkoittaa, että meidän on pakko käyttää 3.4-ydintä Android-korjausten kanssa. Onneksi on harrastajia, jotka kokoavat jakeluja, muokkaavat ydintä, kirjoittavat koodia pääytimen tukilevyille, ts. he todella tekevät työn valmistajan puolesta, mikä tekee tästä paskasta hyväksyttävän. Tarkoitukseeni valitsin Armbian-jakelun, jota päivitetään usein ja kätevästi (uudet ytimet asennetaan suoraan paketinhallinnan kautta, ei kopioimalla tiedostoja erityiseen osioon, kuten Allwinnerissä yleensä), ja se tukee useimpia oheislaitteet, toisin kuin muut.

reititin

Jotta reitittimen heikkoa prosessoria ei kuormitettaisi salauksella ja VPN-yhteyttämme ei nopeuttaisi, voimme siirtää tämän tehtävän tehokkaamman Orange Pi -prosessorin harteille yhdistämällä sen jollain tavalla reitittimeen. Tulee mieleen liittäminen joko Ethernetin tai USB:n kautta - molemmat laitteet tukevat näitä molempia standardeja, mutta en halunnut käyttää olemassa olevia portteja. Onneksi sieltä on ulospääsy.

Reitittimessä käytettävä GL850G USB-keskittimen siru tukee 4 USB-porttia, joista kaksi ei ole langallisia. On epäselvää, miksi valmistaja ei oletukseni purkanut niitä estääkseen käyttäjiä yhdistämästä neljää laitetta, joilla on korkea virrankulutus (esimerkiksi kiintolevyt) kerralla. Reitittimen vakiovirtalähdettä ei ole suunniteltu tällaiselle kuormitukselle. Joka tapauksessa tämä on meidän etumme.
Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi
Saadaksesi toisen USB-portin, sinun tarvitsee vain juottaa kaksi johtoa nastoihin 8(D-) ja 9(D+) tai 11(D-) ja 12(D+).

Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi

Ei kuitenkaan riitä, että liität vain kaksi USB-laitetta ja toivomme, että kaikki toimii itsestään, kuten Ethernetin kanssa. Ensinnäkin meidän on saatava yksi niistä toimimaan USB-asiakastilassa, ei USB-isäntätilassa, ja toiseksi meidän on päätettävä, kuinka laitteet tunnistavat toisensa. Niin sanotuille USB-gadgeteille (nimetty Linux-ytimen alijärjestelmän mukaan) on monia ohjaimia, joiden avulla voit emuloida erilaisia ​​USB-laitteita: verkkosovitin, äänikortti, näppäimistö ja hiiri, flash-asema, kamera, konsoli sarjaportin kautta. portti. Koska laitteemme toimii verkon kanssa, Ethernet-sovittimen emulointi on meille parasta.

Ethernet-over-USB-standardeja on kolme:

  • Etä-NDIS (RNDIS). Microsoftin vanhentunut standardi, jota käytetään pääasiassa Windows XP:n aikana.
  • Ethernet-ohjausmalli (ECM). Yksinkertainen standardi, joka kapseloi Ethernet-kehykset USB-paketteihin. Erinomainen USB-liitännällä varustetuille langallisille modeemeille, joissa on kätevää siirtää kehyksiä ilman käsittelyä, mutta yksinkertaisuuden ja USB-väylän rajoitusten vuoksi se ei ole kovin nopea.
  • Ethernet-emulointimalli (EEM). Älykkäämpi protokolla, joka ottaa huomioon USB-rajoitukset ja kokoaa optimaalisesti useita kehyksiä yhdeksi, mikä lisää suorituskykyä.
  • Network Control Model (NCM). Uusin protokolla. Sisältää EEM:n edut ja optimoi bussikokemuksen entisestään.

Jotta jokin näistä protokollista toimisi aluksellamme, kuten aina, meidän on kohdattava joitain vaikeuksia. Koska Allwinner on kiinnostunut vain ytimen Android-osista, vain Android Gadget toimii normaalisti - koodi, joka toteuttaa kommunikoinnin adb:n kanssa, vie laitteen MTP-protokollan kautta ja emuloi flash-asemaa Android-laitteissa. Android Gadget itse tukee myös RNDIS-protokollaa, mutta se on rikki Allwinner-ytimessä. Jos yrität kääntää ytimen millä tahansa muulla USB-gadgetilla, laite ei yksinkertaisesti näy järjestelmässä riippumatta siitä, mitä teet.
Ongelman ratkaisemiseksi sovinnollisesti sinun on löydettävä kehittäjien muokkaaman Android-gadgetin android.c koodista paikka, jossa USB-ohjain alustetaan, mutta on myös kiertotapa tehdä ainakin Ethernet-emulointi. USB työ:

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

Tämä korjaustiedosto pakottaa USB-asiakastilan, jolloin voit käyttää tavallisia Linuxin USB-gadgeteja.
Nyt sinun pitäisi rakentaa ydin uudelleen tällä korjaustiedostolla ja tarvittavalla gadgetilla. Valitsin EEM:n, koska... Testitulosten mukaan se osoittautui tuottavammaksi kuin NCM.
Armbian joukkue tarjoaa erittäin yksinkertainen ja kätevä asennusjärjestelmä kaikille jakelussa tuetuille levyille. Lataa vain se ja laita korjaustiedostomme userpatches/kernel/sun8i-default/otg.patch, muokkaa hieman compile.sh ja valitse tarvittava gadget:

Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi

Ydin käännetään deb-paketiksi, jonka asentaminen levylle ei ole vaikeaa dpkg.
Jäljelle jää vain liittää kortti USB:n kautta ja määrittää uusi verkkosovittimemme vastaanottamaan osoite DHCP:n kautta. Tätä varten sinun on lisättävä jotain seuraavan kaltaista /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-osoite on parempi asettaa manuaalisesti, koska... se on satunnainen aina, kun laite käynnistetään uudelleen, mikä on hankalaa ja hankalaa.
Kytkemme MicroUSB-kaapelin OTG-liittimeen, kytkemme virran reitittimestä (se voidaan syöttää kamman nastoihin 2 ja 3, ei vain virtaliittimeen).

Jäljelle jää vain reitittimen asetukset. Riittää, kun asennat paketin EEM-ohjaimella ja lisäämme uuden USB-verkkolaitteemme paikallisen palomuurivyöhykkeen siltaan:

opkg install kmod-usb-net-cdc-eem

Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi
Jos haluat reitittää kaiken liikenteen VPN-tunneliin, sinun on joko lisättävä SNAT-sääntö kortin IP-osoitteeseen reitittimen puolella tai jaettava kortin osoite yhdyskäytävän osoitteeksi dnsmasqin kautta. Jälkimmäinen tehdään lisäämällä seuraava rivi /etc/dnsmasq.conf:

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

missä 192.168.1.100 - korttisi IP-osoite. Älä unohda syöttää reitittimen osoitetta verkkoasetuksiin itse levyllä!

Melamiinisientä käytettiin eristämään levyn koskettimet reitittimen koskettimista. Siitä tuli jotain tällaista:
Nopeuta OpenVPN:ää 9.99 dollarilla* tai integroi Orange Pi One reitittimeesi

Johtopäätös

Verkko USB:n kautta toimii yllättävän nopeasti: 100-120 Mb/s, odotin vähemmän. OpenVPN kulkee läpi noin 70 Mb/s salattua liikennettä, mikä ei myöskään ole kovin paljon, mutta tarpeeksi minun tarpeisiini. Reitittimen kansi ei sulkeudu tiukasti, jolloin jää pieni rako. Esteetit voivat irrottaa Ethernet- ja USB-isäntäliittimet levyltä, jolloin kansi sulkeutuu kokonaan ja tilaa on vielä jäljellä.
On parempi olla harjoittamatta tällaista pornografiaa ja ostaa Turris Omnia.

Lähde: will.com

Lisää kommentti