Instalar WireGuard VPN en Debian 12
Wireguard es un protocolo VPN de código abierto alternativo a IPSec, IKEv2 y OpenVPN. Wiruguard está diseñado para sistemas operativos Linux y Unix, se ejecuta en el espacio del kernel de Linux, lo que hace que Wireguard sea más rápido y fiable. Wireguard se utiliza para crear conexiones de túnel seguras entre dos ordenadores o más.
Wireguard pretende sustituir a protocolos VPN como IPSec, IKEv2 y OpenVPN. Wireguard es más ligero, más rápido, más fácil de configurar y más eficaz. Al mismo tiempo, Wiregurad no ha sacrificado el aspecto de seguridad del protocolo VPN. Wireguard admite criptografía moderna como el marco de protocolo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF y construcciones de confianza seguras.
Esta guía te mostrará cómo instalar Wireguard VPN en el servidor Debian 12 y configurar el cliente Wireguard en una máquina Linux.
Requisitos previos
Antes de empezar, asegúrate de que tienes estos requisitos:
- Un servidor Linux con Debian 12.
- Un usuario no root con privilegios sudo.
- Una máquina cliente – En este caso utilizando la distribución basada en Debian.
Preparar el sistema
Antes de instalar Wireguard, debes preparar tu servidor Debian realizando los siguientes cambios:
- Habilitar el reenvío de puertos mediante /etc/sysctl.conf
- Instalar y configurar UFW
Ahora vamos a empezar.
Activar el reenvío de puertos
Para activar el reenvío de puertos, debes activar el módulo del núcleo net.ipv4. ip_forward para IPv4 o net.ipv6.conf. all. forwarding para IPv6. Estos módulos del núcleo pueden activarse a través del archivo/etc/sysctl.conf.
Abre el archivo /etc/sysctl.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/sysctl.conf
Introduce la siguiente configuración para habilitar el reenvío de puertos tanto para IPv4 como para IPv6 (si es necesario).
# Port Forwarding for IPv4 net.ipv4.ip_forward=1 # Port forwarding for IPv6 net.ipv6.conf.all.forwarding=1
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora aplica los cambios mediante el siguiente comando sysctl.
sudo sysctl -p
Instalación de UFW
El cortafuegos por defecto en Debian es iptables, y ahora instalarás UFW. Utilizarás tanto UFW como iptables para el servidor Wirguard.
Ejecuta el siguiente comando apt para actualizar tu repositorio e instalar UFW en tu sistema Debian.
sudo apt update && sudo apt install ufw -y
A continuación, ejecuta el siguiente comando ufw para añadir el perfil de aplicación OpenSSH y habilitar UFW. Escribe y y pulsa ENTER para confirmar, y deberías obtener el mensaje «El cortafuegos está activo y habilitado al iniciar el sistema«.
sudo ufw allow OpenSSH sudo ufw enable
Por último, verifica el estado del UFW utilizando el comando que aparece a continuación.
sudo ufw status
Si se está ejecutando, deberías obtener la salida«Estado: activo». También verás que el perfil de la aplicación OpenSSH se ha añadido a UFW.
Instalación del servidor Wireguard
Después de configurar el servidor Debian, estás preparado para crear un Servidor VPN Wireguard en tu máquina Debian. Completa la siguiente tarea para conseguirlo:
- Instalación de Wireguard
- Generar la clave del servidor Wireguard
- Generar la clave del cliente Wireguard
- Configurar la interfaz Wireguard
- Configurar NAT para la interfaz Wireguard
Vamos a hacerlo
Instalar Wireguard
En primer lugar, instala el paquete wireguard en tu servidor Debian ejecutando el siguiente comando.
sudo apt install wireguard
Escribe y para proceder a la instalación.
Generar la clave del servidor Wireguard
Una vez instalado el paquete wireguard, la siguiente tarea es generar los certificados del servidor, lo que puede hacerse utilizando la herramienta de línea de comandos wg.
Ejecuta el siguiente comando para generar la clave privada del servidor wireguard en /etc/wireguard/server.key. A continuación, cambia el permiso de la clave privada del servidor a 0400, lo que significa que deshabilitarás el acceso de escritura al archivo.
wg genkey | sudo tee /etc/wireguard/server.key sudo chmod 0400 /etc/wireguard/server.key
A continuación, ejecuta el siguiente comando para generar la clave pública del servidor wireguard en /etc/wireguard/server.pub.
sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
Ahora que has generado la clave privada en /etc/wireguard/server.key y la clave pública en /etc/wireguard/server.pub para tu servidor wireguard. Puedes ejecutar el comando cat que aparece a continuación para mostrar el contenido de las claves privada y pública.
cat /etc/wireguard/server.key cat /etc/wireguard/server.pub
Puede que tengas una salida diferente, pero las claves generadas tienen el siguiente aspecto:
Generación de la clave de cliente wireguard
Con la clave del servidor wireguard generada, la siguiente tarea es generar claves para los clientes. Puedes generar claves de cliente para cada uno de los usuarios, pero también puedes utilizar una única clave para varios usuarios.
En este ejemplo, generarás una clave de cliente para un usuario concreto , alice.
Para empezar, ejecuta el siguiente comando para crear un nuevo directorio para almacenar claves de cliente. En este caso, las claves pública y privada del usuario alice se generarán en el directorio /etc/wireguard/clients/alice.
mkdir -p /etc/wireguard/clients/alice
Ahora, ejecuta el siguiente comando para generar la clave privada /etc/wireguard/clients/alice/alice .key y la clave pública /etc/wireguard/clients/alice/alice.pub para el usuario alice.
wg genkey | tee /etc/wireguard/clients/alice/alice.key cat /etc/wireguard/clients/alice/alice.key | wg pubkey | tee /etc/wireguard/clients/alice/alice.pub
Por último, ejecuta el siguiente comando para mostrar el contenido de las claves privada y pública del usuario alice.
cat /etc/wireguard/clients/alice/alice.key cat /etc/wireguard/clients/alice/alice.pub
Se mostrará una salida similar a la siguiente:
Configuración de la interfaz Wireguard
Ahora que has generado claves privadas y públicas para el servidor y el cliente, la siguiente tarea es configurar la interfaz y el par Wireguard. Configurarás una interfaz para la red VPN Wireguard y el par que se establecerá entre el cliente y el servidor.
Crea una nueva configuración de Wireguard /etc/wireguard/wg0.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/wireguard/wg0.conf
Introduce la siguiente configuración en el archivo.
[Interface] # Wireguard Server private key - server.key PrivateKey = cNBb6MGaKhmgllFxSq/h9BdYfZOdyKvo8mjzb2STbW8= # Wireguard interface will be run at 10.10.0.1 Address = 10.10.0.1/24 # Clients will connect to UDP port 51820 ListenPort = 51820 # Ensure any changes will be saved to the Wireguard config file SaveConfig = true
A continuación se detallan los parámetros que se utilizarán dentro de la sección [Interfaz]:
- PrivateKey: Introduce el contenido de la clave privada del servidor wireguard server.key.
- Dirección: la dirección IP que se asignará a la interfaz Wireguard. En este caso, la interfaz wireguard tendrá una dirección IP de 10.10.0.1.
- PuertoDeEscucha: es el puerto que utilizará el cliente para conectarse al servidor wireguard. En este caso, se utilizará el puerto 51820.
- SaveConfig: el valor true significa que cualquier cambio se guardará desde el estado actual de la interfaz hasta el apagado.
Ahora añade la siguiente sección [Peer] para los clientes wireguard.
[Peer] # Wireguard client public key - alice.pub PublicKey = 3ZoaoVgHOioZnKzCrF/XALAv70V4vyJXpl/UO7AKYzA= # clients' VPN IP addresses you allow to connect # possible to specify subnet ⇒ [10.10.0.0/24] AllowedIPs = 10.10.0.2/24
A continuación se muestran los parámetros que se utilizan dentro de la sección [Peer ]:
ClavePública: Introduce en este parámetro la clave pública del cliente wireguard. En este caso, el contenido de la clave pública alice.pub.
AllowedIPs: Define la dirección IP para el cliente y dirige el tráfico a la interfaz wireguard.
Guarda y cierra el archivo cuando hayas terminado.
Por último, ejecuta el siguiente comando para abrir el puerto 51820/udp para las conexiones de los clientes.
sudo ufw allow 51820/udp
Configurar NAT para la interfaz Wireguard
En primer lugar, ejecuta el siguiente comando para mostrar la interfaz de la pasarela por defecto que se utiliza para conectarse a Internet.
sudo ip route list default
En este caso, la pasarela de internet por defecto es la interfaz eth0.
Ahora abre la configuración de wireguard /etc/wireguard/wg0.conf utilizando el siguiente comando del editor nano.
sudo nano /etc/wireguard/wg0.conf
Añade la siguiente configuración en la sección [Interfaz], y asegúrate de cambiar la interfaz eth0 por la interfaz de la pasarela de internet por defecto.
[Interface] ... PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Guarda y cierra el archivo cuando hayas terminado.
Llegados a este punto, habrás configurado tu servidor Wireguard.
Gestionar el servicio Wireguard
Ahora que la instalación y configuración del servidor Wireguard han finalizado, estás preparado para iniciar el servicio Wireguard en tu sistema Debian. Esto puede hacerse mediante el comando systemctl o utilizando la utilidad wg-quick.
Para iniciar y habilitar el servidor wireguard, ejecuta el siguiente comando systemctl. Con el nombre de servicio wg-quick@wg0, iniciarás el Wireguard dentro de la interfaz wg0, que se basa en la configuración /etc/wireguard/wg0.conf.
sudo systemctl start [email protected] sudo systemctl enable [email protected]
Ahora verifica el servicio wirguard@wg0 utilizando el siguiente comando.
sudo systemctl status [email protected]
Si el servicio se está ejecutando, se mostrará la siguiente salida.
A continuación, ejecuta el siguiente comando ip para mostrar los detalles de la interfaz wg0 de wireguard. Y deberías ver que la interfaz wg0 de wireguard tiene una dirección IP 10.10.0.1.
sudo ip a show wg0
También puedes iniciar o detener el wireguard manualmente mediante el comando wg-quick que aparece a continuación.
sudo wg-quick up /etc/wireguard/wg0.conf sudo wg-quick down /etc/wireguard/wg0.conf
Con esto, has configurado el servidor wireguard y lo has iniciado en segundo plano mediante el comando systemctl. Tu cliente ya está listo para conectarse al servidor wireguard.
Configurar el cliente Wireguard en una distribución basada en Debian
En la siguiente sección, configurarás el cliente wireguard para la distribución basada en Debian. Instalarás las herramientas wireguard, crearás la configuración del cliente wireguard, te conectarás al servidor wireguard, verificarás la conexión mediante la utilidad wg y accederás a Internet.
Instala el paquete wireguard-tools en la máquina cliente mediante APT. La máquina cliente es una distribución basada en Debian, por lo que se utilizará el gestor de paquetes APT.
sudo apt install wireguard-tools resolvconf
Tras instalar wireguard-tools, crea una nueva configuración de cliente wireguard /etc/wireguard/wg-alice.conf utilizando el siguiente editor nano.
sudo nano /etc/wireguard/wg-alice.conf
Introduce la siguiente configuración en el archivo.
[Interface] # Define the IP address for the client - must be matched with wg0 on the Wireguard Server Address = 10.10.0.2/24 # specific DNS Server DNS = 1.1.1.1 # Private key for the client - alice.key PrivateKey = cPDg6SQHz/3l2R83lMWPzmR6/mMKnKp9PNImbtB6nGI= [Peer] # Public key of the Wireguard server - server.pub PublicKey = APyBQvTkYVm0oakzcQUQViarwx1aIYz5wb/g2v2xdUE= # Allow all traffic to be routed via Wireguard VPN AllowedIPs = 0.0.0.0/0 # Public IP address of the Wireguard Server Endpoint = 192.168.128.15:51820 # Sending Keepalive every 25 sec PersistentKeepalive = 25
Guarda y cierra el archivo cuando hayas terminado.
A continuación se indican algunos de los parámetros de la sección [Interfaz] para los clientes wireguard:
- Dirección: especifica la dirección IP interna de la interfaz wireguard en la máquina cliente.
- DNS: configura el servidor DNS por defecto para el cliente.
- PrivateKey: la clave privada del cliente wireguard, en este caso, es alice.key.
Y dentro de la sección [Par] en la configuración del cliente wireguard:
- PublicKey: es la clave pública del servidor wireguard, que es server.pub.
- IPs permitidas: Permite que cualquier acceso se enrute a través de la interfaz wireguard.
- Endpoint: la dirección IP y el puerto del servidor wireguard.
- PersistentKeepalive: envía keepalive cada x segundos para mantener la conexión.
A continuación, ejecuta el siguiente comando wg-quick para iniciar wireguard en la interfaz wg-alice.
sudo wg-quick up wg-alice
Si todo va bien, se mostrará una salida similar a la siguiente.
Después, ejecuta el comando ip que aparece a continuación para comprobar los detalles de la interfaz wg-alice. Y deberías ver la interfaz wg-alice con la dirección IP local 10.10.0.2.
sudo ip a show wg-alice
A continuación, comprueba la conexión a Internet de la máquina cliente ejecutando el siguiente comando.
ping -c3 10.10.0.1 ping -c3 1.1.1.1 ping -c3 duckduckgo.com
Si la instalación de tu servidor wireguard se ha realizado correctamente, obtendrás una respuesta de cada servidor de destino como la siguiente:
Además, también puedes detallar las conexiones entre el servidor wireguard y el cliente ejecutando el siguiente comando en el servidor wireguard o en la máquina cliente.
wg show
Se mostrará una salida similar a la siguiente.
Por último, para detener la conexión wireguard en la máquina cliente, ejecuta el siguiente comando wg-quick.
sudo wg-quick down wg-alice
Conclusión
Para terminar, ya has completado la instalación de Wireguard VPN en el servidor Debian 12 paso a paso. También has configurado una máquina cliente basada en Debian con Wireguard y la has conectado al servidor Wireguard. Con esto en mente, ahora puedes añadir más clientes añadiendo más claves Wireguard y configuración de pares.