Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador

Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador

Algunos de nosotros no usamos Internet sin una VPN por una razón u otra: alguien necesita una IP dedicada y es más fácil y económico comprar un VPS con dos IP que comprar una dirección de un proveedor, alguien quiere acceder a todos los sitios web , y no sólo los permitidos en el territorio de la Federación Rusa, otros necesitan IPv6, pero el proveedor no lo proporciona...
La mayoría de las veces, una conexión VPN se establece en el propio dispositivo que se está utilizando en un momento determinado, lo que tiene sentido si sólo tienes una computadora y un teléfono y rara vez los usas al mismo tiempo. Si hay muchos dispositivos en su red doméstica, o, por ejemplo, hay algunos en los que no se puede configurar VPN, sería más conveniente crear un túnel directamente en el enrutador doméstico para no pensar en configurar cada dispositivo por separado. .

Si alguna vez instaló OpenVPN en su enrutador, probablemente se haya sorprendido desagradablemente por lo rápido que funciona. Los SoC de enrutadores incluso baratos transmiten un tráfico de aproximadamente un gigabit sin problemas, debido a la transferencia de las funciones de enrutamiento y NAT a un chip separado diseñado exclusivamente para esta tarea, y los procesadores principales de dichos enrutadores son bastante débiles, porque Prácticamente no tienen carga. Este compromiso le permite lograr una alta velocidad del enrutador y reducir significativamente el precio del dispositivo terminado: los enrutadores con procesadores potentes cuestan varias veces más y se posicionan no solo como una caja para distribuir Internet, sino también como NAS, torrent Descargador y sistema multimedia doméstico.

Mi enrutador, TP-Link TL-WDR4300, no se puede llamar nuevo: el modelo apareció a mediados de 2012 y tiene un procesador de arquitectura MIPS560 32Kc de 74 MHz, cuya potencia solo es suficiente para 20-23 Mb/s de tráfico cifrado. a través de OpenVPN, que según los estándares La velocidad de Internet doméstica moderna es bastante baja.
¿Cómo podemos aumentar la velocidad de un túnel cifrado? Mi enrutador es bastante funcional, admite MIMO 3x3 y, en general, funciona bien, no me gustaría cambiarlo.
Dado que ahora es costumbre crear páginas de Internet de 10 megabytes, escribir aplicaciones de escritorio en node.js y empaquetarlas en un archivo de 100 megabytes, aumentar la potencia informática en lugar de optimizarla, haremos algo terrible: transferiremos la conexión VPN a una productiva “computadora” de placa única Orange Pi One, que instalaremos en la caja del enrutador sin ocupar los puertos de red y USB existentes, ¡por solo $9.99*!
* + entrega, + impuestos, + para cerveza, + MicroSD.

OpenVPN

El procesador del enrutador no se puede considerar completamente débil: es capaz de cifrar y hacer hash de datos utilizando el algoritmo AES-128-CBC-SHA1 a una velocidad de 50 Mb/s, que es notablemente más rápido que el funcionamiento de OpenVPN y el moderno flujo CHACHA20. ¡El cifrado con un hash POLY1305 alcanza incluso los 130 megabits por segundo! ¿Por qué la velocidad del túnel VPN es tan baja? Se trata de cambiar de contexto entre el espacio del usuario y el espacio del kernel: OpenVPN cifra el tráfico y se comunica con el mundo exterior en el contexto del usuario, y el enrutamiento en sí ocurre en el contexto del kernel. El sistema operativo tiene que alternar constantemente entre cada paquete recibido o transmitido, y esta operación es lenta. Este problema es inherente a todas las aplicaciones VPN que se ejecutan a través de un controlador TUN/TAP, y no se puede decir que el problema de la baja velocidad sea causado por una mala optimización de OpenVPN (aunque, por supuesto, hay lugares que necesitan ser reelaborados). Ni un solo cliente VPN de espacio de usuario proporciona ni siquiera un gigabit con el cifrado desactivado en mi computadora portátil, y mucho menos sistemas con un procesador débil.

Naranja Pi Uno

El Orange Pi One de placa única de Xunlong es la mejor oferta en términos de relación rendimiento/precio en este momento. Por $ 9.99* obtienes un sólido procesador ARM Cortex-A7 de cuatro núcleos que funciona (estable) a 1008 MHz y supera claramente a sus vecinos de precio Raspberry Pi Zero y Next Thing CHIP. Aquí es donde terminan las ventajas. La empresa Xunlong no presta absolutamente ninguna atención al software de sus placas, y en el momento en que One se lanzó a la venta, ni siquiera proporcionaba un archivo de configuración de la placa, sin mencionar las imágenes listas para usar. Allwinner, un fabricante de SoC, tampoco es particularmente sensible al soporte de su producto. Sólo están interesados ​​en un rendimiento mínimo en el sistema operativo Android 4.4.4, lo que significa que nos vemos obligados a utilizar el kernel 3.4 con parches de Android. Afortunadamente, hay entusiastas que ensamblan distribuciones, editan el kernel, escriben código para soportar placas en el kernel principal, es decir. De hecho, hacen el trabajo para el fabricante, lo que hace que esta basura funcione aceptablemente. Para mis propósitos, elegí la distribución Armbian; se actualiza frecuente y convenientemente (los nuevos kernels se instalan directamente a través del administrador de paquetes, y no copiando archivos a una partición especial, como suele ser el caso con Allwinner), y es compatible con la mayoría periféricos, a diferencia de los demás.

Router

Para no cargar el débil procesador del enrutador con cifrado y acelerar nuestra conexión VPN, podemos transferir esta tarea a un procesador Orange Pi más potente conectándolo al enrutador de alguna manera. Me viene a la mente la conexión a través de Ethernet o USB; ambos estándares son compatibles con ambos dispositivos, pero no quería ocupar los puertos existentes. Afortunadamente, hay una salida.

El chip concentrador USB GL850G, que se utiliza en el enrutador, admite 4 puertos USB, dos de los cuales no están cableados. No está claro por qué el fabricante no los desoldó, supongo, para evitar que los usuarios conecten 4 dispositivos con un alto consumo de corriente (por ejemplo, discos duros) a la vez. La fuente de alimentación estándar del enrutador no está diseñada para tal carga. En cualquier caso, esto es una ventaja para nosotros.
Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador
Para obtener otro puerto USB, sólo necesitas soldar dos cables a los pines 8(D-) y 9(D+) o 11(D-) y 12(D+).

Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador

Sin embargo, no basta con conectar dos dispositivos USB y esperar que todo funcione por sí solo, como sucedería con Ethernet. En primer lugar, debemos hacer que uno de ellos funcione en modo Cliente USB, y no en modo Host USB, y en segundo lugar, debemos decidir cómo se detectarán los dispositivos entre sí. Existen muchos controladores para los llamados dispositivos USB (que llevan el nombre del subsistema del kernel de Linux), que le permiten emular varios tipos de dispositivos USB: adaptador de red, tarjeta de audio, teclado y mouse, unidad flash, cámara, consola a través de una serie. puerto. Dado que nuestro dispositivo funcionará con la red, lo mejor para nosotros es emular un adaptador Ethernet.

Hay tres estándares Ethernet sobre USB:

  • NDIS remoto (RNDIS). Un estándar obsoleto de Microsoft, utilizado principalmente en Windows XP.
  • Modelo de control Ethernet (ECM). Un estándar simple que encapsula tramas Ethernet dentro de paquetes USB. Excelente para módems cableados con conexión USB, donde es conveniente transferir cuadros sin procesar, pero debido a su simplicidad y limitaciones del bus USB, no es muy rápido.
  • Modelo de emulación Ethernet (EEM). Un protocolo más inteligente que tiene en cuenta las limitaciones de USB y agrega de manera óptima varios fotogramas en uno, aumentando así el rendimiento.
  • Modelo de control de red (NCM). El protocolo más nuevo. Tiene los beneficios de EEM y optimiza aún más la experiencia del autobús.

Para conseguir que cualquiera de estos protocolos funcione en nuestra placa, como siempre, tendremos que encontrarnos con algunas dificultades. Debido al hecho de que Allwinner solo está interesado en las partes del kernel de Android, normalmente solo funciona Android Gadget: el código que implementa la comunicación con adb, exporta el dispositivo a través del protocolo MTP y emula una unidad flash en dispositivos Android. El propio Android Gadget también es compatible con el protocolo RNDIS, pero no funciona en el kernel de Allwinner. Si intentas compilar el kernel con cualquier otro dispositivo USB, el dispositivo simplemente no aparecerá en el sistema, hagas lo que hagas.
Para resolver el problema de manera amigable, debe encontrar el lugar donde se inicializa el controlador USB en el código del dispositivo Android android.c modificado por los desarrolladores, pero también existe una solución alternativa para realizar al menos una emulación de Ethernet a través de Trabajo 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 fuerza el modo cliente USB, lo que le permite utilizar dispositivos USB normales de Linux.
Ahora deberías reconstruir el kernel con este parche y el gadget necesario. Elegí EEM porque... Según los resultados de las pruebas, resultó ser más productivo que NCM.
El equipo de Armbian proporciona sistema de montaje muy sencillo y cómodo para todas las placas compatibles en la distribución. Simplemente descárgalo, pon nuestro parche. userpatches/kernel/sun8i-default/otg.patch, edita un poco compile.sh y seleccione el gadget requerido:

Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador

El kernel se compilará en un paquete deb, que no será difícil de instalar en la placa mediante dpkg.
Ya solo queda conectar la placa vía USB y configurar nuestro nuevo adaptador de red para recibir una dirección vía DHCP. Para hacer esto necesitas agregar algo como lo siguiente 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'

Es mejor configurar la dirección MAC manualmente, porque... será aleatorio cada vez que se reinicie el dispositivo, lo cual es inconveniente y problemático.
Conectamos el cable MicroUSB al conector OTG, conectamos la alimentación del enrutador (se puede suministrar a los pines 2 y 3 del peine, y no solo al conector de alimentación).

Ya solo queda configurar el enrutador. Basta con instalar el paquete con el controlador EEM y agregar nuestro nuevo dispositivo de red USB al puente de la zona del firewall local:

opkg install kmod-usb-net-cdc-eem

Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador
Para enrutar todo el tráfico al túnel VPN, debe agregar una regla SNAT a la dirección IP de la placa en el lado del enrutador o distribuir la dirección de la placa como dirección de puerta de enlace a través de dnsmasq. Esto último se hace agregando la siguiente línea a /etc/dnsmasq.conf:

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

donde 192.168.1.100 — Dirección IP de su placa. ¡No olvide ingresar la dirección del enrutador en la configuración de red en el tablero!

Se utilizó una esponja de melamina para aislar los contactos de la placa de los contactos del enrutador. Resultó algo como esto:
Acelere OpenVPN por $9.99* o integre Orange Pi One en su enrutador

Conclusión

La red vía USB funciona sorprendentemente rápido: 100-120 Mb/s, esperaba menos. OpenVPN pasa por unos 70 Mb/s de tráfico cifrado, lo que tampoco es mucho, pero sí suficiente para mis necesidades. La tapa del enrutador no cierra bien, dejando un pequeño espacio. Los estetas pueden quitar los conectores Ethernet y USB Host de la placa, lo que permitirá que la tapa se cierre por completo y aún quede algo de espacio.
Es mejor no participar en ese tipo de pornografía y comprar Turris Omnia.

Fuente: habr.com

Añadir un comentario