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