Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador

Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador

Algúns de nós non usamos Internet sen unha VPN por unha razón ou outra: alguén necesita unha IP dedicada, e é máis fácil e máis barato mercar un VPS con dúas IP que mercar un enderezo a un provedor, alguén quere acceder a todos os sitios web. , e non só os permitidos no territorio da Federación Rusa, outros necesitan IPv6, pero o provedor non o proporciona...
Na maioría das veces, establécese unha conexión VPN no propio dispositivo que se está a utilizar nun momento determinado, o que ten sentido se só tes un ordenador e un teléfono e raramente os usas ao mesmo tempo. Se hai moitos dispositivos na túa rede doméstica ou, por exemplo, hai algúns nos que non se pode configurar a VPN, sería máis conveniente crear un túnel directamente no enrutador doméstico para non pensar en configurar cada dispositivo por separado. .

Se xa instalaches OpenVPN no teu enrutador, é probable que te sorprendas desagradablemente a rapidez con que funciona. Os SoC incluso dos enrutadores baratos pasan por un tráfico de gigabit sen ningún problema, debido á transferencia de funcións de enrutamento e NAT a un chip separado deseñado exclusivamente para esta tarefa, e os procesadores principais destes enrutadores son bastante débiles, porque Practicamente non hai carga sobre eles. Este compromiso permítelle acadar unha alta velocidade do enrutador e reducir significativamente o prezo do dispositivo acabado: os enrutadores con procesadores potentes custan varias veces máis e sitúanse non só como caixa para distribuír Internet, senón tamén como NAS, torrent. descargador e sistema multimedia doméstico.

O meu enrutador, TP-Link TL-WDR4300, non se pode chamar novo: o modelo apareceu a mediados de 2012 e ten un procesador de arquitectura MIPS560 32Kc de 74 MHz, cuxa potencia só é suficiente para 20-23 Mb/s de tráfico cifrado. a través de OpenVPN, que é por estándares A velocidade da Internet doméstica moderna é bastante baixa.
Como podemos aumentar a velocidade dun túnel cifrado? O meu enrutador é bastante funcional, admite 3x3 MIMO e, en xeral, funciona ben, non me gustaría cambialo.
Dado que agora é costume facer páxinas de Internet de 10 megabytes, escribir aplicacións de escritorio en node.js e empaquetalas nun ficheiro de 100 megabytes, aumentar a potencia de cálculo en lugar de optimizar, faremos algo terrible: transferiremos a conexión VPN a un "computador" produtivo de placa única Orange Pi One, que instalaremos na carcasa do enrutador sen ocupar os portos de rede e USB existentes, por só 9.99 $*!
* + entrega, + impostos, + para cervexa, + MicroSD.

OpenVPN

O procesador do enrutador non se pode chamar completamente débil: é capaz de cifrar e hash datos usando o algoritmo AES-128-CBC-SHA1 a unha velocidade de 50 Mb/s, que é notablemente máis rápido que como funciona OpenVPN e o fluxo moderno CHACHA20. cifrado cun hash POLY1305 chega ata os 130 megabits por segundo! Por que a velocidade do túnel VPN é tan baixa? Trátase de cambiar o contexto entre o espazo de usuario e o espazo do núcleo: OpenVPN cifra o tráfico e comunícase co mundo exterior no contexto do usuario, e o propio enrutamento prodúcese no contexto do núcleo. O sistema operativo ten que cambiar constantemente cara atrás para cada paquete recibido ou transmitido, e esta operación é lenta. Este problema é inherente a todas as aplicacións VPN que se executan a través dun controlador TUN/TAP, e non se pode dicir que o problema da baixa velocidade sexa causado pola mala optimización de OpenVPN (aínda que, por suposto, hai lugares que hai que reelaborar). Nin un só cliente VPN de espazo de usuario ofrece nin un gigabit co cifrado desactivado no meu portátil, e moito menos sistemas cun procesador débil.

Orange PiOne

O Orange Pi One de placa única de Xunlong é a mellor oferta en termos de relación rendemento/prezo neste momento. Por 9.99 dólares * obtén un procesador ARM Cortex-A7 de catro núcleos sólido que funciona (estable) a 1008 MHz, e supera claramente aos seus veciños de prezos Raspberry Pi Zero e Next Thing CHIP. Aquí rematan as vantaxes. A empresa Xunlong presta exactamente cero atención ao software das súas placas e, no momento en que o One se lanzou á venda, nin sequera proporcionou un ficheiro de configuración de placas, sen esquecer as imaxes preparadas. Allwinner, un fabricante de SoC, tampouco é especialmente sensible a apoiar o seu produto. Só lles interesa un rendemento mínimo no sistema operativo Android 4.4.4, o que significa que estamos obrigados a usar o núcleo 3.4 con parches de Android. Afortunadamente, hai entusiastas que montan distribucións, editan o núcleo, escriben código para soportar placas no núcleo principal, é dicir. realmente fan o traballo para o fabricante, facendo que esta merda funcione de forma aceptable. Para os meus propósitos, escollín a distribución Armbian; actualízase con frecuencia e convenientemente (os novos núcleos instálanse directamente a través do xestor de paquetes, e non copiando ficheiros nunha partición especial, como adoita ser o caso de Allwinner), e admite a maioría periféricos, a diferenza dos outros.

Router

Para non cargar o procesador débil do enrutador con cifrado e acelerar a nosa conexión VPN, podemos trasladar esta tarefa aos ombreiros dun procesador Orange Pi máis potente conectándoo ao enrutador dalgún xeito. A conexión a través de Ethernet ou USB vén á mente: ambos os dous dispositivos admiten estes estándares, pero non quería ocupar os portos existentes. Afortunadamente, hai unha saída.

O chip concentrador USB GL850G, que se usa no enrutador, admite 4 portos USB, dous dos cales non están cableados. Non está claro por que o fabricante non os dessoldou, supoño, para evitar que os usuarios conecten 4 dispositivos con alto consumo de corrente (por exemplo, discos duros) á vez. A fonte de alimentación estándar do enrutador non está deseñada para tal carga. En calquera caso, isto é a nosa vantaxe.
Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador
Para obter outro porto USB, só precisa soldar dous cables aos pines 8(D-) e 9(D+) ou 11(D-) e 12(D+).

Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador

Non obstante, non basta con conectar dous dispositivos USB e esperar que todo funcione por si só, como sucedería con Ethernet. En primeiro lugar, temos que facer que un deles funcione no modo de cliente USB, e non de host USB e, en segundo lugar, debemos decidir como se detectarán os dispositivos. Existen moitos controladores para os chamados Gadgets USB (coñecidos polo subsistema do núcleo de Linux), que permiten emular varios tipos de dispositivos USB: adaptador de rede, tarxeta de audio, teclado e rato, unidade flash, cámara, consola a través dunha serie. Porto. Dado que o noso dispositivo funcionará coa rede, o mellor para nós é emular un adaptador Ethernet.

Existen tres estándares Ethernet sobre USB:

  • NDIS remoto (RNDIS). Un estándar obsoleto de Microsoft, usado principalmente durante Windows XP.
  • Modelo de control Ethernet (ECM). Un estándar sinxelo que encapsula marcos Ethernet dentro de paquetes USB. Ideal para módems con cable con conexión USB, onde é conveniente transferir fotogramas sen procesar, pero debido á súa sinxeleza e ás limitacións do bus USB, non é moi rápido.
  • Modelo de emulación Ethernet (EEM). Un protocolo máis intelixente que ten en conta as limitacións do USB e agrega de forma óptima múltiples fotogramas nun só, aumentando así o rendemento.
  • Modelo de control de rede (NCM). O protocolo máis novo. Ten as vantaxes de EEM e optimiza aínda máis a experiencia do autobús.

Para que algún destes protocolos funcione no noso taboleiro, coma sempre, teremos que atoparnos con algunhas dificultades. Debido ao feito de que Allwinner só está interesado nas partes do núcleo de Android, só Android Gadget funciona normalmente: o código que implementa a comunicación con adb, exporta o dispositivo a través do protocolo MTP e emula unha unidade flash en dispositivos Android. O propio Android Gadget tamén admite o protocolo RNDIS, pero está roto no núcleo Allwinner. Se tentas compilar o núcleo con calquera outro gadget USB, o dispositivo simplemente non aparecerá no sistema, faga o que fagas.
Para solucionar o problema, dun xeito amigable, cómpre atopar o lugar onde se inicializa o controlador USB no código do gadget Android android.c modificado polos desenvolvedores, pero tamén hai unha solución para facer polo menos unha emulación Ethernet sobre Traballo 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;

Este parche forza o modo de cliente USB, o que lle permite usar gadgets USB habituais de Linux.
Agora deberías reconstruír o núcleo con este parche e o gadget necesario. Elixín EEM porque... Segundo os resultados das probas, resultou ser máis produtivo que NCM.
O equipo Armbian ofrece sistema de montaxe moi sinxelo e cómodo para todas as placas admitidas na distribución. Só descargalo, pon o noso parche userpatches/kernel/sun8i-default/otg.patch, edita un pouco compile.sh e selecciona o gadget necesario:

Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador

O núcleo compilarase nun paquete deb, que non será difícil de instalar no taboleiro mediante dpkg.
Só queda conectar a placa vía USB e configurar o noso novo adaptador de rede para recibir un enderezo vía DHCP. Para iso cómpre engadir algo como o seguinte 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'

É mellor configurar o enderezo MAC manualmente, porque... será aleatorio cada vez que se reinicie o dispositivo, o que é inconveniente e problemático.
Conectamos o cable MicroUSB ao conector OTG, conectamos a alimentación do enrutador (pódese subministrar aos pinos 2 e 3 do pente, e non só ao conector de alimentación).

Só queda configurar o router. É suficiente con instalar o paquete co controlador EEM e engadir o noso novo dispositivo de rede USB á ponte da zona de firewall local:

opkg install kmod-usb-net-cdc-eem

Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador
Para dirixir todo o tráfico ao túnel VPN, cómpre engadir unha regra SNAT ao enderezo IP da placa no lado do enrutador ou ben distribuír o enderezo da tarxeta como enderezo de pasarela a través de dnsmasq. Isto último faise engadindo a seguinte liña a /etc/dnsmasq.conf:

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

onde 192.168.1.100 — Enderezo IP do teu taboleiro. Non esquezas introducir o enderezo do enrutador na configuración de rede do propio taboleiro.

Utilizouse unha esponxa de melamina para illar os contactos da placa dos contactos do router. Resultou algo así:
Acelera OpenVPN por 9.99 $* ou integra Orange Pi One no teu enrutador

Conclusión

A rede vía USB funciona sorprendentemente rápido: 100-120 Mb/s, esperaba menos. OpenVPN pasa por uns 70 Mb/s de tráfico cifrado, que tampouco é moito, pero suficiente para as miñas necesidades. A tapa do router non se pecha ben, deixando un pequeno oco. Os estetas poden eliminar os conectores Ethernet e USB Host da placa, o que permitirá que a tapa se peche completamente e aínda quede algo de espazo.
É mellor non participar en tal pornografía e comprar Turris Omnia.

Fonte: www.habr.com

Engadir un comentario