====== 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**.