Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe

Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe

Vannak, akik valamilyen okból nem használják az internetet VPN nélkül: valakinek dedikált IP-re van szüksége, és egyszerűbb és olcsóbb két IP-vel rendelkező VPS-t vásárolni, mint szolgáltatótól címet vásárolni, valaki minden webhelyet szeretne elérni. , és nem csak az Orosz Föderáció területén engedélyezetteknek, másoknak IPv6 kell, de a szolgáltató nem biztosítja...
A VPN-kapcsolat leggyakrabban magán az adott pillanatban használt eszközön jön létre, ami akkor van értelme, ha csak egy számítógépe és egy telefonja van, és ritkán használja őket egyszerre. Ha sok eszköz van az otthoni hálózatban, vagy például vannak olyanok, amelyeken a VPN nem konfigurálható, kényelmesebb lenne közvetlenül az otthoni útválasztón létrehozni egy alagutat, hogy ne gondoljon az egyes eszközök külön beállítására. .

Ha valaha is telepítette az OpenVPN-t az útválasztóra, valószínűleg kellemetlenül lepte meg, milyen gyorsan működik. Az olcsó routerek SoC-jai nagyjából egy gigabites forgalmat mennek át gond nélkül, a routing és a NAT funkciók egy külön, kizárólag erre a feladatra tervezett chipre való átvitele miatt, és az ilyen routerek fő processzorai elég gyengék, mert Gyakorlatilag nincs rajtuk terhelés. Ez a kompromisszum lehetővé teszi az útválasztó nagy sebességének elérését és a kész eszköz árának jelentős csökkentését - a nagy teljesítményű processzorokkal rendelkező útválasztók többszöröse drágábbak, és nem csak az internet elosztására szolgáló dobozként vannak elhelyezve, hanem NAS-ként, torrentként is letöltő és otthoni multimédiás rendszer.

A routerem, a TP-Link TL-WDR4300 nem nevezhető újnak - a modell 2012 közepén jelent meg, 560 MHz-es MIPS32 74Kc architektúrájú processzorral rendelkezik, melynek teljesítménye mindössze 20-23 Mb/s titkosított forgalomra elegendő. OpenVPN-n keresztül, ami szabvány szerint A modern otthoni internet sebessége meglehetősen alacsony.
Hogyan növelhetjük egy titkosított alagút sebességét? A routerem teljesen működőképes, támogatja a 3x3 MIMO-t, és általában jól működik, nem szeretném megváltoztatni.
Mivel ma már bevett szokás 10 megabájtos internetes oldalakat készíteni, asztali alkalmazásokat node.js-ben írni és 100 megabájtos fájlba csomagolni, optimalizálás helyett a számítási teljesítményt növelni, borzasztót csinálunk - átvisszük a VPN-kapcsolatot a egy produktív egykártyás „számítógép” Orange Pi One, amelyet a router házába telepítünk anélkül, hogy lefoglalnánk a meglévő hálózati és USB portokat, mindössze 9.99 dollárért*!
* + szállítás, + adók, + sör, + MicroSD.

OpenVPN

A router processzora nem nevezhető teljesen gyengének - az AES-128-CBC-SHA1 algoritmussal 50 Mb/s sebességgel képes titkosítani és kivonatolni az adatokat, ami észrevehetően gyorsabb, mint az OpenVPN és a modern CHACHA20 stream. A titkosítás POLY1305 hash-sel akár a 130 megabitet is eléri másodpercenként! Miért olyan alacsony a VPN-alagút sebessége? Minden a felhasználói terület és a kerneltér közötti kontextusváltásról szól: az OpenVPN titkosítja a forgalmat és a felhasználói környezetben kommunikál a külvilággal, maga az útválasztás pedig a kernelkörnyezetben történik. Az operációs rendszernek folyamatosan oda-vissza kell váltania minden fogadott vagy továbbított csomag után, és ez a művelet lassú. Ez a probléma minden TUN/TAP illesztőprogramon keresztül futó VPN-alkalmazásban benne van, és nem mondható, hogy az alacsony sebesség problémáját a rossz OpenVPN optimalizálás okozza (bár persze vannak helyek, amelyeket át kell dolgozni). Egyetlen felhasználói térbeli VPN-kliens sem biztosít még egy gigabitet sem, ha a laptopomon letiltja a titkosítást, nem beszélve a gyenge processzorral rendelkező rendszerekről.

Narancssárga Pi One

A Xunlong egykártyás Orange Pi One a legjobb ajánlat teljesítmény/ár arány szempontjából jelenleg. 9.99 dollárért* kapsz egy szilárd négymagos ARM Cortex-A7 processzort, amely (stabil) 1008 MHz-en fut, és egyértelműen felülmúlja árfekvésű szomszédait, a Raspberry Pi Zero-t és a Next Thing CHIP-et. Itt érnek véget az előnyök. A Xunlong cég pontosan nulla figyelmet fordít táblái szoftverére, és a One eladásakor még táblakonfigurációs fájlt sem adott, a kész képekről nem is beszélve. Az Allwinner, az SoC-gyártó sem különösebben érzékeny terméke támogatására. Őket csak a minimális teljesítmény érdekli az Android 4.4.4 operációs rendszerben, ami azt jelenti, hogy kénytelenek vagyunk a 3.4-es kernelt használni Android javításokkal. Szerencsére vannak olyan lelkesek, akik disztribúciókat állítanak össze, kernelt szerkesztenek, kódot írnak a fővonali kernelben lévő támogatási táblákhoz, pl. valójában a gyártó helyett végzik el a munkát, így ez a baromság elfogadhatóan működik. Célomra az Armbian disztribúciót választottam, amely gyakran és kényelmesen frissül (az új kernelek telepítése közvetlenül a csomagkezelőn keresztül történik, nem pedig a fájlok speciális partícióra másolásával, mint általában az Allwinner esetében), és a legtöbbet támogatja perifériák, ellentétben a többivel.

router

Annak érdekében, hogy a router gyenge processzorát ne terheljük titkosítással és felgyorsítsuk VPN kapcsolatunkat, ezt a feladatot egy erősebb Orange Pi processzor vállára háríthatjuk, ha valamilyen módon a routerhez kötjük. Eszembe jut az Ethernet- vagy USB-csatlakozás – mindkét szabványt mindkét eszköz támogatja, de nem akartam a meglévő portokat felvenni. Szerencsére van kiút.

A routerben használt GL850G USB hub chip 4 USB portot támogat, amelyek közül kettő nincs vezetékes. Nem világos, hogy a gyártó miért nem forrasztotta ki őket, feltételezem, hogy megakadályozza a felhasználókat, hogy egyszerre 4 nagy áramfelvételű eszközt (például merevlemezt) csatlakoztassanak. A router szabványos tápegységét nem ilyen terhelésre tervezték. Ez mindenesetre előnyünkre válik.
Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe
Egy másik USB-porthoz csak két vezetéket kell forrasztania a 8(D-) és 9(D+) vagy a 11(D-) és 12(D+) érintkezőkhöz.

Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe

Nem elég azonban egyszerűen csatlakoztatni két USB-eszközt, és abban reménykedni, hogy minden magától fog működni, ahogy az Ethernet esetében is működne. Először is az egyiket USB-kliens módban kell működésre bírnunk, nem pedig az USB Host-ot, másodszor pedig el kell döntenünk, hogy az eszközök hogyan érzékelik egymást. Számos illesztőprogram létezik az úgynevezett USB Gadget-ekhez (a Linux kernel alrendszerről kapta a nevét), amelyek lehetővé teszik különböző típusú USB-eszközök emulálását: hálózati adapter, hangkártya, billentyűzet és egér, flash meghajtó, kamera, konzol soros úton. kikötő. Mivel készülékünk működik a hálózattal, az Ethernet adapter emulálása a legjobb számunkra.

Három Ethernet-USB-szabvány létezik:

  • Távoli NDIS (RNDIS). A Microsoft elavult szabványa, amelyet elsősorban Windows XP alatt használnak.
  • Ethernet-vezérlési modell (ECM). Egy egyszerű szabvány, amely az Ethernet-kereteket USB-csomagokba foglalja. Kiválóan használható USB csatlakozású vezetékes modemekhez, ahol kényelmes a képkockák feldolgozása nélkül, de egyszerűsége és az USB busz korlátai miatt nem túl gyors.
  • Ethernet emulációs modell (EEM). Intelligensebb protokoll, amely figyelembe veszi az USB-korlátozásokat, és optimálisan összesíti több képkockát egybe, így növelve az átviteli sebességet.
  • Hálózatvezérlési modell (NCM). A legújabb protokoll. Rendelkezik az EEM előnyeivel, és tovább optimalizálja a busz élményét.

Ahhoz, hogy ezen protokollok bármelyike ​​működjön a táblánkon, mint mindig, némi nehézségbe kell ütköznünk. Tekintettel arra, hogy az Allwinnert csak a kernel Android részei érdeklik, csak az Android Gadget működik normálisan - az a kód, amely az adb-vel való kommunikációt valósítja meg, az eszközt az MTP protokollon keresztül exportálja, és egy flash meghajtót emulál Android-eszközökön. Maga az Android Gadget is támogatja az RNDIS protokollt, de az Allwinner kernelben megszakad. Ha megpróbálja lefordítani a kernelt bármely más USB Gadgettel, az eszköz egyszerűen nem jelenik meg a rendszeren, bármit is csinál.
A probléma békés megoldásához meg kell találni az USB-vezérlő inicializálásának helyét az android.c androidos kütyü fejlesztők által módosított kódjában, de van egy megkerülő megoldás is, hogy legalább Ethernet-emulációt végezzünk. USB munka:

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

Ez a javítás kényszeríti az USB-kliens módot, lehetővé téve a Linux rendszeres USB-moduljainak használatát.
Most újra kell építeni a kernelt ezzel a javítással és a szükséges kütyüvel. Azért választottam az EEM-et, mert... A teszteredmények szerint termelékenyebbnek bizonyult, mint az NCM.
Az Armbian csapat biztosítja nagyon egyszerű és kényelmes összeszerelési rendszer a terjesztésben szereplő összes támogatott táblához. Csak töltse le, és tegye be a javításunkat userpatches/kernel/sun8i-default/otg.patch, szerkessz egy kicsit compile.sh és válassza ki a kívánt modult:

Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe

A kernel egy deb csomagba lesz fordítva, amelyen keresztül nem lesz nehéz telepíteni a táblára dpkg.
Nincs más hátra, mint USB-n keresztül csatlakoztatni a kártyát, és beállítani az új hálózati adapterünket, hogy DHCP-n keresztül kapjon címet. Ehhez hozzá kell adnia az alábbiakhoz hasonlót /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'

A MAC-címet jobb manuálisan beállítani, mert... ez véletlenszerű lesz minden alkalommal, amikor az eszközt újraindítják, ami kényelmetlen és zavaró.
Csatlakoztatjuk a MicroUSB-kábelt az OTG-csatlakozóhoz, csatlakoztatjuk az útválasztó tápellátását (a fésű 2-es és 3-as érintkezőjére táplálható, és nem csak a tápcsatlakozóra).

Már csak az útválasztó konfigurálása van hátra. Elég telepíteni a csomagot az EEM driverrel és hozzáadni az új USB hálózati eszközünket a helyi tűzfalzóna hídjához:

opkg install kmod-usb-net-cdc-eem

Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe
Ha az összes forgalmat a VPN-alagútba szeretné irányítani, vagy hozzá kell adnia egy SNAT-szabályt a kártya IP-címéhez az útválasztó oldalán, vagy el kell osztania a tábla címét átjárócímként a dnsmasq-n keresztül. Ez utóbbi a következő sor hozzáadásával történik /etc/dnsmasq.conf:

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

ahol 192.168.1.100 — A tábla IP-címe. Ne felejtse el megadni a router címét a hálózati beállításokban magán a kártyán!

Melamin szivacsot használtak a kártya érintkezőinek a router érintkezőitől való elkülönítésére. Valami ilyesmi lett belőle:
Gyorsítsa fel az OpenVPN-t 9.99 dollárért*, vagy integrálja az Orange Pi One-t a routerébe

Következtetés

Meglepően gyorsan működik a hálózat USB-n keresztül: 100-120 Mb/s, kevesebbre számítottam. Az OpenVPN körülbelül 70 Mb/s titkosított forgalmat halad át, ami szintén nem túl sok, de az én igényeimnek elég. A router fedele nem záródik szorosan, kis rést hagyva. Az esztéták eltávolíthatják az Ethernet és az USB Host csatlakozókat az alaplapról, ami lehetővé teszi, hogy a fedél teljesen lecsukódjon, és még marad egy kis hely.
Jobb, ha nem veszünk részt ilyen pornográfiában, és nem vásárolunk Turris Omnia.

Forrás: will.com

Hozzászólás