WireGuard es un servicio de VPN que permite crear conexiones seguras y cifradas entre dispositivos y el servidor. Permite acceder de forma remota a la red local del servidor, protegiendo la comunicación y facilitando el acceso a servicios internos como si estuviéramos dentro de la red local.
El archivo docker-compose.yml se compone de la siguiente manera:
services: wireguard: image: lscr.io/linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE #optional environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - SERVERURL=TUSUBDOMINIO.TUDOMINIO.com.ar - SERVERPORT=51820 #optional - PEERS=3 # Cantidad de conexiones - PEERDNS=8.8.8.8 #optional - INTERNAL_SUBNET=10.13.13.0 #optional - ALLOWEDIPS=0.0.0.0/0 #optional - PERSISTENTKEEPALIVE_PEERS= #optional - LOG_CONFS=true #optional volumes: - ./path/to/wireguard/config:/config - ./lib/modules:/lib/modules #optional ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped networks: - net_backend - net_vpn # Red propia del túnel VPN #################### # Redes definidas #################### networks: net_backend: external: true net_vpn: driver: bridge
Para conectarnos a la VPN, necesitamos un archivo de configuración que contiene toda la información necesaria para que nuestro dispositivo pueda establecer la conexión segura con el servidor.
Dentro de este archivo se incluyen:
Claves públicas y privadas: Cada peer (dispositivo que se conecta a la VPN) tiene un par de claves único.
Para obtener éste archivo de configuración nos dirigimos al path:
./path/to/wireguard/config/peerN
Donde N es el número de peer, por ejemplo, 1.
Dentro de esa ruta, descargamos el archivo:
peerN.conf
Para poder conectarnos a la VPN necesitamos:
Así, nuestro equipo estará conectado de forma segura a la red del servidor, pudiendo acceder a servicios internos como si estuviéramos físicamente dentro de la red local. Ahora, podemos conectarnos por SSH a través de la IP privada del servidor y el puerto 22.