Files
Eduardo David Paredes Vara 8b1525f2c9 wireguard torrent
2026-04-05 23:54:10 +00:00
..
2026-04-05 23:54:10 +00:00
2026-02-17 08:57:58 +00:00

WireGuard - VPN Rápida y Segura

WireGuard es una VPN moderna, rápida y segura. Este stack usa wg-easy para gestión simplificada de clientes.

📋 Descripción

Este stack despliega WireGuard con:

  • Interfaz web para gestión de clientes (wg-easy)
  • Generación automática de configuraciones de clientes
  • Códigos QR para configuración móvil rápida
  • Panel web protegido con Authentik
  • Puerto UDP para el túnel VPN

🚀 Despliegue

Prerequisitos

  1. Red Docker: Asegúrate de que la red proxy existe
  2. Registro DNS: Configura el registro A para tu dominio WireGuard
  3. Puerto UDP: El puerto UDP debe estar abierto en el firewall (por defecto 51820)
  4. Kernel modules: El servidor debe soportar WireGuard

Verificar Soporte WireGuard

# Verificar módulo WireGuard
lsmod | grep wireguard

# O intentar cargarlo
sudo modprobe wireguard

# Si falla, instala wireguard-tools
sudo dnf install wireguard-tools  # Fedora/RHEL
sudo apt install wireguard         # Debian/Ubuntu

Desde Portainer

  1. Ve a StacksAdd stack
  2. Nombre: wireguard
  3. Selecciona Repository o Git repository
  4. Configura:
    • Repository URL: <tu-repositorio>
    • Repository reference: main
    • Compose path: wireguard/docker-compose.yml
  5. Carga el archivo de variables de entorno: wireguard/stack.env
  6. Haz clic en Deploy the stack

Variables de Entorno

Edita el archivo stack.env:

# Imagen
WG_EASY_IMAGE=ghcr.io/wg-easy/wg-easy:latest

# Dominio o IP pública del servidor
WG_HOST=vpn.tudominio.com

# Puerto UDP de WireGuard (debe estar abierto en el firewall)
WG_PORT=51820
WG_UDP_PORT=51820

# Puerto HTTP de la UI (interno)
WG_UI_PORT=51821

# Credenciales iniciales para la UI
INIT_ENABLED=true
INIT_USERNAME=admin
INIT_PASSWORD=tu-password-seguro

# Desactivar IPv6 (si el servidor no lo soporta)
DISABLE_IPV6=true

# Rutas
WG_DATA_PATH=/opt/wireguard/data
WG_MODULES_PATH=/lib/modules

# Dominio de la UI
WG_DOMAIN=vpn-admin.tudominio.com

# Traefik
TRAEFIK_DOCKER_NETWORK=proxy
TRAEFIK_ENTRYPOINT_SECURE=websecure
TRAEFIK_CERTRESOLVER=letsencrypt
TRAEFIK_AUTH_MIDDLEWARE=ths-authentik@docker

⚠️ Importante:

  • Cambia INIT_PASSWORD por una contraseña segura
  • Usa tu dominio o IP pública en WG_HOST

Abrir Puerto UDP en el Firewall

# Firewalld (Fedora/RHEL)
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --reload

# UFW (Ubuntu/Debian)
sudo ufw allow 51820/udp

# iptables
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

⚙️ Configuración Post-Instalación

1. Acceso al Panel Web

  1. Accede a https://vpn-admin.tudominio.com
  2. Si configuraste Authentik, serás redirigido al SSO
  3. Inicia sesión con las credenciales configuradas en INIT_USERNAME y INIT_PASSWORD

2. Crear Cliente VPN

  1. En el panel web, haz clic en + Add Client
  2. Nombre del cliente: mi-laptop, mi-movil, etc.
  3. El cliente se crea automáticamente con:
    • Par de claves pública/privada
    • IP asignada dentro del túnel VPN
    • Configuración completa

3. Configurar Cliente

Móvil (Android/iOS)

  1. Instala la app WireGuard desde Play Store o App Store
  2. En el panel web, haz clic en el icono QR del cliente
  3. Escanea el código QR con la app
  4. Activa el túnel VPN

Windows/Mac/Linux Desktop

Opción A: Escanear QR
  1. Descarga WireGuard desde wireguard.com
  2. Instala la aplicación
  3. Haz clic en Import tunnel(s) from QR code
  4. Escanea el QR del panel web con tu webcam
Opción B: Descargar archivo de configuración
  1. En el panel web, haz clic en el icono Download del cliente
  2. Guarda el archivo .conf
  3. En WireGuard app, haz clic en Import tunnel(s) from file
  4. Selecciona el archivo .conf
Opción C: Configuración manual

Copia la configuración del panel web:

[Interface]
PrivateKey = tu_clave_privada
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = clave_publica_servidor
PresharedKey = clave_compartida
Endpoint = vpn.tudominio.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Guarda como cliente.conf y carga en WireGuard.

4. Verificar Conexión

Una vez activado el túnel:

# Verificar IP pública (debe ser la de tu servidor VPN)
curl ifconfig.me

# Ping al servidor VPN (IP interna)
ping 10.8.0.1

# Verificar DNS
nslookup google.com

🔧 Configuración Avanzada

Rutear Solo Tráfico Específico (Split Tunneling)

Por defecto, WireGuard enruta TODO el tráfico (AllowedIPs = 0.0.0.0/0).

Para rutear solo ciertos rangos:

  1. Descarga el archivo .conf del cliente
  2. Edita AllowedIPs:
    AllowedIPs = 10.8.0.0/24, 192.168.1.0/24
    
  3. Importa el archivo modificado en el cliente

Ejemplos:

  • Solo red VPN: 10.8.0.0/24
  • Red VPN + red local del servidor: 10.8.0.0/24, 192.168.1.0/24
  • Todo excepto red local del cliente: 0.0.0.0/1, 128.0.0.0/1

Cambiar Rango de IPs de la VPN

Por defecto usa 10.8.0.0/24. Para cambiar:

  1. Detén el stack
  2. Edita /opt/wireguard/data/wireguard.conf
  3. Cambia:
    [Interface]
    Address = 10.9.0.1/24
    
  4. Actualiza también en cada cliente
  5. Reinicia el stack

Usar DNS Personalizado

Para que los clientes usen tu AdGuard Home:

  1. En el panel web, ve a Settings
  2. Cambia DNS a la IP de tu servidor (ej: 192.168.1.10)
  3. O edita manualmente en cada archivo .conf:
    DNS = IP-de-tu-AdGuard
    

Limitar Ancho de Banda

No soportado directamente por wg-easy, pero puedes usar tc en el servidor:

# Limitar a 10 Mbps
sudo tc qdisc add dev wg0 root tbf rate 10mbit burst 32kbit latency 400ms

Configurar Post-Up/Post-Down Scripts

Para ejecutar scripts al iniciar/detener el túnel:

Edita /opt/wireguard/data/wireguard.conf:

[Interface]
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT

🛠️ Troubleshooting

No puedo conectar al VPN

  1. Verifica que el puerto UDP está abierto:

    sudo netstat -tulpn | grep 51820
    nc -zuv vpn.tudominio.com 51820
    
  2. Verifica que WireGuard está corriendo:

    docker logs wg-easy
    
  3. Verifica que el módulo WireGuard está cargado:

    lsmod | grep wireguard
    
  4. Verifica la configuración del cliente (especialmente Endpoint)

Conecta pero no hay Internet

  1. Verifica que el forwarding está habilitado en el servidor:

    cat /proc/sys/net/ipv4/ip_forward  # Debe ser 1
    
  2. Verifica las reglas de iptables:

    sudo iptables -L -v -n
    
  3. Verifica la configuración de NAT en wg-easy

Panel web no accesible

  1. Verifica que está corriendo:

    docker ps | grep wg-easy
    
  2. Verifica los logs:

    docker logs wg-easy
    
  3. Verifica Traefik:

    docker logs traefik | grep wg
    

Error "Cannot find device wg0"

El módulo WireGuard no está cargado:

# Intentar cargar
sudo modprobe wireguard

# Si falla, instalar
sudo dnf install wireguard-tools  # Fedora/RHEL
sudo apt install wireguard         # Debian/Ubuntu

Clientes se desconectan frecuentemente

  1. Aumenta PersistentKeepalive en la configuración del cliente:

    PersistentKeepalive = 25
    
  2. Verifica el MTU (puede ser muy alto para tu red):

    MTU = 1280
    

IPv6 causa problemas

Desactiva IPv6 en stack.env:

DISABLE_IPV6=true

Y reinicia el stack.

📚 Recursos Adicionales

🔒 Seguridad

  • Cifrado: WireGuard usa criptografía moderna (ChaCha20, Curve25519)
  • Panel web: Protegido con Authentik (SSO)
  • Claves: Cada cliente tiene su par de claves único
  • PresharedKey: Capa adicional de seguridad cuántica
  • Firewall: Solo el puerto UDP de WireGuard debe estar abierto

Best Practices

  1. Cambia la contraseña del panel web
  2. Usa Authentik para proteger el panel
  3. Limita IPs si solo necesitas acceso desde ciertos rangos
  4. Revoca clientes cuando ya no los uses
  5. Haz backups de /opt/wireguard/data/

💾 Backups

# Backup de configuraciones
sudo tar -czf wireguard-backup-$(date +%Y%m%d).tar.gz /opt/wireguard/data/

# Restaurar
sudo tar -xzf wireguard-backup-YYYYMMDD.tar.gz -C /
docker restart wg-easy

Importante: Guarda los backups de forma segura. Contienen las claves privadas.

🔄 Actualizaciones

  1. Haz backup de /opt/wireguard/data/
  2. Actualiza en stack.env:
    WG_EASY_IMAGE=ghcr.io/wg-easy/wg-easy:latest
    
  3. Actualiza el stack en Portainer
  4. Verifica que los clientes siguen conectando

📊 Monitoreo

Ver Clientes Conectados

En el panel web, verás:

  • Clientes activos (verde)
  • Última conexión
  • Transferencia de datos
  • IP asignada

Ver Stats del Túnel

# Desde el servidor
docker exec wg-easy wg show

# Ver configuración
docker exec wg-easy cat /etc/wireguard/wg0.conf

# Ver logs
docker logs -f wg-easy

🎯 Casos de Uso

Acceso Remoto Seguro

Accede a tu red doméstica desde cualquier lugar:

  • Administra servidores
  • Accede a servicios internos
  • Usa impresoras de red

Protección en Redes Públicas

Usa WireGuard en WiFi públicas para:

  • Cifrar todo el tráfico
  • Evitar ataques Man-in-the-Middle
  • Proteger tus datos

Bypass de Restricciones Geográficas

Usa la IP de tu servidor para:

  • Acceder a contenido local
  • Evitar censura
  • Mantener tu IP original

Combinar con AdGuard

Configura los clientes VPN para usar tu AdGuard Home:

  • Bloqueo de anuncios en móvil
  • Protección contra rastreadores
  • DNS filtrado incluso fuera de casa