JustToThePoint English Website Version
JustToThePoint en español
JustToThePoint in Thai

Instalación, configuración y uso de VPN con WireGuard, Duckdns, OpenVPN y PiVPN.

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

  1. Dirígete a su página web en duckdns, registra tu subdominio (justtothepoint.duckdns.org) y guarda tu token.

  2. 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.

  3. 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
  1. 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.

  2. 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
    
  3. 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).

  4. 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

  1. Descarga el script openvpn-install.sh para configurar el servidor OpenVPN: wget https://git.io/vpn -O openvpn-install.sh.
  2. Hazlo ejecutable y lánzalo: sudo chmod + x openvpn-install.sh, sudo bash openvpn-install.sh .
  3. IPv4, servidor dirIP, en mi caso, 192.168.1.48. Protocolo: Protocol, UDP. Puerto: Port, 1194. DNS server for the clients: Servidor DNS para los clientes, Google. A name for the first client, un nombre para el primer cliente, client.
  4. Reinicia el servicio OpenVPN: sudo systemctl restart openvpn y comprueba su estado: sudo systemctl status openvpn.
  5. Si tienes configurado el cortafuegos, permite la conexión en el firewall: sudo ufw allow 1194/udp.
  6. ¿Está escuchando el servidor en este puerto? sudo netstat -anp | grep openvpn.
  7. Obtén el archivo de configuración del cliente: sudo passwd root; su -; cp client.ovpn /home/myUser (lo copiamos de la carpeta de root a la del usuario) y transfiérelo a la máquina cliente.
  8. Finalmente, en la máquina cliente, instala TunnelBlink y abre client.ovpn en TunnelBlink.
  1. PiVPN es la forma más sencilla de configurar y administrar una VPN, está diseñada específicamente para Raspberry Pi. Descarga su script e inicia el proceso de instalación: curl -L https://install.pivpn.io | bash .
  2. Interface: eth0/wlan (ethernet o WiFi). Do you want to use your current network settings as a static address? 192.168.1.7/24 ¿Desea utilizar su configuración de red actual como una dirección estática? Básicamente, confirma la dirección IP de tu Raspberry Pi. Enter your desired IPv4 default gateway: 192.168.0.1 (Dirección IP de tu Router).
  3. Choose a user (elije un usuario): pi.
  4. Unattended Upgrades (Actualizaciones desatendidas, OK), Protocol (Protocolo, UDP), OpenVPN Port (Puerto para OpenVPN): 1194.
  5. Public IP or DNS (IP pública o DNS), escribe tu IP estática. Si aún no la conoces, puedes utilizar servicios como WhatIsMyIp.com. Obviamente, necesitas una IP pública estática. De lo contrario, puedes utilizar un servicio de DNS dinámico gratuito, como NoIP.com o Duck DNS y enrutar el tráfico de VPN a tu Raspberry Pi en el router. En este caso, selecciona DNS Entry (Entrada DNS). What is the public DNS name of this Server? ¿Cuál es el nombre DNS público de este servidor? justtothepoint.ddns.net (Se explicará más detalladamente en el Paso 9).
  6. DNS Provider for your VPN clients (Proveedor de DNS para sus clientes VPN): Google.
  7. Crea un perfil ovpn para los clientes: pivpn add (client). Generará un archivo client.ovpn para ese cliente en /home/pi/ovpns. Necesitarás este fichero para iniciar sesión en cada dispositivo cliente.
  8. Configuremos el cliente. Copia el archivo client.ovpn en el ordenador cliente: scp pi@192.168.1.7:~/ovpns/client.ovpn . (scp nombreUsuario@dirIPQueTieneElArchivoADescargar:/RutaDelArchivo Destino). Instala TunnelBlink en el ordenador que usarás como cliente y abre el archivo client.ovpn en TunnelBlink. Puedes probar que funciona tecleando en la consola: ping 10.8.0.1 (IP privada del servidor VPN).
  9. Si no tienes una IP estática, necesitas un proveedor de DNS dinámico. Veamos no-ip.com: Dynamic DNS (DNS dinámico), Create Hostname: Hostname (Crear nombre de host: Nombre de host, justtothepoint), Domain (Dominio, ddns.net), Record Type (Tipo de registro: DNS Host(A)), Dirección IPv4 (tu IP).

    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.

  10. Navega a tu router (Enrutador MitraStar), http://192.168.1.1. Advanced configuration (Configuración avanzada), Advanced Setup, DNS, Dynamic DNS (Configuración avanzada, DNS, DNS dinámico): D-DNS provider (No-IP), Hostname (Nombre de host, justtothepoint.ddns.net), NOIP Setting (Configuración de NOIP, tienes que indicar tu usuario y contraseña de NoIP).
  11. Añadimos una regla de redirección de puertos. Name (Nombre de regla de puertos): VPN, Private IP Address (Dirección IP): dirección IP de la Raspberry Pi, Public Port (Puerto/Rango externo: 1194), Private Port (Puerto/Rango interno: 1194), Protocol (Protocolo, UDP). Configuración del Router

    Configuración del Router

  12. En tu dispositivo cliente android debes instalar la aplicación OpenVPN Connect. Lánzala y navega por OPVN Profile, Import Profile (Perfil OPVN, importa el perfil). Tienes que copiar el archivo client.ovpn y seleccionarlo navegando por el arbol de carpetas y ficheros de tu teléfono móvil. Desinstalar VPN: pivpn uninstall. Listar todos los clientes conectados: pivpn clients.

Credits:

  1. geetkland, Instalar y configurar el servicio DNS dinámico Duck DNS con Docker, Instalar y configurar el servidor VPN Wireguard con Docker
  2. ADDICTED2TECH, HOME VPN USING WIREGUARD DOCKER ON A RASPBERRY PI 4
Bitcoin donation

JustToThePoint Copyright © 2011 - 2024 Anawim. ALL RIGHTS RESERVED. Bilingual e-books, articles, and videos to help your child and your entire family succeed, develop a healthy lifestyle, and have a lot of fun. Social Issues, Join us.

This website uses cookies to improve your navigation experience.
By continuing, you are consenting to our use of cookies, in accordance with our Cookies Policy and Website Terms and Conditions of use.