Para los que no lo conocéis, WireGuard se trata de una una VPN mucho más moderna que OpenVPN, pero lo más importante es que además es muy sencilla de configurar y que su rendimiento está a años luz del resto de VPNs. En las versiones nuevas (5.x) del núcleo de Linux ya contiene el módulo para que funcione, por lo que su instalación es muy sencilla, pero para versiones anteriores se necesita añadir dicho módulo al núcleo.
Hace un tiempo estuve viendo información sobre si se podía implementar en las distribuciones de Enigma2 para utilizarla en vez de OpenVPN o ZeroTier, pero no encontré ninguna versión que lo hubiese compilado.
Hace poco vi que OpenATV, en la versión 6.4, había incluido los paquetes relacionados en sus feed, por lo que decidí probar si funcionaba correctamente y, salvo algún cambio que hay que realizar, funcionaba sin más problema.
Estas navidades saqué un poco de tiempo para ver si podía hacerlo funcionar con OpenSPA y he conseguido (de una forma muy poco ortodoxa) que funcione, por lo que mi petición es para ver si se podría incluir los paquetes necesarios dentro de OpenSPA para poder utilizarla como servidor (o cliente) de VPN.
La forma en la que he logrado que funcione en OpenSPA ha sido añadiendo los feeds de OpenATV a los de OpenSPA e instalando los siguientes paquetes:
Tras instalar los paquetes anteriores tan sólo es necesario crear un link que necesita (ln -s /proc/self/fd /dev/fd), crear las claves privadas y públicas así como el fichero de configuración.
Para que veáis la diferencia de rendimiento entre las distintas opciones de VPN que podemos instalar en nuestros decos, he lanzado unas pruebas con iPerf entre el deco (Octagon SF8008) y una raspberrypi 4 conectadas mediante ethernet a un switch gigabit para ver la diferencia de rendimiento:
Como podéis ver, WireGuard es 10 veces más rápido que ZeroTier y unas 7 veces más rápido que OpenVPN.
Si necesitáis alguna otra información, tan sólo teneís que pedirla.
Un saludo
Hace un tiempo estuve viendo información sobre si se podía implementar en las distribuciones de Enigma2 para utilizarla en vez de OpenVPN o ZeroTier, pero no encontré ninguna versión que lo hubiese compilado.
Hace poco vi que OpenATV, en la versión 6.4, había incluido los paquetes relacionados en sus feed, por lo que decidí probar si funcionaba correctamente y, salvo algún cambio que hay que realizar, funcionaba sin más problema.
Estas navidades saqué un poco de tiempo para ver si podía hacerlo funcionar con OpenSPA y he conseguido (de una forma muy poco ortodoxa) que funcione, por lo que mi petición es para ver si se podría incluir los paquetes necesarios dentro de OpenSPA para poder utilizarla como servidor (o cliente) de VPN.
La forma en la que he logrado que funcione en OpenSPA ha sido añadiendo los feeds de OpenATV a los de OpenSPA e instalando los siguientes paquetes:
- kernel-module-wireguard
- kernel-module-wireguard-4.4.35
- kernel-module-udp-tunnel-4.4.35
- kernel-module-ip6-udp-tunnel-4.4.35
- wireguard-tools
- wireguard-tools-bash-completion
Tras instalar los paquetes anteriores tan sólo es necesario crear un link que necesita (ln -s /proc/self/fd /dev/fd), crear las claves privadas y públicas así como el fichero de configuración.
Para que veáis la diferencia de rendimiento entre las distintas opciones de VPN que podemos instalar en nuestros decos, he lanzado unas pruebas con iPerf entre el deco (Octagon SF8008) y una raspberrypi 4 conectadas mediante ethernet a un switch gigabit para ver la diferencia de rendimiento:
ZeroTier
Envío: 59.5 Mbits/sec
Recepción: 59.2 Mbits/sec
OpenVPN
Envío: 79.4 Mbits/sec
Recepción: 79.3 Mbits/sec
Wireguard
Envío: 572 Mbits/sec
Recepción: 571 Mbits/sec
Sin VPN
Envío: 938 Mbits/sec
Recepción: 937 Mbits/sec
# OpenVPN #
root@sf8008:~# iperf3 -c 10.8.8.6 -i 5 -t 30
Connecting to host 10.8.8.6, port 5201
[ 5] local 10.8.8.1 port 47676 connected to 10.8.8.6 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 46.9 MBytes 78.6 Mbits/sec 29 89.3 KBytes
[ 5] 5.00-10.00 sec 48.3 MBytes 81.0 Mbits/sec 18 98.5 KBytes
[ 5] 10.00-15.00 sec 48.3 MBytes 81.0 Mbits/sec 25 109 KBytes
[ 5] 15.00-20.00 sec 47.3 MBytes 79.4 Mbits/sec 17 93.3 KBytes
[ 5] 20.00-25.00 sec 46.3 MBytes 77.7 Mbits/sec 21 110 KBytes
[ 5] 25.00-30.00 sec 47.0 MBytes 78.8 Mbits/sec 21 95.9 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 284 MBytes 79.4 Mbits/sec 131 sender
[ 5] 0.00-30.04 sec 284 MBytes 79.3 Mbits/sec receiver
iperf Done.
# ZeroTier #
root@sf8008:~# iperf3 -c 172.22.15.48 -i 5 -t 30
Connecting to host 172.22.15.48, port 5201
[ 5] local 172.22.15.37 port 39916 connected to 172.22.15.48 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 32.6 MBytes 54.6 Mbits/sec 12 145 KBytes
[ 5] 5.00-10.00 sec 30.6 MBytes 51.4 Mbits/sec 12 110 KBytes
[ 5] 10.00-15.00 sec 30.6 MBytes 51.3 Mbits/sec 11 131 KBytes
[ 5] 15.00-20.00 sec 30.6 MBytes 51.3 Mbits/sec 13 142 KBytes
[ 5] 20.00-25.00 sec 41.5 MBytes 69.7 Mbits/sec 5 319 KBytes
[ 5] 25.00-30.00 sec 47.1 MBytes 79.0 Mbits/sec 0 488 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 213 MBytes 59.5 Mbits/sec 53 sender
[ 5] 0.00-30.07 sec 212 MBytes 59.2 Mbits/sec receiver
iperf Done.
# Wireguard #
root@sf8008:~# iperf3 -c 10.9.0.2 -i 5 -t 30
Connecting to host 10.9.0.2, port 5201
[ 5] local 10.9.0.1 port 52368 connected to 10.9.0.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 339 MBytes 569 Mbits/sec 76 403 KBytes
[ 5] 5.00-10.00 sec 340 MBytes 570 Mbits/sec 30 413 KBytes
[ 5] 10.00-15.00 sec 342 MBytes 574 Mbits/sec 16 574 KBytes
[ 5] 15.00-20.00 sec 341 MBytes 573 Mbits/sec 19 554 KBytes
[ 5] 20.00-25.00 sec 342 MBytes 574 Mbits/sec 32 557 KBytes
[ 5] 25.00-30.00 sec 340 MBytes 570 Mbits/sec 34 477 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 2.00 GBytes 572 Mbits/sec 207 sender
[ 5] 0.00-30.03 sec 2.00 GBytes 571 Mbits/sec receiver
iperf Done.
# Sin VPN #
root@sf8008:~# iperf3 -c 192.168.0.6 -i 5 -t 30
Connecting to host 192.168.0.6, port 5201
[ 5] local 192.168.0.7 port 33216 connected to 192.168.0.6 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 561 MBytes 940 Mbits/sec 18 185 KBytes
[ 5] 5.00-10.00 sec 560 MBytes 940 Mbits/sec 27 230 KBytes
[ 5] 10.00-15.00 sec 558 MBytes 937 Mbits/sec 18 201 KBytes
[ 5] 15.00-20.00 sec 558 MBytes 935 Mbits/sec 15 153 KBytes
[ 5] 20.00-25.00 sec 558 MBytes 935 Mbits/sec 0 308 KBytes
[ 5] 25.00-30.00 sec 561 MBytes 940 Mbits/sec 15 239 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 3.28 GBytes 938 Mbits/sec 93 sender
[ 5] 0.00-30.03 sec 3.28 GBytes 937 Mbits/sec receiver
root@sf8008:~# iperf3 -c 10.8.8.6 -i 5 -t 30
Connecting to host 10.8.8.6, port 5201
[ 5] local 10.8.8.1 port 47676 connected to 10.8.8.6 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 46.9 MBytes 78.6 Mbits/sec 29 89.3 KBytes
[ 5] 5.00-10.00 sec 48.3 MBytes 81.0 Mbits/sec 18 98.5 KBytes
[ 5] 10.00-15.00 sec 48.3 MBytes 81.0 Mbits/sec 25 109 KBytes
[ 5] 15.00-20.00 sec 47.3 MBytes 79.4 Mbits/sec 17 93.3 KBytes
[ 5] 20.00-25.00 sec 46.3 MBytes 77.7 Mbits/sec 21 110 KBytes
[ 5] 25.00-30.00 sec 47.0 MBytes 78.8 Mbits/sec 21 95.9 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 284 MBytes 79.4 Mbits/sec 131 sender
[ 5] 0.00-30.04 sec 284 MBytes 79.3 Mbits/sec receiver
iperf Done.
# ZeroTier #
root@sf8008:~# iperf3 -c 172.22.15.48 -i 5 -t 30
Connecting to host 172.22.15.48, port 5201
[ 5] local 172.22.15.37 port 39916 connected to 172.22.15.48 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 32.6 MBytes 54.6 Mbits/sec 12 145 KBytes
[ 5] 5.00-10.00 sec 30.6 MBytes 51.4 Mbits/sec 12 110 KBytes
[ 5] 10.00-15.00 sec 30.6 MBytes 51.3 Mbits/sec 11 131 KBytes
[ 5] 15.00-20.00 sec 30.6 MBytes 51.3 Mbits/sec 13 142 KBytes
[ 5] 20.00-25.00 sec 41.5 MBytes 69.7 Mbits/sec 5 319 KBytes
[ 5] 25.00-30.00 sec 47.1 MBytes 79.0 Mbits/sec 0 488 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 213 MBytes 59.5 Mbits/sec 53 sender
[ 5] 0.00-30.07 sec 212 MBytes 59.2 Mbits/sec receiver
iperf Done.
# Wireguard #
root@sf8008:~# iperf3 -c 10.9.0.2 -i 5 -t 30
Connecting to host 10.9.0.2, port 5201
[ 5] local 10.9.0.1 port 52368 connected to 10.9.0.2 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 339 MBytes 569 Mbits/sec 76 403 KBytes
[ 5] 5.00-10.00 sec 340 MBytes 570 Mbits/sec 30 413 KBytes
[ 5] 10.00-15.00 sec 342 MBytes 574 Mbits/sec 16 574 KBytes
[ 5] 15.00-20.00 sec 341 MBytes 573 Mbits/sec 19 554 KBytes
[ 5] 20.00-25.00 sec 342 MBytes 574 Mbits/sec 32 557 KBytes
[ 5] 25.00-30.00 sec 340 MBytes 570 Mbits/sec 34 477 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 2.00 GBytes 572 Mbits/sec 207 sender
[ 5] 0.00-30.03 sec 2.00 GBytes 571 Mbits/sec receiver
iperf Done.
# Sin VPN #
root@sf8008:~# iperf3 -c 192.168.0.6 -i 5 -t 30
Connecting to host 192.168.0.6, port 5201
[ 5] local 192.168.0.7 port 33216 connected to 192.168.0.6 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-5.00 sec 561 MBytes 940 Mbits/sec 18 185 KBytes
[ 5] 5.00-10.00 sec 560 MBytes 940 Mbits/sec 27 230 KBytes
[ 5] 10.00-15.00 sec 558 MBytes 937 Mbits/sec 18 201 KBytes
[ 5] 15.00-20.00 sec 558 MBytes 935 Mbits/sec 15 153 KBytes
[ 5] 20.00-25.00 sec 558 MBytes 935 Mbits/sec 0 308 KBytes
[ 5] 25.00-30.00 sec 561 MBytes 940 Mbits/sec 15 239 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 3.28 GBytes 938 Mbits/sec 93 sender
[ 5] 0.00-30.03 sec 3.28 GBytes 937 Mbits/sec receiver
Como podéis ver, WireGuard es 10 veces más rápido que ZeroTier y unas 7 veces más rápido que OpenVPN.
Si necesitáis alguna otra información, tan sólo teneís que pedirla.
Un saludo