Saltar al contenido principal

WireGuard con Docker

Este tutorial muestra cómo levantar el lado del ISP de la VPN WireGuard en un contenedor Docker, usando la imagen linuxserver/wireguard, después de haber creado la VPN en Cpehub.

Requisitos previos

Marque los elementos a medida que los vaya confirmando — esto es solo un apoyo visual, así que recargar la página los desmarca de nuevo.

  • La VPN ya fue creada en Cpehub (usted tiene la clave pública de Cpehub, el endpoint y las IPs del túnel).
  • Docker y Docker Compose instalados en el host.
  • El host tiene acceso a las redes internas del ISP (OLTs).

1. Estructura

wireguard-cpehub/
├── docker-compose.yml
└── config/
└── wg_confs/
└── wg-cpehub.conf

2. docker-compose.yml

services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard-cpehub
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=America/Sao_Paulo
volumes:
- ./config:/config
- /lib/modules:/lib/modules
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
# Use host network si el contenedor necesita enrutar hacia la LAN del ISP:
# network_mode: host

3. config/wg_confs/wg-cpehub.conf

[Interface]
PrivateKey = <SU_CLAVE_PRIVADA>
Address = <IP_DEL_TUNEL_DEL_ISP>/32

[Peer]
PublicKey = <CLAVE_PUBLICA_DE_CPEHUB>
Endpoint = <ENDPOINT_DE_CPEHUB>:<PUERTO>
AllowedIPs = <RED_DE_CPEHUB>/32
PersistentKeepalive = 25

Genere el par de claves (si aún no lo tiene) con:

docker run --rm lscr.io/linuxserver/wireguard:latest sh -c 'wg genkey | tee /dev/stderr | wg pubkey'

La clave pública va en el registro de la VPN en Cpehub; la privada va en wg-cpehub.conf.

4. Levante el contenedor

docker compose up -d

5. Verifique

docker exec wireguard-cpehub wg show

Busque un latest handshake reciente.

Enrutamiento hacia la LAN

Para que Cpehub alcance las OLTs, el tráfico del túnel debe llegar a su red interna. En muchos escenarios es necesario usar network_mode: host (o publicar rutas del host), además de garantizar ip_forward. Ajuste según su topología.

Problemas comunes

SíntomaCausa probableSolución
Sin handshakeEndpoint/clave incorrectos o puerto bloqueadoRevise Endpoint, claves y firewall
Handshake OK pero no alcanza la OLTEl contenedor no enruta hacia la LANUse network_mode: host / ajuste rutas
Falta SYS_MODULE/móduloKernel sin el módulo wireguardInstale wireguard en el host o use un kernel reciente

Vea también