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
sshintegrado 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.
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
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
eth0en 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 --systemy comprueba quecat /proc/sys/net/ipv4/ip_forwarddevuelve1. - Firewall del proveedor. Algunos hosts tienen su propio firewall en un panel de control ademas de
ufw. Asegurate de que el puerto UDP51820tambien 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
timedatectly 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.
Es legal tener tu propia VPN?
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.
/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.