¿QUÉ ES OPENVPN?
OpenVPN es tanto un protocolo VPN como un software que utiliza técnicas VPN para asegurar conexiones punto a punto y de sitio a sitio. Es un software de código abierto que ofrece diferentes soluciones para establecer, mantener y personalizar redes privadas virtuales de forma gratuita. OpenVPN implementa conexiones de capa 2 o 3 y utiliza los estándares de la industria SSL/TLS para cifrar y combinar todas las características mencionadas anteriormente en las otras soluciones VPN.
OpenVPN utiliza el protocolo TLS/SSL para el intercambio de claves y puede atravesar cortafuegos y traductores de direcciones de red (NAT). Es uno de los protocolos VPN más seguros debido a que es actualizado constantemente por programadores de todo el mundo.
OpenVPN es altamente configurable y seguro.
OpenVPN es un software y un protocolo VPN
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Una Raspberry Pi con Debian/Raspbian o similar
- Conexión a Internet
2.- ESQUEMA DE RED
A continuación, os muestro el esquema de red que queremos hacer:

3.- PIVPN (OPENVPN / WIREGUARD)
PiVPN es un conjunto de scripts de shell desarrollados para convertir fácilmente una Raspberry Pi™ en un servidor VPN utilizando dos protocolos gratuitos y de código abierto:
La misión principal de este script es permitir que un usuario tenga una VPN lo más económica posible en casa sin necesidad de ser un experto técnico, de ahí el diseño de PiVPN para funcionar en una Raspberry Pi con un instalador de un solo comando seguido de una gestión sencilla de la VPN con el comando 'pivpn'.
Dicho esto...
PiVPN es la forma más sencilla y rápida de instalar y configurar un servidor OpenVPN o Wireguard extremadamente seguro en una Raspberry Pi. No se necesitan tutoriales complejos, ya que PiVPN lo hace todo por nosotros.
Web: https://www.pivpn.io/
4.- INSTALAR Y CONFIGURAR PIVPN
Para configurar el servidor de VPN lo haremos gracias a los scripts de PiVPN. Para ello ejecutaremos el siguiente comando:
raul@raspberrypi:~$ sudo curl -L https://install.pivpn.io | bash
Una vez ejecutado el comando anterior y tras instalar de forma automática todos los requisitos, se mostrará en pantalla el asistente de configuración de PiVPN:
Comenzar la instalación PiVPN
La siguiente pantalla nos avisa que al ser un servidor de VPN y para que no tengamos problemas de red, se recomienda que el servidor tenga una IP Estática:
Se recomienda IP Estática
La pantalla siguiente avisa que no estamos utilizando IPv6. Como (en mi caso) no estoy utilizando IPv6, ni quiero, marcaremos la opción de "No":
Routing IPv6
La siguiente pantalla marcaremos la opción de "No" ya que la Raspberry Pi la tenemos trabajando con una IP estática:
Reserva de DHCP
La siguiente pantalla muestra la confirmación de red (dirección IP y Gateway). Si estamos confirme, marcaremos "Yes":
Configuración de red
Ahora saldrá un aviso de que podemos tener un conflicto de IPs si configuramos mal nuestro Router o la IP del servidor:
Aviso conflicto IPs
A continuación, tendremos que seleccionar el usuario que va a manejar las configuraciones de la VPN:
Aviso de usuarios
En la lista siguiente podremos ver todos los usuarios en el sistema. En mi caso, el usuario que va a manejar toda la configuración del servidor VPN es "raul", vosotros seleccionad el vuestro:
Seleccionar el usuario para gestionar VPNs
En el siguiente paso tendremos que seleccionar que software de VPN queremos utilizar. En mi caso, Wireguard me dio algún problema, por lo que he optado por utilizar OpenVPN:
Software para la VPN
En el siguiente paso seleccionaremos por defecto "No" si no queremos personalizar la configuración de OpenVPN por defecto:
Instalación por defecto
A continuación, seleccionaremos el puerto donde queremos que escuche" el servidor VPN. Por defecto, el puerto es el 1194 pero yo recomiendo cambiarlo por otro que no esté en uso y similar al original. Por ejemplo, podemos utilizar el puerto 2194:
Puerto 2194
Ahora confirmamos el puerto seleccionado:
Confirmar puerto OpenVPN
Cuando nos conectamos a la VPN, podemos asignar a los dispositivos unos servidores predefinidos de DNS o nuestros propios servidores. Como (en mi caso) yo no tengo servidores DNS, utilizaré los de por defecto de Google:
Servidores DNS
Para conectar desde Internet a la VPN, es recomendado tener una IP pública fija, pero si no queremos pagar por ello, podemos usar un servicio de DNS Dinámico y crear un FQDN que apunte a nuestro servidor:
Seleccionar un FQDN
A continuación, metemos nuestro FQDN como, por ejemplo, servidor.ddns.net:
FQDN
Si está correcto el FQDN, confirmamos y seguimos para adelante:
Confirmar FQDN
A continuación, se van a generar las llaves de cifrado de las conexiones:
Generar llaves de cifrado
Aceptamos la siguiente pantalla:
Actualizaciones
Activamos las actualizaciones desatendidas de seguridad:
Actualizaciones de seguridad
Ya casi hemos terminado. Para manejar la VPN debemos hacer uso del comando "pivpn" en consola:
Instalación completa
A continuación, reiniciamos el servidor para completar la instalación:
Reiniciar
Reiniciando el servidor...
Reiniciando...
5.- NAT
Para poder acceder desde Internet al servidor de VPN dentro de la red doméstica, debemos hacer NAT en el Router de Internet. Esto significa, abrir un puerto al exterior y redirigir las peticiones a la IP del servidor VPN. Como esto depende del modelo de Router, no voy a comentar nada, si buscáis por vuestro modelo y "NAT" en Google os saldrán muchos tutoriales.
Básicamente debemos acceder al router e ir a NAT y decirle que: todo lo que llegue al puerto 2194 lo reenvíe a la 192.168.1.2:2194 que corresponde con nuestro servidor de OpenVPN.
6.- PROBAR LA VPN
Para probar la VPN debemos acceder desde fuera de nuestra red, por ejemplo, desde otra conexión en otro domicilio o incluso con una conexión de móvil 3G/4G, debemos bajarnos el cliente de VPN y configurarlo con los datos que hemos configurado en nuestro servidor. Una vez conectados, podremos acceder a todo lo que haya dentro de nuestra red local. En la imagen siguiente se ve como estoy conectado desde mi teléfono móvil por 4G a la red local utilizando IPs locales de tipo 192.168.1.x:
Conectado a la VPN
ENJOY!