Tabla de Contenidos

WireGuard

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.


docker-compose.yml

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

Archivo de configuración

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

Acceso mediante VPN

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.