Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador

Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador

Alguns de nosaltres no utilitzem Internet sense una VPN per un motiu o un altre: algú necessita una IP dedicada, i és més fàcil i barat comprar un VPS amb dues IP que comprar una adreça a un proveïdor, algú vol accedir a tots els llocs web. , i no només els permesos al territori de la Federació Russa, altres necessiten IPv6, però el proveïdor no el proporciona...
Molt sovint, s'estableix una connexió VPN al propi dispositiu que s'utilitza en un moment determinat, cosa que té sentit si només teniu un ordinador i un telèfon i poques vegades els feu servir al mateix temps. Si hi ha molts dispositius a la vostra xarxa domèstica o, per exemple, n'hi ha en què no es pot configurar VPN, seria més convenient crear un túnel directament al router domèstic per no pensar en configurar cada dispositiu per separat. .

Si alguna vegada heu instal·lat OpenVPN al vostre encaminador, probablement us ha sorprès desagradablement la rapidesa amb què funciona. Els SoC dels encaminadors fins i tot barats passen per un trànsit d'un gigabit sense cap problema, a causa de la transferència de les funcions d'encaminament i NAT a un xip separat dissenyat exclusivament per a aquesta tasca, i els processadors principals d'aquests encaminadors són força febles, perquè No hi ha pràcticament cap càrrega sobre ells. Aquest compromís us permet aconseguir una alta velocitat de l'encaminador i reduir significativament el preu del dispositiu acabat: els encaminadors amb processadors potents costen diverses vegades més i es col·loquen no només com a caixa per distribuir Internet, sinó també com a NAS, torrent. descàrrega i sistema multimèdia domèstic.

El meu encaminador, TP-Link TL-WDR4300, no es pot dir nou: el model va aparèixer a mitjans de 2012 i té un processador d'arquitectura MIPS560 32Kc de 74 MHz, la potència del qual només és suficient per a 20-23 Mb/s de trànsit xifrat. mitjançant OpenVPN, que és per estàndards La velocitat de l'Internet domèstic modern és força baixa.
Com podem augmentar la velocitat d'un túnel xifrat? El meu encaminador és bastant funcional, admet MIMO 3x3 i, en general, funciona bé, no voldria canviar-lo.
Com que ara és habitual fer pàgines d'Internet de 10 megabytes, escriure aplicacions d'escriptori a node.js i empaquetar-les en un fitxer de 100 megabytes, augmentar la potència de càlcul en lloc d'optimitzar, farem alguna cosa terrible: transferirem la connexió VPN a un "ordinador" productiu d'una sola placa Orange Pi One, que instal·larem a la carcassa de l'encaminador sense ocupar els ports de xarxa i USB existents, per només 9.99 $*!
* + lliurament, + impostos, + per a la cervesa, + MicroSD.

OpenVPN

El processador de l'encaminador no es pot dir completament feble: és capaç de xifrar i calcular dades mitjançant l'algoritme AES-128-CBC-SHA1 a una velocitat de 50 Mb/s, que és notablement més ràpid que com funciona OpenVPN i el flux modern CHACHA20. xifrat amb un hash POLY1305 fins i tot arriba als 130 megabits per segon! Per què la velocitat del túnel VPN és tan baixa? Es tracta del canvi de context entre l'espai d'usuari i l'espai del nucli: OpenVPN xifra el trànsit i es comunica amb el món exterior en el context de l'usuari, i l'encaminament en si es produeix en el context del nucli. El sistema operatiu ha de canviar constantment d'anada i tornada per a cada paquet rebut o transmès, i aquesta operació és lenta. Aquest problema és inherent a totes les aplicacions VPN que s'executen mitjançant un controlador TUN/TAP, i no es pot dir que el problema de la baixa velocitat sigui causat per una mala optimització d'OpenVPN (tot i que, per descomptat, hi ha llocs que s'han de reelaborar). Ni un sol client VPN d'espai d'usuari ofereix ni un gigabit amb el xifratge desactivat al meu ordinador portàtil, i molt menys sistemes amb un processador feble.

Orange Pi One

L'Orange Pi One d'un sol tauler de Xunlong és la millor oferta en termes de relació rendiment/preu del moment. Per 9.99 dòlars *, obteniu un processador ARM Cortex-A7 de quatre nuclis sòlid que funciona (estable) a 1008 MHz i supera clarament els seus veïns de preu, el Raspberry Pi Zero i el Next Thing CHIP. Aquí és on acaben els avantatges. L'empresa Xunlong no presta exactament cap atenció al programari dels seus taulers, i en el moment en què l'One es va llançar a la venda, ni tan sols va proporcionar un fitxer de configuració de la placa, per no parlar d'imatges ja fetes. Allwinner, un fabricant de SoC, tampoc és especialment sensible a donar suport al seu producte. Només els interessa un rendiment mínim al sistema operatiu Android 4.4.4, la qual cosa significa que estem obligats a utilitzar el nucli 3.4 amb pedaços d'Android. Afortunadament, hi ha entusiastes que munten distribucions, editen el nucli, escriuen codi per donar suport a taulers al nucli principal, és a dir. en realitat fan la feina per al fabricant, fent que aquesta merda funcioni de manera acceptable. Per als meus propòsits, vaig triar la distribució Armbian; s'actualitza amb freqüència i còmodament (els nous nuclis s'instal·len directament a través del gestor de paquets, i no copiant fitxers a una partició especial, com sol ser el cas d'Allwinner), i és compatible amb la majoria perifèrics, a diferència dels altres.

Router

Per no carregar el processador feble de l'encaminador amb xifratge i accelerar la nostra connexió VPN, podem traslladar aquesta tasca a les espatlles d'un processador Orange Pi més potent connectant-lo d'alguna manera al router. Em ve al cap la connexió mitjançant Ethernet o USB: tots dos estàndards són compatibles amb els dos dispositius, però no volia ocupar els ports existents. Afortunadament, hi ha una sortida.

El xip del concentrador USB GL850G, que s'utilitza a l'encaminador, admet 4 ports USB, dos dels quals no estan connectats. No està clar per què el fabricant no els va desoldar, suposo, per evitar que els usuaris connectessin 4 dispositius amb un gran consum de corrent (per exemple, discs durs) alhora. La font d'alimentació estàndard de l'encaminador no està dissenyada per a aquesta càrrega. En qualsevol cas, això ens beneficia.
Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador
Per obtenir un altre port USB, només cal soldar dos cables als pins 8 (D-) i 9 (D+) o 11 (D-) i 12 (D+).

Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador

Tanmateix, no n'hi ha prou amb connectar dos dispositius USB i esperar que tot funcioni sol, com ho faria amb Ethernet. En primer lloc, hem de fer que un d'ells funcioni en mode USB Client, i no USB Host, i en segon lloc, hem de decidir com es detectaran els dispositius entre ells. Hi ha molts controladors per als anomenats gadgets USB (anomenats així pel subsistema del nucli de Linux), que us permeten emular diversos tipus de dispositius USB: adaptador de xarxa, targeta d'àudio, teclat i ratolí, unitat flaix, càmera, consola mitjançant una sèrie. port. Com que el nostre dispositiu funcionarà amb la xarxa, emular un adaptador Ethernet és el millor per a nosaltres.

Hi ha tres estàndards Ethernet sobre USB:

  • NDIS remot (RNDIS). Un estàndard obsolet de Microsoft, utilitzat principalment durant Windows XP.
  • Model de control Ethernet (ECM). Un estàndard senzill que encapsula trames Ethernet dins de paquets USB. Ideal per a mòdems amb cable amb connexió USB, on és convenient transferir fotogrames sense processar, però a causa de la seva senzillesa i limitacions del bus USB, no és molt ràpid.
  • Model d'emulació Ethernet (EEM). Un protocol més intel·ligent que té en compte les limitacions USB i agrega de manera òptima múltiples fotogrames en un, augmentant així el rendiment.
  • Model de control de xarxa (NCM). El protocol més nou. Té els avantatges de l'EEM i optimitza encara més l'experiència de l'autobús.

Perquè algun d'aquests protocols funcioni a la nostra pissarra, com sempre, ens haurem de trobar amb algunes dificultats. A causa del fet que Allwinner només està interessat en les parts d'Android del nucli, només Android Gadget funciona normalment: el codi que implementa la comunicació amb adb, exportant el dispositiu mitjançant el protocol MTP i emulant una unitat flaix en dispositius Android. El propi Android Gadget també admet el protocol RNDIS, però està trencat al nucli Allwinner. Si intenteu compilar el nucli amb qualsevol altre gadget USB, el dispositiu simplement no apareixerà al sistema, sigui el que feu.
Per resoldre el problema, de manera amistosa, cal trobar el lloc on s'inicialitza el controlador USB en el codi del gadget Android android.c modificat pels desenvolupadors, però també hi ha una solució alternativa per fer almenys una emulació Ethernet sobre Treball 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;

Aquest pegat força el mode de client USB, cosa que us permet utilitzar gadgets USB habituals de Linux.
Ara hauríeu de reconstruir el nucli amb aquest pedaç i el gadget necessari. Vaig triar EEM perquè... Segons els resultats de les proves, va resultar ser més productiu que NCM.
L'equip Armbian ofereix sistema de muntatge molt senzill i còmode per a tots els taulers compatibles a la distribució. Només cal descarregar-lo, posar el nostre pegat userpatches/kernel/sun8i-default/otg.patch, edita una mica compile.sh i seleccioneu el gadget necessari:

Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador

El nucli es compilarà en un paquet deb, que no serà difícil d'instal·lar al tauler mitjançant dpkg.
Només queda connectar la placa via USB i configurar el nostre nou adaptador de xarxa per rebre una adreça via DHCP. Per fer-ho, heu d'afegir alguna cosa com el següent a /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'

És millor configurar l'adreça MAC manualment, perquè... serà aleatori cada vegada que es reiniciï el dispositiu, cosa que és incòmode i problemàtic.
Connectem el cable MicroUSB al connector OTG, connectem l'alimentació del router (es pot subministrar als pins 2 i 3 de la pinta, i no només al connector d'alimentació).

Només queda configurar l'encaminador. N'hi ha prou amb instal·lar el paquet amb el controlador EEM i afegir el nostre nou dispositiu de xarxa USB al pont de la zona del tallafoc local:

opkg install kmod-usb-net-cdc-eem

Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador
Per dirigir tot el trànsit al túnel VPN, heu d'afegir una regla SNAT a l'adreça IP del tauler al costat de l'encaminador o bé distribuir l'adreça del tauler com a adreça de passarel·la mitjançant dnsmasq. Això últim es fa afegint la línia següent a /etc/dnsmasq.conf:

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

on 192.168.1.100 — Adreça IP del vostre tauler. No us oblideu d'introduir l'adreça de l'encaminador a la configuració de xarxa del propi tauler!

Es va utilitzar una esponja de melamina per aïllar els contactes de la placa dels contactes del router. Va resultar una cosa així:
Accelera OpenVPN per 9.99 dòlars* o integra Orange Pi One al teu encaminador

Conclusió

La xarxa via USB funciona de manera sorprenentment ràpida: 100-120 Mb/s, m'esperava menys. OpenVPN passa per uns 70 Mb/s de trànsit xifrat, que tampoc és molt, però suficient per a les meves necessitats. La tapa del router no es tanca bé, deixant un petit buit. Els estetes poden treure els connectors Ethernet i USB Host de la placa, cosa que permetrà que la tapa es tanqui completament i encara quedi una mica d'espai.
És millor no participar en aquesta pornografia i comprar Turris Omnia.

Font: www.habr.com

Afegeix comentari