¿Por qué pagar por una VPN comercial cuando puedes tener la tuya propia? Con un VPS y WireGuard, tienes control total sobre tu privacidad.
WireGuard es el protocolo VPN más moderno: rápido, seguro y sorprendentemente fácil de configurar. En 15 minutos tienes tu VPN funcionando.
Esta guía te enseña a montar tu propia VPN en tu VPS paso a paso.
Por qué tu propia VPN
VPN comercial vs VPN propia
| Aspecto | VPN Comercial | VPN Propia |
|---|---|---|
| Confianza | ¿Guardan logs? | Tú controlas |
| Velocidad | Compartida | Dedicada |
| Ubicación | Limitada | Donde quieras |
| Coste mensual | €5-15 | Incluido en VPS |
| Configuración | Fácil | Moderada |
| IP dedicada | Extra €€ | Incluida |
Casos de uso
- Privacidad: Tu tráfico sale desde tu VPS, no desde casa
- Acceso remoto: Conectar a recursos de tu VPS de forma segura
- Bypass geo-restricciones: IP de otro país
- WiFi público: Proteger conexiones en cafeterías, aeropuertos
- Trabajo remoto: Acceso seguro a servicios internos
Por qué WireGuard
Comparativa de protocolos
| Protocolo | Velocidad | Seguridad | Complejidad | Código |
|---|---|---|---|---|
| WireGuard | Excelente | Moderna | Simple | 4.000 líneas |
| OpenVPN | Buena | Probada | Compleja | 100.000+ líneas |
| IPSec | Variable | Probada | Muy compleja | Enorme |
Ventajas de WireGuard
- Rápido: Menos overhead, mejor rendimiento
- Simple: 4.000 líneas de código vs 100.000+ de OpenVPN
- Moderno: Criptografía actual (ChaCha20, Curve25519)
- Integrado: En el kernel de Linux desde 5.6
- Roaming: Cambio de red sin reconectar
Requisitos previos
- VPS con Ubuntu 20.04+ o Debian 11+
- Acceso root o sudo
- Puerto UDP disponible (51820 por defecto)
- Firewall configurado
Instalación en el servidor
Instalar WireGuard
sudo apt update
sudo apt install wireguard -y
Generar claves del servidor
# Crear directorio seguro
sudo mkdir -p /etc/wireguard
cd /etc/wireguard
# Generar par de claves
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
# Asegurar permisos
sudo chmod 600 privatekey
Verificar claves
sudo cat privatekey
# Ejemplo: 4Hh0K1jGxxxxxxxxxxxxxxxxxxxxxxxxxxxxMo=
sudo cat publickey
# Ejemplo: 8Bv2L3kHyyyyyyyyyyyyyyyyyyyyyyyyyyyyyJk=
Configuración del servidor
Crear archivo de configuración
sudo nano /etc/wireguard/wg0.conf
[Interface]
# IP privada del servidor VPN
Address = 10.0.0.1/24
# Puerto de escucha
ListenPort = 51820
# Clave privada del servidor
PrivateKey = TU_CLAVE_PRIVADA_DEL_SERVIDOR
# Reglas de firewall automáticas
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
# Clientes (se añaden después)
# [Peer]
# ...
Nota: Reemplaza eth0 por tu interfaz de red real (ip a para verificar).
Habilitar IP forwarding
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Abrir puerto en firewall
sudo ufw allow 51820/udp
Iniciar WireGuard
# Iniciar
sudo wg-quick up wg0
# Verificar estado
sudo wg show
# Habilitar al arranque
sudo systemctl enable wg-quick@wg0
Configuración de clientes
Generar claves del cliente
En el servidor (o en el cliente):
wg genkey | tee client1-privatekey | wg pubkey | tee client1-publickey
Añadir cliente al servidor
Editar /etc/wireguard/wg0.conf:
[Peer]
# Cliente 1
PublicKey = CLAVE_PUBLICA_DEL_CLIENTE
AllowedIPs = 10.0.0.2/32
Recargar configuración:
sudo wg-quick down wg0
sudo wg-quick up wg0
# O sin reiniciar (añadir peer en caliente)
sudo wg set wg0 peer CLAVE_PUBLICA_DEL_CLIENTE allowed-ips 10.0.0.2/32
Configuración del cliente
Crear archivo en el dispositivo cliente:
Linux/Mac: /etc/wireguard/wg0.conf
Windows: Importar en app WireGuard
Android/iOS: Importar o escanear QR
[Interface]
# IP del cliente en la VPN
Address = 10.0.0.2/24
# Clave privada del cliente
PrivateKey = CLAVE_PRIVADA_DEL_CLIENTE
# DNS (opcional, pero recomendado)
DNS = 1.1.1.1, 8.8.8.8
[Peer]
# Clave pública del servidor
PublicKey = CLAVE_PUBLICA_DEL_SERVIDOR
# IP pública del servidor y puerto
Endpoint = IP_DE_TU_VPS:51820
# Qué tráfico enviar por la VPN
AllowedIPs = 0.0.0.0/0, ::/0
# Mantener conexión activa (importante detrás de NAT)
PersistentKeepalive = 25
Tipos de AllowedIPs
Todo el tráfico (full tunnel):
AllowedIPs = 0.0.0.0/0, ::/0
Solo red interna (split tunnel):
AllowedIPs = 10.0.0.0/24
Acceso a servicios específicos:
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Clientes por plataforma
Linux
sudo apt install wireguard
sudo nano /etc/wireguard/wg0.conf
# Pegar configuración del cliente
sudo wg-quick up wg0
Windows
- Descarga WireGuard para Windows
- Añadir túnel → Importar desde archivo
- Pegar configuración
- Activar
macOS
- Instalar desde App Store o
brew install wireguard-tools - Importar configuración
- Activar
Android
- Instalar WireGuard desde Play Store
- Añadir túnel → Crear desde QR o archivo
- Activar
iOS
- Instalar WireGuard desde App Store
- Añadir túnel → Escanear QR o importar
- Activar
Generar código QR para móviles
sudo apt install qrencode
# Generar QR desde archivo de config
qrencode -t ansiutf8 < client1.conf
# O guardar como imagen
qrencode -o client1-qr.png < client1.conf
Script de instalación automática
Para simplificar, usa un script:
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
sudo ./wireguard-install.sh
El script:
- Instala WireGuard
- Configura el servidor
- Genera configs de clientes
- Crea códigos QR
Añadir múltiples clientes
Estructura recomendada
/etc/wireguard/
├── wg0.conf # Config servidor
├── privatekey # Clave privada servidor
├── publickey # Clave pública servidor
└── clients/
├── client1.conf
├── client2.conf
└── client3.conf
Servidor con múltiples peers
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = CLAVE_SERVIDOR
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
[Peer]
# Móvil personal
PublicKey = CLAVE_MOVIL
AllowedIPs = 10.0.0.2/32
[Peer]
# Portátil trabajo
PublicKey = CLAVE_PORTATIL
AllowedIPs = 10.0.0.3/32
[Peer]
# Tablet
PublicKey = CLAVE_TABLET
AllowedIPs = 10.0.0.4/32
Casos de uso avanzados
Acceso a red interna del VPS
Accede a servicios que solo escuchan en localhost:
# Cliente
AllowedIPs = 10.0.0.0/24
Ahora puedes acceder a 10.0.0.1:3306 (MySQL), 10.0.0.1:6379 (Redis), etc.
Site-to-site VPN
Conectar dos redes (oficina y servidor):
# En servidor VPS
[Peer]
PublicKey = CLAVE_ROUTER_OFICINA
AllowedIPs = 10.0.0.5/32, 192.168.1.0/24
# En router oficina
[Interface]
Address = 10.0.0.5/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
VPN para bypass geo-restricciones
Con VPS en otro país, tu tráfico sale desde esa ubicación.
Ejemplo: VPS en USA para acceder a contenido de USA.
Acceso seguro a WordPress admin
Restringe /wp-admin solo a IPs de la VPN:
location /wp-admin {
allow 10.0.0.0/24;
deny all;
# ... resto de config
}
Seguridad adicional
Cambiar puerto por defecto
[Interface]
ListenPort = 41194
Actualiza firewall y configs de clientes.
Limitar acceso por IP
En el firewall, permite el puerto solo desde IPs conocidas:
sudo ufw allow from 203.0.113.0/24 to any port 51820
Deshabilitar IPv6 si no lo usas
[Interface]
Address = 10.0.0.1/24
# Sin dirección IPv6
Logs y monitorización
# Ver estado
sudo wg show
# Ver conexiones activas
sudo wg show wg0 latest-handshakes
# Logs del sistema
sudo journalctl -u wg-quick@wg0
Troubleshooting
No conecta
- Verificar firewall:
sudo ufw status - Verificar WireGuard activo:
sudo wg show - Verificar IP forwarding:
cat /proc/sys/net/ipv4/ip_forward(debe ser 1) - Verificar interfaz de red:
ip a(¿eth0, ens3, otro?)
Conecta pero sin internet
- Verificar reglas NAT:
sudo iptables -t nat -L - Verificar PostUp/PostDown en wg0.conf
- Interfaz correcta en POSTROUTING (eth0, ens3, etc.)
Conexión lenta
- MTU: Añadir a [Interface] del cliente:
MTU = 1420 - Servidor sobrecargado: Verificar recursos
Handshake pero sin tráfico
# Verificar AllowedIPs
sudo wg show wg0
# Debe mostrar "allowed ips" correctos para cada peer
Comparativa: WireGuard vs OpenVPN
| Aspecto | WireGuard | OpenVPN |
|---|---|---|
| Velocidad | ~400+ Mbps | ~100-200 Mbps |
| Latencia | Muy baja | Moderada |
| Configuración | Simple | Compleja |
| Auditoría | Fácil (poco código) | Difícil |
| Soporte | Kernel Linux | Userspace |
| Protocolo | UDP | TCP o UDP |
Veredicto: WireGuard para nuevas instalaciones. OpenVPN si necesitas TCP (redes restrictivas).
Rendimiento esperado
| VPS | Velocidad VPN típica |
|---|---|
| 1 core | 200-400 Mbps |
| 2 cores | 400-600 Mbps |
| 4+ cores | 600+ Mbps |
WireGuard es muy eficiente. Un VPS básico puede saturar conexiones de 1 Gbps.
Preguntas frecuentes
¿Es legal tener mi propia VPN?
Sí, en la mayoría de países. La VPN es solo una herramienta de privacidad.
¿Cuántos clientes puede manejar?
Un VPS pequeño puede manejar decenas de clientes sin problema. El límite es el ancho de banda.
¿Afecta al rendimiento del VPS?
Mínimamente. WireGuard es muy eficiente. Solo notarás impacto con mucho tráfico.
¿Puedo usar la misma config en varios dispositivos?
No recomendado. Cada dispositivo debe tener su propio par de claves e IP.
Nuestra recomendación
Para uso personal: WireGuard con el script automático. En 5 minutos tienes VPN funcionando.
Para múltiples usuarios: Configura manualmente con estructura organizada de clientes.
¿Quieres VPN sin complicarte? Los VPS de Avantys con administración gestionada pueden incluir configuración VPN profesional.
Conclusión
Tu propia VPN con WireGuard es rápida, segura y sorprendentemente fácil de configurar. En 15 minutos tienes privacidad real sin depender de terceros.
No necesitas pagar por VPNs comerciales. Con tu VPS ya tienes todo lo necesario.
¿Quieres un VPS para tu VPN personal? Explora los VPS de Avantys con IP dedicada incluida.
Guías relacionadas
- Firewall en VPS: UFW e iptables
- Securizar un VPS Linux
- SSL con Let’s Encrypt
- Primeros pasos con tu VPS
¿Quieres la guía completa con todos los casos de uso?
¿Quieres que lo hagamos por ti?
En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.