Como configurar tu propia VPN WireGuard en un VPS

Dificultad: Principiante 9 min de lectura Actualizado: 18.07.2026 11
Como configurar tu propia VPN WireGuard en un VPS
Alquilar un VPS barato y convertirlo en tu propia VPN WireGuard te da un tunel privado que nadie mas comparte - sin suscripcion mensual, sin ninguna empresa registrando tu trafico. Esta guia recorre todo el proceso en un servidor Ubuntu nuevo, paso a paso, con cada comando que necesitas para copiar y pegar. No se requiere experiencia previa con servidores.

Lo que necesitas antes de empezar

Esta es toda la lista de la compra. No hay nada exotico aqui, y el coste total es de unos pocos dolares al mes:

  • Un VPS (servidor virtual) barato. El nivel mas pequeno - 1 vCPU y 1 GB de RAM - es mas que suficiente para uso personal. Elige Ubuntu 22.04 o 24.04 cuando lo crees.
  • La direccion IP publica del servidor y acceso SSH como root (o sudo). Tu proveedor te envia estos datos por correo justo despues de pagar.
  • Un cliente SSH. En Windows usa el ssh integrado en PowerShell o PuTTY, en macOS y Linux basta con abrir una terminal.
  • Un VPS basado en KVM. Casi todos los planes lo son, pero evita los mas baratos de tipo OpenVZ - comparten el kernel del host y no pueden cargar WireGuard, asi que esta configuracion no funcionara ahi. Si tienes dudas, pregunta al proveedor o elige un plan que diga "KVM".
  • Unos 15 minutos.
Por que WireGuard: es el protocolo VPN moderno - unos pocos cientos de lineas de codigo, muy rapido y sencillo de configurar. Comparado con OpenVPN, conecta mas rapido, consume menos bateria en el movil y es mucho mas facil de leer y auditar. Esa simplicidad es exactamente por lo que empezamos aqui.

Paso 1: Conecta y actualiza el servidor

Abre tu terminal e inicia sesion, reemplazando la direccion por la IP de tu servidor:

ssh root@YOUR_SERVER_IP

Lo primero en cualquier servidor nuevo es instalar las ultimas actualizaciones de seguridad:

apt update && apt upgrade -y

Paso 2: Instala WireGuard

Un solo comando instala WireGuard y qrencode, una pequena herramienta que usaremos mas adelante para pasar la configuracion a tu telefono como codigo QR:

apt install wireguard qrencode -y

Paso 3: Genera las claves del servidor

WireGuard usa una clave privada y una publica en cada lado. Crea el par del servidor dentro de su directorio de configuracion. El umask 077 asegura que la clave privada no sea legible por otros usuarios:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Muestra ambas claves y tenlas a mano para los siguientes pasos:

cat server_private.key
cat server_public.key

Paso 4: Encuentra tu interfaz de red

Para enrutar tu trafico hacia internet, el servidor necesita saber el nombre de su tarjeta de red publica. Ejecuta:

ip route list default

Fijate en la palabra justo despues de dev en la salida - suele ser eth0 o ens3. Apuntala; la necesitaremos en el siguiente paso.

Paso 5: Crea la configuracion del servidor

Crea el archivo /etc/wireguard/wg0.conf (por ejemplo con nano /etc/wireguard/wg0.conf) y pega el bloque de abajo. Reemplaza SERVER_PRIVATE_KEY por la clave privada del Paso 3, y reemplaza eth0 por el nombre de la interfaz del Paso 4:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

En palabras sencillas: el servidor toma la direccion 10.8.0.1 dentro de una red VPN privada, escucha en el puerto UDP 51820, y las dos lineas de iptables activan el enmascaramiento que permite a tus dispositivos alcanzar internet a traves de el.

Paso 6: Activa el reenvio de IP

Por defecto Linux no pasa trafico de una interfaz a otra. Activalo con su propio archivo de configuracion pequeno - una forma limpia y repetible que no chocara con otros ajustes ni se acumulara si lo ejecutas dos veces:

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-wireguard.conf
sysctl --system

Paso 7: Crea un cliente y agregalo como peer

Ahora genera un par de claves para tu primer dispositivo (tu portatil o telefono):

wg genkey | tee client_private.key | wg pubkey > client_public.key
cat client_private.key
cat client_public.key

Informa al servidor sobre este cliente agregando un bloque [Peer] al final de /etc/wireguard/wg0.conf. Usa aqui la clave publica del cliente:

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Paso 8: Abre el firewall y arranca WireGuard

Permite SSH (para no bloquearte a ti mismo) y el puerto de WireGuard, luego activa el firewall:

ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
Comprueba primero tu puerto SSH. Si tu proveedor puso SSH en un puerto no estandar (no el 22), permite ese puerto en su lugar - por ejemplo ufw allow 2222/tcp - antes de ejecutar ufw enable, de lo contrario el firewall te dejara fuera de tu propio servidor.

Arranca el tunel y configuralo para que se inicie automaticamente en cada reinicio:

systemctl enable --now wg-quick@wg0

Comprueba que esta funcionando - deberias ver la interfaz y tu puerto de escucha:

wg show

Paso 9: Crea la configuracion del cliente

Cada dispositivo que se conecta necesita un pequeno archivo de configuracion. En el servidor, crea un archivo llamado client.conf y rellena CLIENT_PRIVATE_KEY (del Paso 7), SERVER_PUBLIC_KEY (del Paso 3) y la IP publica de tu servidor:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

La linea AllowedIPs = 0.0.0.0/0, ::/0 es la que envia todo tu trafico a traves del tunel. Configurar DNS = 1.1.1.1 evita que tus consultas se filtren a tu proveedor local. Este mismo client.conf es el que cargas en cada dispositivo mas abajo.

Paso 10: Instala la aplicacion de WireGuard y conecta

WireGuard tiene una aplicacion oficial gratuita para cada plataforma. Hay dos formas de cargar tu client.conf: escanear un codigo QR (lo mas facil en telefonos) o importar el archivo (lo mas facil en ordenadores). Para crear un codigo QR, ejecuta esto en el servidor y manten la ventana de la terminal ancha para que el codigo no se distorsione:

qrencode -t ansiutf8 < client.conf

Android: instala la aplicacion de WireGuard desde Google Play. Abre la aplicacion, toca el boton +, elige Scan from QR code, apunta la camara al codigo en tu terminal, dale un nombre al tunel y luego activa el interruptor para conectar.

iPhone e iPad: instala la aplicacion de WireGuard desde la App Store. Toca +, elige Create from QR code, escanea el codigo, nombra el tunel y activalo. Permite la configuracion VPN cuando iOS lo pida.

Windows: descarga la aplicacion desde wireguard.com/install. Copia tu client.conf al PC, abre la aplicacion, haz clic en Import tunnel(s) from file, elige client.conf y luego haz clic en Activate.

macOS: instala la aplicacion de WireGuard desde la Mac App Store. Haz clic en Import tunnel(s) from file, selecciona tu client.conf, permite la configuracion VPN y luego haz clic en Activate.

Linux de escritorio: instala el paquete con apt install wireguard (o el equivalente de tu distribucion; consulta wireguard.com/install), copia client.conf a /etc/wireguard/ y activalo con wg-quick up client. Desconecta con wg-quick down client.

Anadir otro dispositivo? Repite el Paso 7 para cada nuevo telefono o portatil: genera un par de claves nuevo, dale al dispositivo la siguiente direccion libre (10.8.0.3/32, luego 10.8.0.4/32, y asi sucesivamente), agrega su propio bloque [Peer] a wg0.conf y aplica el cambio con systemctl restart wg-quick@wg0. Dale a cada dispositivo su propia clave - nunca cargues una misma configuracion en dos dispositivos a la vez.

Paso 11: Verifica que el tunel funciona de verdad

Activa la conexion y comprueba dos cosas en nuestra pagina Herramientas de red. Primero, que internet vea la IP de tu servidor y no la de tu casa - la pagina muestra tu IP actual y tu pais en la parte superior. Segundo, abre la pestana DNS Leak Test y ejecuta la prueba: cada resolutor que aparezca debe pertenecer a tu proveedor de DNS, nunca a tu ISP domestico. Si ambas cosas cuadran, tienes una VPN privada que funciona.

Errores comunes

  • Nombre de interfaz incorrecto. Si eth0 en la configuracion no coincide con lo que mostro el Paso 4, el trafico conectara pero nunca llegara a internet. Esta es la causa numero uno de un tunel "conectado pero sin internet".
  • Olvidar el reenvio de IP. Saltarse el Paso 6 produce el mismo sintoma de callejon sin salida. Vuelve a ejecutar sysctl --system y comprueba que cat /proc/sys/net/ipv4/ip_forward devuelve 1.
  • Firewall del proveedor. Algunos hosts tienen su propio firewall en un panel de control ademas de ufw. Asegurate de que el puerto UDP 51820 tambien este abierto alli.
  • Claves confundidas. La configuracion del servidor contiene la clave publica del cliente; la configuracion del cliente contiene la clave publica del servidor. Las claves privadas nunca salen de la maquina en la que se crearon.
  • IPv6 que se escapa. Esta guia envia IPv6 al tunel (::/0) pero configura el servidor solo para IPv4, asi que algunos sitios exclusivos de IPv6 pueden cargar lentamente o no cargar. Si eso ocurre, lo mas sencillo es desactivar IPv6 en el dispositivo cliente, o agregar soporte de IPv6 en el servidor mas adelante.
  • Desfase del reloj. WireGuard funciona bien, pero si el reloj del servidor esta muy desajustado, el TLS a los sitios web se rompe. Ejecuta timedatectl y activa NTP si es necesario.

Cuando WireGuard por si solo no basta

Un tunel WireGuard autoalojado es excelente para la privacidad - tu trafico esta cifrado y ligado a un servidor que solo tu usas. Pero en paises con censura agresiva tiene una debilidad: los sistemas de inspeccion profunda de paquetes (DPI) pueden reconocer el trafico de WireGuard por su huella y ralentizarlo o descartarlo, aunque no puedan leer lo que hay dentro. Los operadores de Rusia, por ejemplo, han pasado a bloquear las VPN en las cajas TSPU instaladas en cada red, y los reguladores de alli han impulsado abiertamente el bloqueo total del trafico VPN. Si tu objetivo es esquivar ese tipo de DPI mas que la privacidad cotidiana, un protocolo que se disfraza de HTTPS ordinario - como VLESS con Reality - es la mejor herramienta. Cubriremos esa configuracion en una guia aparte en esta seccion.

En la mayor parte del mundo, alquilar un servidor y ejecutar tu propia VPN en el es completamente legal - es la misma tecnologia que las empresas usan para el trabajo remoto. Sin embargo, eres responsable de lo que hagas a traves de ella: una VPN cambia el lugar desde el que parece venir tu trafico, no te pone por encima de la ley. Un punado de paises restringen o exigen licencia para el uso de VPN, asi que revisa las reglas del lugar donde realmente vives. Y recuerda los limites honestos del autoalojamiento: tu trafico es privado frente a tu red local y tu ISP, pero la empresa que te alquila el VPS todavia puede ver que existe un servidor en esa IP y cuantos datos mueve. Para la mayoria de la gente ese intercambio vale mucho la pena - obtienes un tunel que nadie mas comparte, en tus terminos.

Que siga siendo tuyo: haz una copia de seguridad de /etc/wireguard/ en un lugar seguro, nunca compartas una clave privada y crea un bloque [Peer] separado con su propio par de claves para cada dispositivo nuevo en lugar de reutilizar uno. Si pierdes un dispositivo, podras revocar solo ese peer. Una vez configurado un dispositivo, borra los archivos de cliente que queden en el servidor para que su clave privada no se quede rondando: rm client.conf client_private.key.
Para ir mas alla: quieres que tu servidor no guarde ningun registro? Consulta nuestra guia Como hacer que tu VPS no guarde logs.
Etiquetas: wireguard vpn vps self-hosted privacy tutorial linux