Herramientas de usuario

Herramientas del sitio


informatica:software:internet:wireguard

¡Esta es una revisión vieja del documento!


Wireguard

Solución para crear túneles VPN. Más segura, moderna y eficiente que otras soluciones de código abierto como OpenVPN.

Servidor

WireGuard Easy

La forma más sencilla de instalarlo es mediante Docker con la imagen de

Una forma sencilla de instalarlo es mediante Docker con la imagen WireGuard Easy (repositorio en GitHub). Ejemplo del docker-compose.yml:

version: "3.8"
services:
  wg-easy:
    environment:
      # ⚠️ Required:
      # Change this to your host's public address
      - WG_HOST=raspberrypi.local
 
      # Optional:
      # - PASSWORD=foobar123
      # - WG_PORT=51820
      # - WG_DEFAULT_ADDRESS=10.8.0.x
      # - WG_DEFAULT_DNS=1.1.1.1
      # - WG_MTU=1420
      # - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
      
    image: weejewel/wg-easy
    container_name: wg-easy
    volumes:
      - .:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

Esta imagen provee también de un panel de administración web desde el que poder añadir y gestionar lo clientes de la VPN. Accesible desde http://ip.servidor.wireguard:51821

Para poder conectarnos a este servidor desde fuera de nuestra red local (Internet) es necesario realizar una redirección de puertos para que este puerto local pueda ser accesible desde el exterior.

Manual

Otra opción es la imagen de Linuxserver

  • PEERS: indica el número de clientes para los que Wireguard creará configuraciones. Puede ser numérico o una lista de nombres (myPC, myPhone, myTablet…)
  • INTERNAL_SUBNET: subred que usarán los clientes conectados a la VPN.
  • SERVERURL: IP o dominio en el que está Wireguard.

Una vez arrancado, vamos a consultar los logs para poder ver el código QR que tendrá que escanear el primer cliente de esa VPN:

docker-compose logs -f --tail=10

Ejemplo de salida:

(...)
wireguard    | PEER 1 QR code:
wireguard    | █████████████████████████████████████████████████████████████████
wireguard    | █████████████████████████████████████████████████████████████████
wireguard    | ████ ▄▄▄▄▄ █▄█   ▀ ▀▀█▄ ▀▀█ ▄ ▀▄▄█ ▄▀▀▀▀ ▀▀█▀ ▀▀█▀▄ ██ ▄▄▄▄▄ ████
wireguard    | ████ █   █ █ █▀██▀█▀▄█▀▀▄▄▄▄▀█ █▄▀▄▀▄▄█ ▀▄▀▄▄▄█▀▄▀▄ ██ █   █ ████
wireguard    | ████ █▄▄▄█ █▄██▄▀█▀▄▄▄▀█▄▀▀█ ▄ ▄▄▄  ▄ ▀▄█  ▄▀██ █ ▀▄██ █▄▄▄█ ████
wireguard    | ████▄▄▄▄▄▄▄█▄█ ▀ █▄▀ ▀ █ ▀▄█ █ █▄█ █▄█▄█ ▀ █ ▀ █ ▀▄▀▄█▄▄▄▄▄▄▄████
wireguard    | ████▄▄  █▀▄█▄ ███▀▀██▄▀▄█▄▄▀ ▄▄ ▄▄ ▄█▀▄█▀ █▄▄▀ ▄█▀▄ ▀ ██▄▄▄▀ ████
wireguard    | ████ ▄ ▀▀██▀▄▄█▀ ▀ █ ▄▀▀▄ ▀▄██ ▀██▀█▀ ▄███▄▄▄████▄▄▄▄ ▀██▀▄ ▄████
wireguard    | ████   ▀  ▄▄ ▄▀▄ ▀▀ ▄ █▄▀ █   ▄ █ █▄██▄▄ █▀▀▀ █▄▀ ▄▀▄ ▀█▀▀▄█▀████
wireguard    | █████▀ ▄ ▄▄▄▄▀██▀██▀▄█▄ ██▄   ▄██    ▀▄▄▄██▀█▀ ▀▀█▄ █▄ ▀  ▀ █████
wireguard    | █████ ████▄  ▀▄▀█▀  ▀▀▀█▄ █▀▄ ▄▀▀ ██▄▀ ██▄▄▄█ █▀ ▀ ▀▄▄▄ █▄  █████
wireguard    | ████▀ ██▄▀▄█ █▄▀█▄▄▄▄▀▄██ █   ▀ █▀▀▄██ ▀▄  ▄▄█ ▀█▀▀▄▄▀ █▀██▄▀████
wireguard    | ████▀  ▄  ▄▀▀▄  ▀█▄ ▄ █ ▀▄▄▄▀██▄ █▀█▀█▄█▀ ▄▄▄ ▀▀█ ▄█  ▄ ▄ ▀▀█████
wireguard    | ████▀▄▀  ▄▄▄█▄█▄▄█ ▄▀▀██▀█ ██ ▄▄▀▀▄▄ ▀▄█▀  ▄█▄▄▄ █▄█▀██   █▄▄████
wireguard    | █████▄▄  ▄▄█▄▄▀ ▀▄▄ ▄  ▄  ▀ █ ██▀▄▄██▄▄█▄ ▀▀▀▄▄██▄▄▄▄▀▀▀▀▀▀▄█████
wireguard    | █████▀▄  ▄▄▄ ▀▄▄▄▄▀▄▀▀▀██ ▀█▄  ▄▄▄ █  ▀▄▄██ ▄█ ▄█ █▀ ▄▄▄  ▀ █████
wireguard    | █████▀▄  █▄█  ▀▀ ▄▄ ▀ ██ ▄ ██▀ █▄█  ▄▀ █▀█  █▄█▄▄ ▀  █▄█  ▄▄█████
wireguard    | ████ ▄▄█▄ ▄  ▄█▀ █▀█ █▄█ ▀▀▀▄▄ ▄  ▄▀▄▀█▄▄█ █▄ ▀▀▄▄▄   ▄▄▄██▄█████
wireguard    | ████ █▀▄█ ▄█ ▄███ ▀▄█▄█▀██ ▄ █▀▄██▀▄█▀▄▄█▀▄█▄ ▀▄▀▄██▄ ▀▄█▄▀▄▀████
wireguard    | ██████▄█  ▄▀▄█▀ █▀▀▄██▀▄▄█▀█▄ ▄ ▀▄██ ▀ █  █     ▀▄  ▀ ▄ ▀ █▄ ████
wireguard    | ████▀▄▀█▄█▄▀█  ▀  ▀ ▀▀▄▄▀ ▀█ █  ▀▄▄ ▀ ▄▀▄▄   ██▄█▄██ ▄▄▀▄▄█ ▀████
wireguard    | ████ ▀▀▀  ▄▀▄▀▄▄▄███▀▄▄██  ▀▄▀▀█▀▄▀▄ ▀▄ ██▄▄  █ ▀▄█ ▄▄▀▀▄ ▀▄█████
wireguard    | ████▀▀▄▀█▄▄  ▄▄██ █▀ █▀█▄▄█▀█▄█▀▀▄▀▀▄█▀▄██▄ █ █▀▄▄▀▄ █▄▀   █ ████
wireguard    | ████▄▀  ▀▀▄█▀ ▄ ███▄█ ▀▄  █▀ █  ██ █▀▄▄▀▄ ▄█ █▀█▄▀▄█ ▄█▄▄███▀████
wireguard    | ████    ▀ ▄▀█ ▀ ▄▄ ▄▄▄  ▄█▄█ ▄█▀▄▄█▀██▄▄▀ █▄▄▄▀███▄▀▄██▄▄   ▀████
wireguard    | ████ ▀ ▀▀▄▄█▄▀▀█▄▄ █▄█▀█ █▀▀▀▀██▀██▀ ▄ ▄▀██ █  ▀ ▀  ▀▄▄▀▀▄▄▄▄████
wireguard    | ██████████▄█ ▀▄▄▄  █▄█ ▄  ▄  ▀█▄█ ▄▀▀▄█▄▄▀▀ ▀▄▄▄█▀▄█ ▄▄▄ ▄█ █████
wireguard    | ████ ▄▄▄▄▄ ██▄█▄▄▄▀█▄█▄█▄▀▄▄▀▄ █▄█ █ ▄▀▄▀▄▄▄█▀   ▀▄▄ █▄█  ▀▄▀████
wireguard    | ████ █   █ █▀ ▄▀▄▄█▄▀▄██ ▄▄███ ▄▄▄   ▀ █ ▄██▀▀▄ ▄ ▀▄   ▄▄   █████
wireguard    | ████ █▄▄▄█ █ ▄ ██  █▀█▀█ ▀▀ ▄ ▄▀▄  █ ▄▀▄▄▀ ▄▄█▀▀███    ██▄▄█▀████
wireguard    | ████▄▄▄▄▄▄▄█▄▄██▄▄█▄█▄██▄█▄█▄██████▄██████▄▄▄██▄█▄▄▄▄▄▄▄▄▄▄██████
wireguard    | █████████████████████████████████████████████████████████████████
wireguard    | █████████████████████████████████████████████████████████████████
wireguard    | [cont-init.d] 30-config: exited 0.
wireguard    | [cont-init.d] 99-custom-scripts: executing...
wireguard    | [custom-init] no custom files found exiting...
wireguard    | [cont-init.d] 99-custom-scripts: exited 0.
wireguard    | [cont-init.d] done.
wireguard    | [services.d] starting services
wireguard    | [services.d] done.
(...)

Variables SERVERURL, SERVERPORT, INTERNAL_SUBNET and PEERDNS are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.

Si queremos volver a crear las claves y configuraciones, basta con eliminar los directorios peer, dentro de config.

Para añadir más clientes/peers, aumentamos el valor de la variable de entorno PEERS y recreamos el contenedor.

Si queremos volver a ver los códigos QR de los clientes/peers activos:

docker exec -it wireguard /app/show-peer 1 4 5

También sería válido:

docker exec -it wireguard /app/show-peer myPC myPhone myTablet

Los códigos QR también se almacenan en el directorio config como imágenes PNG

Cliente

informatica/software/internet/wireguard.1645352265.txt.gz · Última modificación: por tempwin