Raspberry Pi VPN

Vamos a crear un servidor VPN en una Raspberry Pi gracias al proyecto Pi VPN, que usa el software openVPN, y por medio de un protocolo personalizado, hace uso de SSL/TLS para intercambios de claves.

 

 

¿Qué es una VPN?

 

Una VPN es una red privada virtual que nos permite establecer un túnel entre nuestra red y otra. nos permite interconectar redes que se encuentran geográficamente separadas.
Para que funciona una VPN hace falta (al menos) un servidor y un cliente VPN que se conectará a ese servidor a través de Internet.
Puede utilizar diversos protocolos entre ellos podemos encontrar IPSEC (el tradicional), PPTP, SSL

Y el software OpenVPN, que utiliza sobre todo los protocolos OpenSSL y TLS, permite configurar una VPN de una forma muy sencilla con una Raspberry Pi.

 

Enlace a Pi VPN Project  

 

 

 

Comenzando: Crear una VPN en Raspberry Pi, con PiVPN

 
Instalamos pivpn en nuestra raspberry con:

curl -L https://install.pivpn.io | bash

 

 
 
Es necesario que el sistema se encuentre actualizado, así que si no hemos lanzado un

apt-get update

y un

apt-get upgrade

Ptimero se realizará la actualización  del sistema (previa a la instalación de pivpn):


 

 

Comienza la instalación y configuración de PIVPN (This installer will transform your Raspberry Pi into an OpenVPN server!)


 

 

Pivpn nos avisa de que es necesaria una IP estática en nuestro servidor OpenVPN (nuestra Raspberry):

Static IP Needed

The PiVPN is a SERVER so it needs a STATIC IP ADDRESS to function properly.

In the next section, you can choose to use your current network settings (DHCP) or to manually edit them.


 

 

Ahora hemos de elegir una Interfaz de red:

Choose an Interface


 

 

Confirmación de nuestra interfaz/dirección de red y puerta de enlace

Do you want to use your current network settings as a static address?


 

 

Aviso de posible conflicto si el router asigna la misma IP

It is possible your router could still try to assign this IP to a device, which would cause a conflict.


 

 

Selección de usuario local con el que utilizar la configuración del archivo .ovpn

Choose a local user that will hold your ovpn configurations.


 

 

Seleccionar el usuario, en este caso solo tenemos uno:


 

 

Aviso de actualizaciones desatendidas:

Since this server will have at least one port open to the internet, it is recommended you enable unattended-upgrades.

This feature will check daily for security package updates only and apply them when necessary.

It will NOT automatically reboot the server so to fully apply some updates you should periodically reboot.


 

 

Confirmación de si activamos o no las actualizaciones desatendidas

Do you want to enable unattended upgrades of security patches to this server?


 

 

Cloning into /etc/pivpn


 

 

Elegir protocolo TCP o UDP

Choose a protocol. Please only choose TCP if you know why you need TCP.


 

 

You can modify the default OpenVPN port.

Enter a new value or hit ‘Enter’ to retain the default


 

 

Confirmación de puerto para VPN elegido:

pivpn-confirmacion puerto VPN
 

 

Seleccionar nivel de encriptación

Choose your desired level of encryption (press space to select):\n This is an encryption key that will be generated on your system. The larger the key, the more time this will take. For most applications, it is recommended to use 2048 bits. If you are testing, you can use 1024 bits to speed things up, but do not use this for normal use! If you are paranoid about … things… then grab a cup of joe and pick 4096 bits.

“Use 1024-bit encryption (testing only)” OFF \ “2048” “

Use 2048-bit encryption (recommended level)” ON \ “4096” “

Use 4096-bit encryption (paranoid level)


 

 

The server key, Diffie-Hellman key, and HMAC key will now be generated.


 

 

PiVPN mejoras version 2.4

OpenVPN 2.4 brings support for stronger key exchange using Elliptic Curves and encrypted control channel, along with faster LZ4 compression. If your clients do run OpenVPN 2.4 or later you can enable these features, otherwise choose ‘No’ for best compatibility.

NOTE: Current mobile app, that is OpenVPN connect, is supported.


 

 

Generando clave

using Easy-RSA configuration from: ./vars

Generating DM parameters, 2048 bit long safe prime, generator:

This is going to take a long time


 

 

Seleccionar entre IP o nombre DNS

Will clients use a Public IP or DNS Name to connect to your server (press space to select)


 

 

Seleccionar proveedor DNS (seleccionamos Google por defecto):

Select the DNS Provider for your VPN Clients (press space to select). To use your own, select Custom.

 


 

 

Instalacion completa, falta generar perfil ovpn:

Now run ‘pivpn add’ to create the ovpn profiles. Run ‘pivpn help’ to see what else you can do! The install log is in /etc/pivpn.


 

 

Se nos pide reiniciar:

It is strongly recommended you reboot after installation. Would you like to reboot now?


 

 

Generar un perfil ovpn: pivpn add


 

 

perfil ovpn creado (tendremos que copiarlo del directorio donde se ha generado, y llevarlo al dispositivo cliente VPN):


 

 

Cargar perfil cliente ovpn:

Ahora podremos cargar ese archivo de perfil ovpn en un cliente VPN (que no se encuentre dentro de la misma red en la que se encuentra el server VPN).
 
En este caso vemos que estamos utilizando el cliente OpenVPN para Windows, cargamos el perfil ovpn, y conseguimos la conexión VPN a nuestra Raspberry Pi que actua como servidor VPN:
 

 

 

Usando el cliente OpenVPN para Android

 
Un uso muy interesante es poder conectarnos a nuestro servidor VPN desde nuestro teléfono móvil.

Y resulta que tenemos una aplicación genial, que es OpenVPN Connect para Android.

La aplicación para Android nos ofrece varias formas de conectarnos a una VPN:

  • Private Tunnel
  • Access Server
  • OVPN Profile

 
Seleccionamos la última opción, la del perfil OVPN y cargamos nuestro archivo de perfil ovpn generado previamente en nuestra Raspberry Pi.


 

 

Aquí podemos ver los perfiles cargados:


 

 

Seleccionamos el perfil deseado y conectamos a nuestra VPN:


 

 

Y en el archivo de Log (registro) podemos ver que la conexión se ha realizado corrrectamente.

Ya está!, hemos accedido a nuestro servidor VPN (la Raspberry Pi) y podremos acceder también al resto de equipos de nuestra LAN.

 

 

Más info: PiVPN: Configura una VPN casera en una Raspberry Pi utilizando OpenVPN

 

CONCLUSIÓN

 

Gracias a PiVPN y la Raspberry Pi hemos conseguido crear una VPN en un dispositivo ligero y económico como la Raspberry Pi, y podremos utilizar el túnel para acceder a la red LAN donde se encuentra nuestro servidor, accediendo por SSH, por HTTP a ciertos puertos y servicios ..


 
Una funcionalidad impresionante, y rápida de implementar gracias a PiVPN !