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

activar el reenvío de puertos

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

instalar ufw

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

activar ufw

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.

verificar 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.

instalar wireguard

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

generar clave de servidor

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:

mostrar clave de servidor

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

generar clave de cliente

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:

mostrar clave de cliente

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.

comprobar pasarela por defecto

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.

empezar a verificar el servicio wireguard

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

comprobar interfaz 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

instalar herramientas wireguard

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.

iniciar wireguard en el cliente

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

comprueba la interfaz wireguard en el cliente

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:

comprobar ping

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.

mostrar conexiones wireguard

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

detener wireguard en cliente

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.

También te podría gustar...