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 updateUna 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 wireguardCuando se te pida la confirmación, ingresa y para confirmar y presiona ENTER para continuar. Ahora la instalación debería comenzar.

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.keyLuego 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.pubLuego recibirás una salida de una clave pública aleatoria en base64 en tu terminal.

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.pubGenerando 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/clientsEjecuta 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
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
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.confPrimero, 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 = trueA 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/24Guarda 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.confAgrega 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=1Guarda 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 -pRecibirás una salida como esta - El reenvío de puertos debería habilitarse de inmediato.

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 ufwIngresa y cuando se te pida y presiona ENTER para continuar.

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

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 statusCon 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 defaultRecibirá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.confAgrega 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 MASQUERADEGuarda 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/udpPor ú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 statusRecibirá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.

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.

Ejecuta el siguiente comando para verificar la interfaz ‘wg0’ en tu servidor Wireguard.
ip a show wg0Deberí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 ‘.

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.confCon 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-toolsLa instalación debería comenzar automáticamente.

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.confAgrega 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 = 25Guarda 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-client1Deberí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 ‘.

Ejecuta el siguiente comando para verificar la interfaz Wireguard ‘ wg-client1 ‘.
ip a show wg-client1Deberí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’.

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 showSi 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 ‘.

Ahora muévete al servidor Wireguard y ejecuta el comando ‘ wg show ‘.
wg showDeberí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 ‘.

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.comA 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 ‘.

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.

Ahora, si deseas detener Wireguard en la máquina cliente, puedes ejecutar el comando ‘ wg-quick down ‘ a continuación.
wg-quick down wg-client1Recibirás la salida como esta. Además, la interfaz wg-client1 desaparecerá de la máquina cliente.

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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.