Para seguir el proceso de migración de mi Home Lab desde una pequeña Raspberry Pi 4 a un OptiPlex 7050 ejecutando Proxmox ahora le toca el turno a Wireguard, una VPN extremadamente simple pero rápida y moderna que utiliza criptografía de última generación.
En este ocasion, en lugar de realizar la instalación de Wireguard en Docker, se utilizará un contenedor ligero LXC de Proxmox con TurnKey Core. El procedimiento para crear este LXC es el mismo que usé para ejecutar Docker en Proxmox LXC.
Características del LXC
Esta VPN con Wireguard se ejecutará sobre un LXC con las siguientes características:
- LXC no privilegiado, con nesting y sin
keyctl
- CT ID: 303
- Hostname: wireguard
- Password + SSH key file
- Disco: 2GB en
local_lvm
- CPU: 1 core
- Memoria: 512MB
- IP estática: 192.168.1.83/24
- Gateway: 192.168.1.1
- Dominio: home
- DNS: 192.168.1.81 192.168.1.82
A continuación se pone en marcha el LXC desde la CLI de Proxmox y se procede a configurarlo de la misma manera que ya expliqué en el artículo sobre LXC y Docker:
pct start 303
Acceder al LXC
Se puede acceder al LXC utilizando la opción Console
de la GUI o, mucho mejor, mediante SSH gracias a la configuración de las claves públicas que se hizo en el mismo:
ssh root@192.168.1.83
A continuación se realiza la configuración habitual:
- First Boot Configuration:
Skip
/Skip
/Install
- Advanced Menu:
Quit
- Zona horaria Europe/Madrid con
dpkg-reconfigure tzdata
- Actualizar con
apt update && apt upgrade -y
- Reiniciar con
reboot
Instalación de PiVPN
La instalación de Wireguard usando PiVPN es muy sencilla usando el script install.sh
:
cd ~
wget -O install.sh https://install.pivpn.io
bash install.sh
Si se cumplen los requisitos para instalar Wireguard, se ejecutará el asistente PiVPN Automated Installer mediante el cual se proporcionará la información necesaria para la instalación:
- Force routing to block IPv6 leak: No
- Local user:
wireguard
- Password:
********
- Choose VPN: Wireguard
Al finalizar la instalación, si no hay ningún problema, continuarán las preguntas del asistente:
- Default Wireguard port: 51821
- DNS Provider:
Custom
- Upstream DNS providers: 192.168.1.81,192.168.1.82
- Public IP or DNS:
DNS Entry
- Public DNS: wireguard.myhome.com
- Unattended upgrades: Yes
- Reboot: Yes
Nota: Se puede utilizar el comando pivpn
para añadir clientes, depurar problemas, generar códigos QR, etc. Pero antes es necesario modificar el fichero /etc/pivpn/wireguard/setupVars.conf
para cambiar las redes que se enrutarán a través de la VPN.
# Originales
ALLOWED_IPS="0.0.0.0/0"
# Nuevas
ALLOWED_IPS="192.168.1.0/24"
Añadir clientes
Para añadir un cliente se utiliza el comando pivpn -a -n client1
:
root@wireguard ~# pivpn -a -n client1
::: Client Keys generated
::: Client config generated
::: Updated server config
::: WireGuard reloaded
======================================================================
::: Done! manel.conf successfully created!
::: client1.conf was copied to /home/wireguard/configs for easytransfer.
::: Please use this profile only on one device and create additional
::: profiles for other devices. You can also use pivpn -qr
::: to generate a QR Code you can scan with the mobile app.
======================================================================
A continuación se usa el comando pivpn -qrcode client1
para mostrar el código QR que permite añadir el perfil en un cliente móvil de forma fácil:
Referencias
- Getting PiVPN to run on Proxmox LXC container
- Set up Wireguard using PiVPN inside LXC
- OpenVPN in LXC @ Proxmox Wiki
- WireGuard VPN: Instalación y configuración de la mejor VPN @ RedesZone.net
- WGDashboard, usada por Proxmox VE Helper Scripts
- Wg Gen Web, para ejecutar en Docker
- Wireguard-UI, interfaz realizada en Go
- How to monitor who’s connected to your Wireguard VPN
- WireGuard-Manager