Cómo configurar un VPN WireGuard en tu VPS
Escrito por el equipo de ApexVPS · Última actualización: julio de 2026 · 9 min de lectura
Este tutorial de configuración de VPS con WireGuard te muestra cómo crear tu propio VPN privado, rápido y moderno en un servidor Ubuntu o Debian. WireGuard es un protocolo VPN ligero integrado en el kernel de Linux, por lo que es mucho más simple que OpenVPN o IPsec, a la vez que ofrece una criptografía fuerte y actualizada. Al final tendrás un servidor en funcionamiento, al menos un cliente conectado y control total sobre tu propio túnel cifrado, sin necesidad de suscripción a un VPN de terceros.
Ejecutar WireGuard en tu propia máquina significa que el tráfico termina en hardware que alquilas, no en un endpoint VPN de consumo masificado. Si quieres profundizar en por qué un servidor privado es la mejor base para esto, lee nuestra guía sobre elegir un VPS para un VPN personal antes de comenzar.
Lo que necesitas antes de empezar
- Un VPS que ejecute Ubuntu 20.04+ o Debian 11+ con el módulo del kernel de WireGuard (ambos lo incluyen).
- Acceso root o sudo a través de SSH. Cada comando a continuación asume que puedes usar
sudo. - La dirección IP pública del servidor y el nombre de su interfaz de red predeterminada.
- El puerto UDP 51820 accesible: el predeterminado de WireGuard. Lo abrirás en el firewall.
Un endpoint estable y sin contención importa para un VPN, por lo que los recursos verdaderamente dedicados superan al hosting compartido sobresuscrito. Una IPv4 dedicada está disponible en los planes Business y Enterprise de ApexVPS, lo que le da a tu túnel una dirección que no se comparte con nadie más.
Paso 1: Actualiza el sistema e instala WireGuard
Comienza actualizando el índice de paquetes e instalando las herramientas de espacio de usuario de WireGuard. En un kernel moderno, este es el único paquete que necesitas.
sudo apt update
sudo apt install wireguard -y
Esto instala wg y wg-quick, los dos comandos que gestionan claves, interfaces y configuración. Puedes confirmar la instalación con wg --version.
Paso 2: Genera las claves del servidor
WireGuard autentica a los pares con un par de claves pública/privada, muy parecido a SSH. Entra en el directorio de configuración, ajusta los permisos de los archivos con umask, y genera las claves en un solo paso.
cd /etc/wireguard
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
La línea umask 077 asegura que la clave privada solo sea legible por root. Imprime los dos valores para que puedas pegarlos en la configuración que sigue.
sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
Mantén la clave privada en secreto. Cualquiera que la tenga puede hacerse pasar por tu servidor.
Paso 3: Crea la configuración del servidor (wg0.conf)
La interfaz del servidor se describe en un único archivo, /etc/wireguard/wg0.conf. Créalo con tu editor favorito:
sudo nano /etc/wireguard/wg0.conf
Pega el bloque siguiente, reemplazando <SERVER_PRIVATE_KEY> con la clave privada del Paso 2 y eth0 con el nombre real de tu interfaz si difiere.
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Aquí, 10.8.0.1/24 es la subred VPN privada, 51820/udp es el puerto de escucha, y las reglas PostUp/PostDown añaden y eliminan NAT para que el tráfico de los clientes sea enmascarado a través de la interfaz pública del servidor. Para encontrar el nombre de tu interfaz, ejecuta:
ip route list default
La palabra después de dev en la salida (a menudo eth0, ens3 o enp1s0) es la interfaz que debes usar en las dos líneas de firewall anteriores.
Paso 4: Habilita el reenvío de IP y NAT
Por defecto, Linux no enruta paquetes entre interfaces, por lo que se debe indicar al kernel que reenvíe. Habilítalo de forma persistente con un archivo drop-in de sysctl.
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
Si también enrutas IPv6 a través del túnel, añade net.ipv6.conf.all.forwarding = 1 al mismo archivo. La regla MASQUERADE del Paso 3 se encarga del NAT en sí, así que una vez que el reenvío está activado, la ruta queda completa.
Abre el puerto del firewall
Permite el puerto UDP de WireGuard. Si usas ufw, ejecuta lo siguiente y asegúrate de mantener SSH abierto para no quedarte fuera.
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
Si gestionas las reglas directamente con iptables en lugar de ufw, las líneas PostUp ya añaden las reglas de reenvío y NAT; solo necesitas asegurarte de que el UDP entrante 51820 esté permitido por cualquier firewall del host o grupo de seguridad del proveedor.
Paso 5: Inicia WireGuard con systemd
wg-quick incluye una plantilla de servicio systemd, así que puedes iniciar el túnel ahora y hacer que vuelva automáticamente después de un reinicio.
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
La bandera enable --now inicia la interfaz y la configura para que se lance al arrancar. Una comprobación rápida confirma que la interfaz está activa:
sudo wg show
Deberías ver una interfaz wg0 con tu clave pública y el puerto de escucha. Aún no hay pares: eso es el siguiente paso.
Paso 6: Añade un cliente (par)
Cada dispositivo que se conecta es un par con su propio par de claves. Genera un par de claves para tu primer cliente:
wg genkey | sudo tee client1_private.key | wg pubkey | sudo tee client1_public.key
Ahora registra el cliente en el servidor. Añade un bloque [Peer] a /etc/wireguard/wg0.conf, usando la clave pública del cliente y la siguiente dirección libre en la subred VPN.
[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32
Recarga la interfaz para que el nuevo par tenga efecto:
sudo systemctl restart wg-quick@wg0
¿Prefieres no interrumpir el túnel? Puedes añadir el par en caliente sin reiniciar:
sudo wg set wg0 peer <CLIENT1_PUBLIC_KEY> allowed-ips 10.8.0.2/32
Paso 7: Crea la configuración del cliente y un código QR
En el servidor, ensambla el archivo de configuración del cliente. Esto es lo que cargará el dispositivo (un portátil o un teléfono). Reemplaza los marcadores de posición con la clave privada del cliente y la clave pública y la IP pública del servidor.
[Interface]
PrivateKey = <CLIENT1_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_PUBLIC_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Configurar AllowedIPs = 0.0.0.0/0, ::/0 enruta todo el tráfico del cliente a través del túnel: el comportamiento clásico de VPN completa. PersistentKeepalive = 25 mantiene la conexión activa a través de NAT y firewalls. Guárdalo como client1.conf.
Para un escritorio, copia client1.conf a la máquina e impórtalo en el cliente WireGuard oficial. Para un teléfono, genera un código QR escaneable directamente en la terminal:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf
Abre la aplicación WireGuard en Android o iOS, elige "Añadir túnel" y luego "Escanear código QR", y el túnel se importa en segundos. Las aplicaciones y clientes oficiales están enlazados desde wireguard.com.
Paso 8: Verifica el túnel
Activa el túnel en el cliente y luego confirma el handshake en el servidor. Una conexión sana muestra un handshake reciente y contadores de transferencia en aumento.
sudo wg show
Busca una marca de tiempo latest handshake y valores transfer distintos de cero en tu peer. Finalmente, verifica desde el cliente que tu IP pública ahora es la IP del servidor:
curl ifconfig.me
Si eso devuelve la dirección del VPS, tu tráfico fluye a través del túnel y la configuración del VPS con WireGuard está completa. Para agregar más dispositivos, repite los pasos 6 y 7 con un nuevo par de claves y la siguiente dirección en el rango 10.8.0.0/24.
Solucionar problemas de una conexión que no se establece
Si wg show nunca informa un handshake, revisa los sospechosos habituales en orden. Primero, confirma que el puerto esté realmente abierto: desde otra máquina ejecuta nc -uzv <SERVER_PUBLIC_IP> 51820 y verifica que el grupo de seguridad o firewall de tu proveedor permita UDP 51820 entrante, no solo TCP. Segundo, asegúrate de que el reenvío de IP esté realmente habilitado con sysctl net.ipv4.ip_forward — debería devolver 1. Tercero, verifica que el nombre de la interfaz en la regla NAT de PostUp coincida con la salida de ip route list default; una discrepancia es la razón más común de que el tráfico se autentique pero nunca llegue a Internet. Finalmente, verifica que las claves no estén intercambiadas: la configuración del servidor contiene la clave privada del servidor y la clave pública del cliente, mientras que la configuración del cliente refleja ese arreglo. Una sola clave cruzada bloquea silenciosamente el handshake.
Elegir el VPS adecuado para WireGuard
WireGuard en sí es diminuto: el protocolo apenas toca la CPU, por lo que incluso un plan de nivel básico ejecuta una VPN personal de manera cómoda. Lo que realmente da forma a la experiencia es la red: ancho de banda, latencia hacia tu región y si la IP es solo tuya. ApexVPS funciona con vCPU, RAM y almacenamiento NVMe realmente dedicados en 39 ubicaciones, con baja latencia en las principales regiones, por lo que el rendimiento se mantiene predecible en lugar de hundirse bajo vecinos ruidosos.
Si quieres que el túnel viva en una dirección estable y no compartida, se incluye una IPv4 dedicada en los planes Business y Enterprise. Y como la privacidad tiende a ser el punto central de alojar una VPN por ti mismo, vale la pena mencionar cómo te registras: ApexVPS es un VPS sin KYC con registro solo por correo electrónico y pago exclusivamente con criptomonedas a través de OxaPay, aceptando Bitcoin, Ethereum, USDT y más de 30 criptomonedas: no se requiere nombre, dirección, tarjeta de crédito ni cuenta bancaria.
Preguntas frecuentes
¿Es difícil configurar WireGuard en un VPS?
No. WireGuard usa un archivo de configuración pequeño y legible y un puñado de comandos estándar. En un VPS nuevo con Ubuntu o Debian, puedes instalarlo, generar claves, escribir wg0.conf y conectar tu primer cliente en aproximadamente diez a quince minutos.
¿Necesito una IP dedicada para una VPN WireGuard?
Una IP dedicada no es estrictamente necesaria, pero le da a tu túnel un punto final estable que no se comparte con otros clientes. En ApexVPS, se incluye una IPv4 dedicada en el plan Business, y dos en el Enterprise.
¿Qué versiones de Ubuntu y Debian son compatibles con WireGuard?
WireGuard está integrado en el kernel de Linux desde la versión 5.6 en adelante, por lo que Ubuntu 20.04 y posteriores y Debian 11 y posteriores lo incluyen de serie. Solo necesitas instalar las herramientas de espacio de usuario con apt.
¿Puedo usar el mismo servidor en mi teléfono?
Sí. Agrega un segundo peer para el teléfono, genera una configuración de cliente y conviértela en un código QR con qrencode. Las aplicaciones oficiales de WireGuard para Android e iOS escanean el código y se conectan al instante.
¿Puedo pagar el VPS sin tarjeta de crédito?
Sí. El pago de ApexVPS es solo con criptomonedas y acepta Bitcoin, Ethereum, USDT y más de 30 criptomonedas. El registro solo requiere un correo electrónico para enviarte los datos de acceso: sin nombre, dirección ni identificación.