Una VPN protege tu privacidad separando tu ubicación de tus datos. Es, básicamente, un túnel seguro entre tu equipo e Internet, por lo que todo tu tráfico está encriptado y, en consecuencia, oculto y anónimo.
Este artículo se basa en nuestros artículos Samba, Docker, Docker compose, Portainer, Shell In A Box, Webtop, y Nextcloud en Raspberry Pi y Dotfiles con Git + GNU Stow. Servidores: Syncthing, Docker, Pi-hole..
Dirígete a su página web en duckdns, registra tu subdominio (justtothepoint.duckdns.org) y guarda tu token.
En segundo lugar, vamos a crear una carpeta en el directorio home de tu Raspberry PI (mkdir duckdns), entra en dicha carpeta y crea otra (mkdir config) donde residirán todos los datos de configuración de duckdns.
Finalmente, navega a tu panel de administración de Portainer, dirección de Pi:9000, Stacks, Add a stack (añadir un contenedor). Teclea “duckdns” en el campo Nombre, copia y pega la siguiente configuración en el Web editor (Editor web) y haz clic en Deploy the stack (descarga y lanza el contenedor).
---
version: "2.1"
services:
duckdns:
image: lscr.io/linuxserver/duckdns:latest
container_name: duckdns
environment:
- PUID=1001 # PUID del usuario, simplemente escribe en el terminal: id
- PGID=1001 # PGID del grupo
- TZ=Europe/Madrid # Establece la zona horaria de tu ubicación.
- SUBDOMAINS=justtothepoint # El dominio que acabas de registrar en Duck Dns.
- TOKEN=TU-DUCK-DNS-TOKEN
- LOG_FILE=false #optional
volumes:
- /home/pi/duckdns/config:/config #optional
restart: unless-stopped
Primero, vamos a crear una carpeta en el directorio de inicio (mkdir wireguard), entrar en dicho directorio y crear otra carpeta (mkdir config) donde residirán todos los datos de configuración de wireguard.
Navega a tu panel de administración de Portainer, dirección de Pi:9000, Stacks, Add a stack (añadir un contenedor). Teclea “wireguard” en el campo Nombre, copia y pega la siguiente configuración en el Web editor (Editor web) y haz clic en Deploy the stack (descarga y lanza el contenedor).
---
version: "2.1"
services:
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1001 # PUID del usuario, simplemente escribe en el terminal: id
- PGID=1001 # PGID del grupo
- TZ=Europe/Madrid # Establece la zona horaria de tu ubicación.
- SERVERURL=192.168.1.7
Este parámetro de configuración es el más importante. Si los clientes del VPN están fuera de tu red privada, debes especificar tu IP externa o nombre de dominio para el equipo que aloja tu contenedor docker. Si lo configuras en modo auto -automático-, el contenedor intentará descubrir y configurará la IP externa automáticamente. Esta es la configuración que debes adoptar si tus clientes están fuera de tu red privada.
Por otro lado, si tus clientes están dentro de tu red privada, aquí debes indicar la dirección IP de tu Pi en la red privada.
Si tienes una dirección IP externa dinámica que cambia con bastante frecuencia, puede usar DuckDNS, por ejemplo, SERVERURL=justtothepoint.duckdns.org
- SERVERPORT=51820
- PEERS=2 # Este es el número de clientes o dispositivos que se conectarán al servidor VPN.
- PEERDNS=auto # Utiliza el DNS preconfigurado e instalado de wireguard.
Una alternativa es utilizar los servidores públicos DNS de Google: PEERDNS=8.8.8.8,8.8.4.4
- INTERNAL_SUBNET=10.13.13.0 #optional
- ALLOWEDIPS=0.0.0.0/0 #optional
volumes:
- /home/pi/wireguard/config:/config # Este es el puente entre la ruta para el almacenamiento de datos en el equipo que aloja el contenedor (/home/pi/wireguard/config) y el directorio de configuración del contenedor.
- /lib/modules:/lib/modules #do not change
ports:
- 51820:51820/udp # -p <external>:<internal>, expone el puerto (interno) 51820 para que sea accesible desde la IP del host en el puerto (externo) 51820 fuera del contenedor.
restart: always
Necesitas redireccionar el puerto externo 51820 de tu Router a la dirección privada de tu Raspberry Pi. Típicamente, lanza tu navegador y dirígete a la dirección privada de tu router, e.g., 192.168.1.1, y accede al apartado correspondiente para configurar los Puertos. Asígnale un nombre (Nombre regla de puertos: “Wireguard”), escribe la dirección privada de tu Raspberry Pi (Dirección IP, 192.168.1.7), Protocolo (UDP), Abrir Puerto/Rango Externo (WAN, 51820:51820), Abrir Puerto/Rango Interno (LAN, 51820:51820).
Configura tus clientes.
pi@raspberrypi:~/wireguard/config$ sudo ls peer1
# Podemos ver las claves pública y privada y el archivo png con el código QR.
peer1.conf peer1.png presharedkey-peer1 privatekey-peer1 publickey-peer1
pi@raspberrypi:~/wireguard/config$ docker exec -it wireguard /app/show-peer 1
# Queremos ver el código QR para el cliente 1 (peer 1).
Para configurar el cliente, navega a WireGuard, Installation. Hay clientes para Windows, macOS, Ubuntu, Android, iOS, etc., por ejemplo, puedes instalar la aplicación Wireguard desde la Google Play Store, luego lánzala y haz clic en el botón + más, ESCANEAR DESDE EL CÓDIGO QR.
Configuremos un cliente en Ubuntu. A. En el cliente Ubuntu, instala los paquetes siguientes:
sudo apt install wireguard resolvconf
B. En tu Raspberri Pi, debes copiar remotamente el archivo de configuración del cliente de WireGuard.
scp ~/wireguard/config/peer1/peer1.conf userUbuntuClient@dirIPUbuntuClient~/peer1.conf.
C. En el cliente Ubuntu, copia dicho archivo de configuración a su correcta ubicación:
sudo cp peer1.conf /etc/wireguard/wg0.conf
D. En el cliente Ubuntu, inicia el túnel VPN ejecutando la siguiente orden: wg-quick up wg0
DNS dinámico es un servicio para asignar nombres de dominio de Internet (en el ejemplo, justtothepoint.ddns.net) a una computadora con direcciones IP dinámicas.
Credits: