Reenvío de puertos – Guía de WireGuard
Reenvío de puertos
Todas las configuraciones de WireGuard creadas con el generador de configuraciones admiten el reenvío de puertos. Hay dos formas de usarlo:
- Manual: en la página de WireGuard, abre el menú ⋮ junto a tu configuración y elige Reenvío de puertos. Te asignamos un puerto público que reenvía al puerto que elijas en tu dispositivo.
- Automático (NAT-PMP): aplicaciones como gluetun y qBittorrent solicitan un puerto por sí mismas mientras están conectadas. No hay nada que configurar en el sitio web.
Cómo funciona el reenvío de puertos automático
- Nosotros asignamos el puerto público (entre 30000 y 65000). No se puede solicitar un puerto público concreto.
- Cada asignación reenvía TCP y UDP en el mismo puerto público.
- Tu aplicación renueva la asignación periódicamente. Si deja de renovarla (por ejemplo, porque te desconectas), el reenvío se elimina automáticamente al cabo de una hora aproximadamente.
- El puerto asignado suele mantenerse mientras tu aplicación siga renovándolo, pero puede cambiar tras reiniciar el contenedor o volver a conectarte.
- Los reenvíos automáticos aparecen en la página de WireGuard con la etiqueta automático y cuentan para los 10 reenvíos de puertos de tu cuenta.
gluetun
- 1. Crea una configuración en la página de WireGuard y descarga el archivo .conf.
- 2. Averigua la dirección IP del servidor: toma el nombre de host de la línea Endpoint de tu .conf (por ejemplo, ca1-1.btguard.com) y resuélvelo:
nslookup ca1-1.btguard.com
gluetun necesita una dirección IP en VPN_ENDPOINT_IP; no acepta nombres de host. - 3. Usa este servicio de docker-compose y rellena los valores de tu archivo .conf:
services:
gluetun:
image: qmcgaw/gluetun:latest
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
# values from your BTGuard .conf file:
- WIREGUARD_PRIVATE_KEY= # PrivateKey under [Interface]
- WIREGUARD_ADDRESSES= # Address under [Interface]
- VPN_DNS_ADDRESS= # DNS under [Interface]
- WIREGUARD_PUBLIC_KEY= # PublicKey under [Peer]
- VPN_ENDPOINT_IP= # IP of the Endpoint host (step 2)
- VPN_ENDPOINT_PORT=444 # number after the : in Endpoint
- 4. ¿Por qué "protonvpn"? gluetun llama a su código de reenvío de puertos NAT-PMP por el nombre de ProtonVPN; BTGuard usa el mismo protocolo estándar, así que este ajuste funciona tal cual.
- 5. Inicia el contenedor. El registro de gluetun muestra el puerto asignado, que también se escribe en /tmp/gluetun/forwarded_port dentro del contenedor. Configura la aplicación que hay detrás de gluetun para que escuche en ese puerto, o usa la configuración de gluetun + qBittorrent que aparece más abajo para enviar el puerto automáticamente.
gluetun + qBittorrent (recomendado)
qBittorrent no lee por sí solo el archivo de puerto de gluetun. Usa el comando up de gluetun (VPN_PORT_FORWARDING_UP_COMMAND) para enviar el puerto asignado a qBittorrent cada vez que NAT-PMP crea o renueva la asignación, incluso después de un reinicio en el que el puerto puede cambiar.
- 1. Ejecuta qBittorrent en el espacio de nombres de red de gluetun (
network_mode: service:gluetun). - 2. En qBittorrent, en Opciones → Interfaz Web, activa Omitir autenticación para clientes en localhost para que gluetun pueda acceder a la API sin credenciales.
- 3. Añade a gluetun los comandos up/down de abajo. Cambia
8080si la interfaz web de qBittorrent escucha en otro puerto.
services:
gluetun:
image: qmcgaw/gluetun:latest
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 8080:8080/tcp # qBittorrent Web UI (optional, for your browser)
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
- VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":{{PORT}},\"current_network_interface\":\"{{VPN_INTERFACE}}\",\"random_port\":false,\"upnp\":false}" http://127.0.0.1:8080/api/v2/app/setPreferences'
- VPN_PORT_FORWARDING_DOWN_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" http://127.0.0.1:8080/api/v2/app/setPreferences'
# values from your BTGuard .conf file:
- WIREGUARD_PRIVATE_KEY=
- WIREGUARD_ADDRESSES=
- VPN_DNS_ADDRESS=
- WIREGUARD_PUBLIC_KEY=
- VPN_ENDPOINT_IP=
- VPN_ENDPOINT_PORT=444
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
network_mode: service:gluetun
depends_on:
- gluetun
environment:
- PUID=1000
- PGID=1000
- WEBUI_PORT=8080
volumes:
- ./qbittorrent/config:/config
- ./downloads:/downloads
- 4. El comando up se ejecuta cada vez que gluetun obtiene un puerto reenviado. Establece el puerto de escucha de qBittorrent en
{{PORT}}, lo vincula a la interfaz de la VPN y desactiva el puerto aleatorio y UPnP para que qBittorrent no anule la asignación. - 5. El comando down borra el puerto de escucha cuando se detiene el reenvío (ayuda a que qBittorrent se recupere correctamente tras una desconexión).
- 6. Consulta el registro de gluetun para ver el puerto asignado y comprueba que qBittorrent muestra el mismo puerto en Opciones → Conexión. El reenvío también aparece en la página de WireGuard con la etiqueta automático.
qBittorrent (ejecutándose directamente en tu dispositivo)
Si WireGuard se ejecuta en tu equipo sin gluetun, qBittorrent puede solicitar un puerto por sí mismo:
- 1. Conéctate con tu configuración de WireGuard de BTGuard.
- 2. En Opciones → Avanzado, establece Interfaz de red en tu interfaz de WireGuard para que todo el tráfico pase por la VPN.
- 3. En Opciones → Conexión, activa Usar reenvío de puertos UPnP / NAT-PMP de mi router. qBittorrent solicita un puerto automáticamente; el puerto asignado aparece en su registro y en la página de WireGuard.