VPN Wireguard · 16 min read · Oct 05, 2025

Cómo instalar Wireguard VPN en Debian 11

Wireguard es un protocolo VPN gratuito y de código abierto que es una alternativa a IPSec, IKEv2 y OpenVPN. Wireguard está diseñado para sistemas operativos Linux y Unix. Se ejecuta en el espacio del núcleo de Linux, lo que hace que Wireguard sea más rápido y confiable. Wireguard se utiliza para crear conexiones de túnel seguras entre dos computadoras o más.

Wireguard tiene como objetivo reemplazar protocolos VPN como IPSec, IKEv2 y OpenVPN. Wireguard es más ligero, más rápido, fácil de configurar y más eficiente. Y al mismo tiempo, Wireguard no sacrificó el aspecto de seguridad del protocolo VPN. Wireguard admite criptografía moderna de última generación como el marco de protocolo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF y construcciones seguras y confiables.

En comparación con otros protocolos VPN como OpenVPN, IPSec e IKEv2, Wireguard es un nuevo protocolo VPN. Wireguard fue lanzado en 2015 por Jason A. Donenfeld como un protocolo VPN alternativo, se fusionó en el núcleo de Linux v5.6 por Linus Torvalds en 2020, y en el mismo año, también se portó a FreeBSD 13.

En este tutorial, instalarás y configurarás un servidor VPN a través de Wireguard en servidores Debian 11. Configurarás un servidor VPN Wireguard con el servidor Debian 11, y luego configurarás una máquina cliente para conectarte al servidor VPN Wireguard.

En cuanto a la máquina cliente, puedes usar cualquier distribución de Linux, pero este ejemplo utiliza una máquina Debian.

Requisitos previos

Para comenzar con este tutorial, debes tener los siguientes requisitos:

  • Un servidor Debian 11 - Este ejemplo utiliza un servidor Debian con el nombre de host ‘ wireguard-server ‘ y una dirección IP estática externa ‘ SERVER-IP ‘.
  • Una máquina Linux que se utilizará como cliente - Puedes usar cualquier distribución de Linux, pero este ejemplo utiliza una máquina Debian con el nombre de host ‘client1’.
  • Un usuario no root con privilegios de administrador sudo/root.

Si todos estos requisitos están listos, comencemos.

Instalando Wireguard

Antes de instalar Wireguard, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes de Debian.

sudo apt update

Una vez que los repositorios de Debian estén actualizados, ejecuta el siguiente comando apt para instalar el paquete Wireguard en tu servidor Debian. Esto también instalará el paquete wireguard-tools que se utilizará para gestionar la instalación de tu servidor Wireguard.

sudo apt install wireguard

Cuando se te pida la confirmación, ingresa y para confirmar y presiona ENTER para continuar. Ahora la instalación debería comenzar.

instalar wireguard

Con Wireguard instalado en tu servidor, estás listo para generar un par de claves públicas y privadas para el servidor y el cliente de Wireguard.

Generando par de claves públicas/privadas

En este paso, generarás un par de claves públicas y privadas para el servidor Wireguard y la máquina cliente. Y esto se puede hacer a través del comando ‘wg’ proporcionado por el paquete wireguard-tools.

El par de claves para el servidor será utilizado por el servidor Wireguard, y la máquina cliente usará el par de claves para el cliente. Si tienes múltiples máquinas cliente, puedes generar múltiples pares de claves para tus clientes.

Generando par de claves para el servidor Wireguard

Ejecuta el siguiente comando ‘ wg genkey ‘ para generar la clave privada para el servidor Wireguard. Luego, cambia el permiso de la clave privada a ‘ 0400 ‘, lo que deshabilitará el acceso de lectura y escritura para el grupo y otros.

En este ejemplo, generarás la clave privada ‘/etc/wireguard/server.key’.

wg genkey | sudo tee /etc/wireguard/server.key  
sudo chmod 0400 /etc/wireguard/server.key

Luego recibirás una salida de clave aleatoria en base64 en la pantalla de tu terminal.

A continuación, ejecuta el siguiente comando ‘ wg pubkey ‘ para generar la nueva clave pública del servidor en ‘ /etc/wireguard/server.pub ‘. La clave pública del servidor se deriva de la clave privada del servidor ‘ /etc/wireguard/server.key ‘.

sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub

Luego recibirás una salida de una clave pública aleatoria en base64 en tu terminal.

generar par de claves del servidor

Ahora que has generado pares de claves públicas y privadas para el servidor Wireguard. La clave privada se encuentra en ‘/etc/wireguard/server.key’, y la clave pública se encuentra en ‘/etc/wireguard/server.pub ‘.

Ejecuta el siguiente comando cat para mostrar y verificar el par de claves generado para el servidor Wireguard.

cat /etc/wireguard/server.key  
cat /etc/wireguard/server.pub

Generando par de claves para el cliente

Para el par de claves del cliente, puedes generarlo en cualquier máquina (servidor Wireguard o cliente) con los wireguard-tools instalados. En este paso, generarás un par de claves del cliente desde el servidor Wireguard.

El proceso para generar un par de claves para el servidor y el cliente es el mismo, utilizando el comando ‘ wg genkey ‘ para generar la clave privada y utilizando ‘ wg pubkey ‘ para generar la clave pública, que se deriva de la clave privada.

Ahora ejecuta el siguiente comando para crear un nuevo directorio ‘ /etc/wireguard/clients ‘. Este directorio se utilizará para almacenar el par de claves del cliente.

mkdir -p /etc/wireguard/clients

Ejecuta el siguiente comando ‘wg genkey’ para generar la clave privada del cliente en ‘ /etc/wireguard/clients/client1.key ‘. Luego, genera la clave pública del cliente a través del comando ‘ wg pubkey ‘ en ‘/etc/wireguard/clients/client1.pub ‘.

wg genkey | tee /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub

generar par de claves del cliente

Ahora que se ha generado el par de claves del cliente, la clave pública se encuentra en ‘/etc/wireguard/clients/client1.pub’ y la clave privada es ‘ /etc/wireguard/clients/client1.key ‘. Ejecuta el siguiente comando para mostrar y verificar el par de claves generado.

cat /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.pub

verificar par de claves del cliente

Configurando el servidor Wireguard

Crearás un nuevo archivo de configuración para el servidor Wireguard en este paso. Pero antes de eso, debes decidir qué subredes utilizarás para el servidor VPN Wireguard. También puedes decidir si habilitar o deshabilitar IPv6 para tu servidor VPN Wireguard.

En este ejemplo, el servidor VPN Wireguard tendrá direcciones IP con la subred ‘10.8.0.2/24’ y deshabilitará IPv6 para el VPN Wireguard.

Crea un nuevo archivo de configuración de Wireguard ‘/etc/wireguard/wg0.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/wireguard/wg0.conf

Primero, agrega las siguientes líneas al archivo para definir los detalles del servidor Wireguard. Y asegúrate de cambiar ‘ PrivateKey ‘ por la clave privada del servidor Wireguard ‘ server.key ‘. Con esto, la interfaz del servidor Wireguard se ejecutará en la dirección IP ‘ 10.8.0.1 ‘, abrirá el puerto UDP 51820 que estará disponible para que los clientes se conecten, y el parámetro SaveConfig asegurará que cualquier cambio se guardará en el archivo de configuración, incluso cuando la interfaz de Wireguard esté apagada.

[Interface]  
# Clave privada del servidor Wireguard - server.key  
PrivateKey = SIybp8GHtKIPtHPBOQFP1kbQg4UCLCMyNIfCLBQR2EA=  
  
# La interfaz de Wireguard se ejecutará en 10.8.0.1  
Address = 10.8.0.1/24  
  
# Los clientes se conectarán al puerto UDP 51820  
ListenPort = 51820  
  
# Asegúrate de que cualquier cambio se guardará en el archivo de configuración de Wireguard  
SaveConfig = true

A continuación, agrega las siguientes líneas para definir la conexión del cliente peer. Cambia el parámetro ‘ PublicKey ‘ por la clave pública del cliente ‘ client1.pub ‘. Y el parámetro ‘ AllowedIPs ‘ especificará qué cliente de Wireguard tiene acceso permitido a este peer. En este ejemplo, solo se permitirá el acceso a este peer a los clientes con IP ‘ 10.8.0.2 ‘. Pero también puedes permitir el rango de subredes como ‘ 10.8.0.0/24 ‘.

[Peer]  
# Clave pública del cliente Wireguard - client1.pub  
PublicKey = ENokvIsS2euXrmM4OVFHPmTdCZ4wfEIR/UHuGCW64lw=  
  
# direcciones IP VPN de los clientes que permites conectar  
# posible especificar subred ⇒ [10.8.0.0/24]  
AllowedIPs = 10.8.0.2/24

Guarda el archivo y sal del editor cuando termines.

Con el archivo de configuración del servidor Wireguard creado y la conexión del cliente peer añadida, a continuación configurarás el reenvío de puertos en el servidor Wireguard y configurarás el firewall para establecer el enrutamiento del tráfico.

Habilitar el reenvío de puertos a través de /etc/sysctl.conf

En este paso, habilitarás el reenvío de puertos en el servidor Wireguard a través del archivo /etc/sysctl.conf’. Puedes habilitar el reenvío de puertos tanto para IPv4 como para IPv6 en el servidor Wireguard.

Para comenzar, abre el archivo de configuración ‘/etc/sysctl.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/sysctl.conf

Agrega las siguientes líneas al archivo. Esto habilitará el reenvío de puertos en tu servidor Wireguard. Puedes usar ambos para IPv4 e IPv6, o puedes usar IPv4 si tienes IPv6 deshabilitado en tu servidor Wireguard.

# Reenvío de puertos para IPv4  
net.ipv4.ip_forward=1  
  
# Reenvío de puertos para IPv6  
net.ipv6.conf.all.forwarding=1

Guarda el archivo y sal del editor cuando termines.

A continuación, ejecuta la utilidad del comando sysctl a continuación para aplicar los cambios.

sudo sysctl -p

Recibirás una salida como esta - El reenvío de puertos debería habilitarse de inmediato.

habilitar reenvío de puertos

Con el reenvío de puertos habilitado en el servidor Wireguard, a continuación configurarás el firewall que enrutará el tráfico de los clientes de Wireguard a la interfaz de red específica.

Configurando el firewall para el servidor Wireguard

En este paso, configurarás el firewall que se utilizará para el servidor Wireguard para enrutar las conexiones de los clientes a la interfaz de red adecuada que se utilizará para acceder a Internet. Esto también permitirá que los clientes de Wireguard accedan a Internet a través de la interfaz específica en el servidor Wireguard.

Primero, ejecuta el siguiente comando apt para instalar el paquete de firewall ufw en tu servidor Debian.

sudo apt install ufw

Ingresa y cuando se te pida y presiona ENTER para continuar.

instalar ufw

Después de que se instale ufw, ejecuta el siguiente comando para abrir el servicio SSH y habilitar el firewall ufw.

sudo ufw allow OpenSSH  
sudo ufw enable

Cuando se te pida confirmación para habilitar el firewall ufw, ingresa y presiona ENTER. El firewall ufw ahora debería estar en funcionamiento en tu sistema y también habilitado.

iniciar habilitar ufw

Ahora verifica el estado del firewall ufw a través del siguiente comando. Deberías recibir una salida como ‘ Estado: activo ‘, lo que significa que el estado del firewall ufw está en funcionamiento.

sudo ufw status

Con el firewall ufw en funcionamiento, a continuación lo configurarás para enrutar las conexiones de los clientes de Wireguard a la interfaz de red específica.

Ahora ejecuta el siguiente comando para verificar la tabla de enrutamiento predeterminada en el servidor Wireguard. En su mayoría, esto detectará una interfaz que se utiliza para acceder a Internet o donde la dirección IP pública está disponible en la parte superior de ella.

ip route list default

Recibirás una salida como esta - Este ejemplo es la interfaz eth0 que es la tabla de enrutamiento predeterminada para el servidor Wireguard. Y esta es la interfaz que se utiliza para acceder a Internet. Puede que tengas un nombre de interfaz diferente.

A continuación, abre el archivo de configuración del servidor Wireguard ‘ /etc/wireguard/wg0.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/wireguard/wg0.conf

Agrega las siguientes líneas a la sección ‘ [Interface] ‘.

[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 el archivo y sal del editor cuando termines.

  • El parámetro ‘ PostUp ‘ se ejecutará cada vez que el servidor Wireguard inicie el túnel VPN.
  • El parámetro ‘ PreDown ‘ se ejecutará cada vez que el servidor Wireguard detenga el túnel VPN.
  • El comando ‘ ufw route allow in on wg0 out on eth0 ‘ permite el reenvío del tráfico que llega a la interfaz wg0 a la interfaz de Internet eth0.
  • El comando ‘iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE’ habilitará el enmascaramiento y reescribirá el tráfico IPv4 de la interfaz wg0 para que parezca como la conexión directa desde el servidor Wireguard.
  • El comando ‘ ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE ‘ habilitará el enmascaramiento y reescribirá el tráfico IPv46 de la interfaz wg0 para que parezca como la conexión directa desde el servidor Wireguard.

Ahora ejecuta el siguiente comando ufw para abrir el puerto UDP 51820 donde los clientes se conectarán.

sudo ufw allow 51820/udp

Por último, ejecuta el siguiente comando para recargar el firewall ufw y aplicar los cambios. Luego, verifica la lista de reglas de ufw a través del siguiente comando.

sudo ufw reload  
sudo ufw status

Recibirás una salida como esta captura de pantalla - El puerto UDP 51820 que el servidor Wireguard utilizará para las conexiones de los clientes se ha añadido al firewall ufw.

configurar firewall ufw

Ahora, has habilitado el reenvío de puertos y configurado el firewall en el servidor Wireguard. Ahora estás listo para iniciar el servidor Wireguard.

Iniciando el servidor Wireguard

En este paso, iniciarás y habilitarás el servidor Wireguard. También verificarás el servidor Wireguard y verificarás la interfaz wg0 que será creada por el servicio Wireguard.

Ejecuta la siguiente utilidad del comando systemctl para iniciar y habilitar el servicio Wireguard. El servicio ‘ [email protected] ‘ creará y habilitará la interfaz Wireguard ‘ wg0 ‘ en tu servidor Wireguard.

sudo systemctl start [email protected]  
sudo systemctl enable [email protected]

Ahora verifica el servicio Wireguard a través del siguiente comando.

sudo systemctl status [email protected]

Recibirás una salida similar a la siguiente captura de pantalla - El servicio Wireguard ‘ [email protected] ‘ está en funcionamiento y está habilitado. Esto también significa que la interfaz ‘ wg0 ‘ ha sido creada y está en funcionamiento.

iniciar habilitar verificar servidor wireguard

Ejecuta el siguiente comando para verificar la interfaz ‘wg0’ en tu servidor Wireguard.

ip a show wg0

Deberías recibir una salida como esta - La interfaz Wireguard wg0 obtiene una dirección IP ‘ 10.8.0.1 ‘, como se describe en el archivo de configuración de Wireguard ‘ /etc/wireguard/wg0.conf ‘.

verificar interfaz wg0

Además, también puedes iniciar y detener Wireguard a través del comando ‘ wg-quick k’ como a continuación. El comando ‘ wg-quick up ‘ iniciará el servidor Wireguard, y el ‘wg-quick down ‘ detendrá el servidor Wireguard.

sudo wg-quick up /etc/wireguard/wg0.conf  
sudo wg-quick down /etc/wireguard/wg0.conf

Con el servidor Wireguard en funcionamiento, a continuación configurarás la máquina cliente y la conectarás al servidor Wireguard.

Configurando la máquina cliente y conectándose al servidor Wireguard

En este paso, configurarás la máquina cliente instalando los wireguard-tools, creando una nueva configuración de Wireguard para el cliente, conectándote al servidor VPN Wireguard, y por último verificar la conexión y asegurarte de que la máquina cliente pueda alcanzar Internet y la red VPN local.

Instala el paquete ‘ wireguard-tools ‘ en la máquina cliente. Esto utiliza Debian como cliente, por lo que se utilizará el comando APT.

sudo apt install wireguard-tools

La instalación debería comenzar automáticamente.

instalar wireguard cliente

Después de que se instalen los wireguard-tools, crea un nuevo archivo de configuración ‘ /etc/wireguard/wg-client1.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/wireguard/wg-client1.conf

Agrega las siguientes líneas al archivo.

[Interface]  
# Define la dirección IP para el cliente - debe coincidir con wg0 en el servidor Wireguard  
Address = 10.8.0.2/24  
  
# servidor DNS específico  
DNS = 1.1.1.1  
  
# Clave privada para el cliente - client1.key  
PrivateKey = KPI59QH0jwc9wkUsW5Byci9ojXhz1322QXK52fQCE3E=  
  
[Peer]  
# Clave pública del servidor Wireguard - server.pub  
PublicKey = Qt6oRLtlfAR490lTNb2K8TlbpwADV1j8NX7D5HY38EM=  
  
# Permitir que todo el tráfico sea enrutado a través de VPN Wireguard  
AllowedIPs = 0.0.0.0/0  
  
# Dirección IP pública del servidor Wireguard  
Endpoint = SERVER-IP:51820  
  
# Enviando Keepalive cada 25 seg  
PersistentKeepalive = 25

Guarda y cierra el archivo cuando termines.

En la sección ‘ [Interface] ‘, debes definir lo siguiente:

  • La dirección IP del cliente debe coincidir con la subred del servidor Wireguard. El cliente Wireguard obtendrá la dirección IP ‘10.8.0.2’ en este ejemplo.
  • Especifica el servidor DNS para el cliente.
  • Cambia el parámetro ‘ PrivateKey ‘ por la clave privada del cliente que has generado, ‘ client1.key ‘.

En la sección ‘ [Peer]’ , debes agregar lo siguiente:

  • La clave pública del servidor Wireguard ‘ server.pub ‘ al parámetro PublicKey.
  • Especifica ‘ AllowedIPs ‘ para restringir el acceso en el peer VPN, puedes especificar subredes de redes o simplemente poner 0.0.0.0/0 para enrutar todo el tráfico a través de la VPN.
  • Especifica el parámetro Endpoint con la dirección IP pública del servidor Wireguard o usa un nombre de dominio.

Después de crear la configuración del cliente, ejecuta el siguiente comando para iniciar Wireguard en la máquina cliente.

wg-quick up wg-client1

Deberías recibir una salida similar a esta captura de pantalla - La nueva interfaz Wireguard ‘ wg-client1 ‘ será creada y la máquina cliente debería estar conectada al servidor Wireguard que se ejecuta en ‘ SERVER-IP:51820 ‘.

configurar cliente wireguard

Ejecuta el siguiente comando para verificar la interfaz Wireguard ‘ wg-client1 ‘.

ip a show wg-client1

Deberías recibir una salida como esta - La interfaz wg-client1 está activa con una dirección IP ‘ 10.8.0.2 ‘, que es parte de la subred del servidor Wireguard ‘ 10.8.0.0/24’.

verificar interfaz cliente wireguard

También puedes verificar la conexión Wireguard a través del comando ‘ wg show ‘.

Ejecuta el siguiente comando ‘ wg show’ en la máquina cliente y deberías recibir una salida como esta.

wg show

Si estás conectado al servidor Wireguard correcto, deberías ver la dirección IP del servidor Wireguard en la sección ‘ endpoint ‘ y ver la clave pública del servidor Wireguard ‘ server.pub ‘.

wg show cliente

Ahora muévete al servidor Wireguard y ejecuta el comando ‘ wg show ‘.

wg show

Deberías recibir una salida similar a esta - En la sección endpoint, verás la dirección IP pública del cliente, y en la sección de peer, verás la clave pública del cliente ‘client1.pub ‘.

wg show servidor wireguard

Por último, ejecuta el siguiente comando para asegurarte de que la máquina cliente pueda acceder a Internet o acceder a la red interna de subred de la VPN Wireguard.

ping -c5 10.8.0.1  
ping -c5 1.1.1.1  
ping -c5 duckduckgo.com

A continuación se muestra la salida que deberías recibir:

La máquina cliente puede conectarse al servidor Wireguard con una dirección IP ‘10.8.0.1 ‘.

ping al servidor wireguard

La máquina cliente puede acceder a Internet. Todo el tráfico se enruta a través de la dirección IP pública del servidor Wireguard.

ping a internet

Ahora, si deseas detener Wireguard en la máquina cliente, puedes ejecutar el comando ‘ wg-quick down ‘ a continuación.

wg-quick down wg-client1

Recibirás la salida como esta. Además, la interfaz wg-client1 desaparecerá de la máquina cliente.

ping con dominio

Ahora has configurado el VPN Wireguard en la máquina cliente. También has verificado la conexión entre la máquina cliente y el servidor Wireguard.

Conclusión

En este tutorial, has instalado y configurado Wireguard VPN en un servidor Debian 11. También has configurado una máquina Debian y te has conectado con éxito al servidor VPN Wireguard.

En detalle, has instalado el paquete VPN Wireguard, generado pares de claves públicas y privadas tanto para el servidor como para el cliente, configurado el firewall UFW para enrutar el tráfico VPN a la interfaz de red específica, y habilitado el reenvío de puertos a través del archivo /etc/sysctl.conf.

Con esto en mente, ahora puedes agregar más clientes a tu servidor VPN Wireguard generando otro par de claves para el cliente, definiendo la conexión peer en el servidor Wireguard, y luego creando un nuevo archivo de configuración de Wireguard que la máquina cliente utilizará. Para aprender más sobre Wireguard, visita la documentación oficial de Wireguard.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.