Skip to main content

Instalación de Wireguard cliente

Ahora que ya dispone de servidor VPN, es momento de crear la configuración para los clientes, esto se puede realizar de varias formas.

  • Crear la configuración desde el cliente
  • Crear la configuración desde el servidor y enviarla al usuario

Prerequisitos

  • Conocer la IP pública del servidor VPN
  • Servidor VPN encendido y accesible

Crear configuración desde el cliente

Desde un sistema Linux

Escale privilegios

sudo su -

Genere una carpeta para guardar la clave privada.

mkdir /root/wg0/client -p
cd /root/wg0/client

Genere la clave privada y la pública del cliente

wg genkey | tee wg0_private.key
cat wg0_private.key | wg pubkey | tee wg0_public.key

Introduzca la IP pública del servidor en la siguiente variable, cambie el valor 127.0.0.1 por la IP pública del servidor VPN. Introduzca también la IP que tendrá el cliente en la red, esto debe preguntarlo al administrador de la VPN. En este caso, usaremos la IP acabado en .2. Solicite al administrador la clave publica del servidor wireguard al que se va a conectar y guarde esa clave en la variable server_pubkey. Tambien deberá preguntarle por el valor a introducir en la sección AllowedIPs, la cual indicará que IPs serán accesibles a través de la VPN.

server_ip="127.0.0.1"
server_port="58270"
server_pubkey="CHANGE_THIS_WITH_SERVER_VPN_PUBLIC_KEY"
client_allowed_ips="CHANGE_THIS_WITH_ALLOWED_IPS"
client_ip="10.16.0.2/24"
client_priv_key=`cat wg0_private.key`

Genere el fichero de configuración

cat <<endblock >  /etc/wireguard/wg0.conf
[Interface]
PrivateKey = $client_priv_key
Address = $client_ip


[Peer]
PublicKey = $server_pubkey
AllowedIPs = $client_allowed_ips
Endpoint = $server_ip:$server_port

endblock

Ahora necesitará que el servidor autorice la comunicación. Autorizar cliente en servidor VPN

Una vez autorizado, inicie la conexión en Wireguard ejecutando el comando

wg-quick up wg0

Si quiere que la conexión se establezca automáticamente al encender el dispositivo, entonces ejecute el siguiente comando.

systemctl enable wg-quick@wg0.service

Crear configuración desde el servidor

Puede crear la configuración desde el servidor y proporcionarla al usuario (mediante fichero, codigo QR), facilitandole así la tarea. Por cada cliente, genere una carpeta para guardar los ficheros. Puede usar client1 o bien el login como carpeta, eso queda a su gusto. Simplemente aseguresé de no sobreescribir los ficheros por si los necesita en un futuro.

mkdir /root/wg0/client1 -p 
cd /root/wg0/client1
wg genkey | tee wg0_private.key
cat wg0_private.key | wg pubkey | tee wg0_public.key

Introduzca la IP pública del servidor en la siguiente variable, cambie el valor 127.0.0.1 por la IP pública del servidor VPN. Introduzca también la IP que tendrá el cliente en la red.

server_ip="CHANGE_THIS_WITH_PUBLIC_IP_VPN_SERVER"
server_port="58270"
server_pubkey="CHANGE_THIS_WITH_SERVER_VPN_PUBLIC_KEY"
client_allowed_ips="CHANGE_THIS_WITH_ALLOWED_IPS"
client_ip="10.16.0.2/24"
client_priv_key=`cat wg0_private.key`

A continuación, ejecute el comando siguiente para generar el fichero de configuración.

cat <<endblock >  /root/wg0/client1/wg0.conf
[Interface]
PrivateKey = $client_priv_key
Address = $client_ip

[Peer]
PublicKey = $server_pubkey
AllowedIPs = $client_allowed_ips
Endpoint = $server_ip:$server_port

Puede enviar los ficheros al cliente para que se lo instale en su wireguard. En caso de ser un dispositivo Android, iOS puede generar un código QR.

Exportando configuración del cliente

Acceda de nuevo al servidor y instale la dependencia que permitirá generar códigos QR.

apt install qrencode

Acceda a la carpeta del cliente generado

cd /root/wg0/client1

Genere el código QR ejecutando el siguiente comando

qrencode -t png -o wg0-client1-qr.png -r wg0.conf

Se generará una imágen que podrá enviar al cliente. Si el usuario está a su lado también puede generarlo para mostrarlo en la consola de Linux con el comando.

qrencode -t ansiutf8 wg0.conf

Este código es único y exclusivamente para ese cliente, no lo comparta con otro cliente. Simplemente, genere otra configuración para otro cliente.

Desde su dispositivo Android / iOS abra la aplicación y pulse en la opción Escanear desde código QR

Escanee el código y asigne un nombre al perfil, por ejemplo en mi caso, para mi servidor de Francia he usado la nomenclatura WG0-SPLIT-FR.

  • WG0 => Wireguard VPN Tunel 0
  • SPLIT => Indica que no todo el tráfico va a pasar a través de la VPN
  • FR => Pais del VPS

Al hacer clic en el nombre, podrá visualizar la configuración.

En esta foto,a las IPs permitidas se le ha añadido también un listado de IPs para forzar que la navegación hacia esas IP sea a través del tunel VPN. Pulse en el switch al lado del nombre para iniciar la comunicación. Pasados unos segundos, aparecerá debajo del Endpoint, información sobre la transferencia y la última comunicación realizada.

Puede comprobar en el servidor la comunicacion, ejecutando el comando wg

Fuente: Cyberciti - How to generate Wireguard QR