====== 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. * La **clave privada** permanece en el dispositivo y nunca se comparte. * La **clave pública** se registra en el servidor para autenticar la conexión del peer. * **Subred interna:** Define el rango de direcciones IP privadas que la VPN utilizará para los peers. Esto permite que los dispositivos se comuniquen entre sí y con el servidor de manera segura. * **Información de los peers:** Contiene los datos necesarios para que el servidor identifique y permita la conexión del dispositivo (por ejemplo, dirección IP asignada dentro de la VPN y clave pública correspondiente). 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: * Instalar el cliente de **WireGuard** en nuestro escritorio o aplicación móvil * Importar el archivo **peerN.conf** en nuestra aplicación de WireGuard * Aceptar la conexión. 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**.