Cómo crear una VPN casera y no morir en el intento

Home  >>  Apuntes SMR  >>  Cómo crear una VPN casera y no morir en el intento

Cómo crear una VPN casera y no morir en el intento

Aquellos que sean entendidos en el tema, sabrán que para crear una red VPN se requiere de crear pares de claves, configurar la criptografía, utilizar el protocolo Diffie-Hellman… Lo que puede llegar a suponer un suicidio para los pocos entendidos en el tema, o para aquellos que les encantan las redes pero aborrecen la criptografía como es mi caso.

En esta entrada comentaremos como crear una VPN sin tener conocimiento técnicos. Utilizaremos un programa diseñado para la Raspberry Pi, pero puede ser usado en cualquier servidor con Debian o derivados.

Necesidades previas

Para poder tener nuestro propio VPN doméstico, vamos a necesitar unos pocos requisitos. Primero de todo, necesitamos un servidor. Esto puede ser cualquier equipo que tengamos en casa, o una Raspberry Pi mejor, y siempre va a tener que estar encendido y conectado a Internet.

Segundo, necesitaremos una redirección de puertos en nuestro router. Cada uno es distinto, a sí que para conseguirlo se tendrán que realizar pasos distintos en cada caso. Puedes encontrar más información a través del siguiente enlace.
También es recomendable contar con una reserva de IP por DHCP en nuestro router, estos pasos no los vamos a realizar en esta entrada.

Por último, sería idóneo contar con un DDNS para evitar problemas cuando nuestra IP pública cambie.

Instalando el programa

PiVPN es un conjunto de scripts escritos en bash para automatizar la instalación de un servidor VPN y facilitar enormemente la gestión de los certificados. Se puede instalar tanto en un sistema tanto GUI como CLI pero todo el proceso lo realizaremos en terminal para poder hacerlo en ambas opciones.

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

Este comando automáticamente actualizará los repositorios, descargará el script y lo ejecutará.

Configuración de la VPN

Primero preguntará si deseas transformar tu IP en una IP estática, si no entiendes del tema lo recomendable es que se marque Sí. En mi opinión es mejor hacer una reserva DHCP desde el router, el propio programa también lo recomienda, pero esto requiere conocimientos más técnicos.

El segundo punto pregunta qué usuario gestionará la VPN, puede ser tu usuario o uno específico. Si únicamente tienes un usuario solo podrás seleccionar una opción.

OpenVPN o WireGuard

El siguiente paso fue incluido hace pocos meses, por lo que algunas entradas de otros lugares pueden estar desactualizadas. El script preguntará si se desea instalar OpenVPN o WireGuard.

OpenVPN es el servidor VPN por excelencia, con grandes posibilidades de personalización y un gran soporte de la comunidad. WireGuard es relativamente nuevo, pero dispone de mejoras en los certificados y la velocidad, también gasta menos batería si se conecta un teléfono.

En este artículo usaremos WireGuard para la configuración. Seleccionaremos Sí en la siguiente opción para confirmar que deseamos usar este programa.

https://www.wundertech.net/wp-content/uploads/2020/08/WG5.jpg.webp

A continuación se permitirá editar el puerto desde el que se ejecutará WireGuard, a no ser que se tengan buenas razones para cambiarlo, es mejor dejarlo en la opción predeterminada.

Ahora, te pedirá que selecciones un proveedor DNS para los clientes de la VPN. Si tienes instalado Pi-hole en la máquina, lo detectará y te preguntará si deseas usarlo como DNS. En caso de no saber qué es un DNS puedes seleccionar cualquier opción excepto «Custom», yo tengo preferencia por Google.

A continuación preguntará si usar la IP pública o un DNS público. Entender esto requiere un poco de conocimiento. Tu IP pública puede cambiar según el operador, así que es mejor contar con un DDNS o DNS Dinámico.

Después, recomendará activar las actualizaciones desatendidas. Esto significa que el sistema se actualizará automáticamente, un gran peso que quitarse de encima, pero tendrás que reiniciarlo manualmente periódicamente para que algunas se apliquen.

Creando clientes

Oficialmente tenemos ya un servidor VPN, enhorabuena, ahora toca añadir a los clientes a la red. Por suerte, PiVPN también gestiona eso. Lo único que tenemos que hacer es ejecutar el siguiente comando:

~$ pivpn add

Te solicitará un nombre para el archivo, lo ideal es que sea un nombre identificativo tipo «laptop» o «telefono1». Se generará un archivo .conf con el nombre que hayamos puesto que tendremos que trasladar a los clientes.

Es importante crear un fichero para cada cliente. De no hacerlo así, no funcionará la VPN porque solo permitirá que acceda un dispositivo.

Esos archivos se encuentran en el directorio personal del usuario que hemos marcado al principio. Puedes pasarte estos archivos de cualquier forma dependiendo de como tengas el servidor. Si te conectas por SSH también puedes descargarte los archivos con el comando scp.

Instalando VPN en los clientes

Ya tenemos la VPN creada y los archivos de configuración de los clientes listos para ser instalados en los respectivos equipos. Ahora solo hace falta instalar el cliente VPN en cada equipo e introducir en él archivo a cada uno de ellos.

WireGuard en Windows

La instalación en Windows es muy sencilla, como cualquier otro programa. Tendremos que acceder a este enlace, descargar el .exe e instalar el programa.

Tras ejecutarlo, se abrirá una ventana como la que se muestra abajo, clicamos en «Introducir desde archivo» y seleccionamos el fichero de configuración del equipo. Así de simple.

WireGuard en teléfonos

Para utilizar WireGuard en un teléfono también se requiere una aplicación. Aviso además que es posible que el consumo de batería aumente mientras la aplicación esté activada, aunque en mi caso a penas lo he notado.

WireGuard en Android: https://play.google.com/store/apps/details?id=com.wireguard.android

WireGuard en iOS: https://apps.apple.com/us/app/wireguard/id1441195209?ls=1

Dentro del servidor VPN podemos generar un códig QR para añadir el teléfono a la VPN sin necesidad de ningún archivo. Para esto ejecutamos el siguiente comando

~$ pivpn -qr [PROFILE_NAME]

Siendo [PROFILE_NAME] el nombre del cliente del que queremos el QR.

Dentro de la aplicación tendremos un símbolo + desde el que podremos seleccionar que queremos escanear un QR.

WireGuard en Linux

Como bien sabemos, la forma de instalar un parquete en Linux es totalmente distinta dependiendo de su distribución. En este enlace podrás encontrar la forma de instalarla en la tuya.

Tras la instalación, solo tienes que mover el archivo de instalación desde donde lo tengas hasta /etc/wireguard. Por ejemplo:

~$ mv archivo.conf /etc/wireguard/wg0.conf

Tras esto, solo hace falta un comando para encenderlo:

~$ wg-quick up wg0

O apagarlo:

~$ mv archivo.conf wg-quick down wg0

Especial agradecimiento a Frank, del blog WunderTech. Las imágenes han sido obtenidas de su blog, donde se explica con mayor detalle algunas configuraciones. Os invito a echarle un vistazo:

https://www.wundertech.net/setup-wireguard-on-a-raspberry-pi-vpn-setup-tutorial/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *