WireGuard (II): Crear un cliente
En una entrada anterior expliqué qué es y cómo instalar de manera sencilla WireGuard en nuestro servidor. En esta entrada veremos cómo crear un cliente para poder conectarnos a nuestra VPN de manera remota.
Para esta entrada daremos por sentado que nuestro WireGuard ha sido instalado a través de PiVPN, como cuento en mi anterior entrada.
Partiremos de un servidor de WireGuard instalado gracias a Multipass (ya os hablaré de ello, lo estoy preparando 😊). Éste tiene configurado el puerto por defecto de WireGuard: el 51820
. Como podéis ver, el servidor se encuentra escuchando ya en la red local y en su propia red de VPN:
Clientes para WireGuard
Hoy en día hay aplicaciones para conectarse a un servidor WireGuard para todas las plataformas y de todos los gustos. Personalmente, me gusta usar los clientes oficiales siempre que puedo, pero dejo a vuestra elección que uséis el que más os guste.
Dar de alta un cliente nuevo
Lo bueno de usar PiVPN es que se nos facilita muchísimo el control de nuestro servidor VPN. De hecho, al ejecutar el comando pivpn --help
, veremos todas las opciones de que disponemos, y que son más que suficientes para su gestión.
Así pues, para dar de alta un cliente nuevo, bastará con usar el comando pivpn -a
, y, tras introducir un nombre para él, automáticamente se nos creará la configuración necesaria:
Una vez dado de alta un cliente nuevo, su configuración se encontrará en la carpeta configs
del usuario que hayamos configurado en la instalación del servidor, en mi caso /home/ubuntu/configs
. Allí, veremos que tenemos un fichero de configuración llamado como nuestro cliente: Android.conf
. Su contenido será similar a:
Como veis, es un fichero muy sencillo. En el apartado Interface tenemos la clave que usará el cliente, la dirección IP que tomará al conectarse a nuestro servidor VPN y las direcciones DNS que usará (por si no las conocéis, para el ejemplo estoy usando los servidores de AdGuard DNS, que sirven para filtrar anuncios y bloquear rastreos... ¡Da para una entrada nueva! 📝).
En el apartado de Peer, tenemos la clave pública de nuestro servidor, así como su PresharedKey. Además, vemos un Endpoint y las direcciones IP permitidas, que en nuestro ejemplo son todas (ya que querremos conectarnos desde cualquier sitio). En este apartado. deberemos modificar el Endpoint poniendo, o bien nuestra IP pública del servidor (si ésta es fija), o bien nuestra dirección DDNS. Por ejemplo: En mi casa mi servidor VPN está en una RaspberryPi, pero obviamente, no tengo IP pública estática, con lo que hago uso de DuckDNS para poder tenerlo siempre localizado. Así, deberé reemplazar 192.168.64.5:51820
por midominio.duckdns.org:51820
. Es importante recordar que el puerto debe ser abierto en nuestro router si queremos poder conectarnos desde fuera.
Una vez hemos hecho la modificación en nuestro fichero de configuración del cliente, deberemos enviarlo al dispositivo cliente (por Bluetooth, por SFTP, Airdrop... lo que queramos, pero que sea seguro y, a ser posible, sin intermediarios) y allí importarlo en la aplicación (en el caso de MacOS, por ejemplo, mediante la opción Importar túneles desde archivo).
Sin embargo, como podéis ver más arriba, tenemos una opción mucho más cómoda para dispositivos móviles. Si hemos instalado la aplicación oficial de WireGuard (en otras no sé, pero supongo que también estará), veremos que tenemos la opción de importar la configuración mediante un código QR. Pero... ¿cómo podemos hacer esto? Pues de manera tan sencilla como usar el comando pivpn -qr
. A continuación seleccionamos el cliente que queremos y ¡listo!. Veremos cómo se nos genera un código QR que podremos usar desde el móvil directamente:
Dar de baja un cliente
Supongamos que nuestro dispositivo móvil ya no nos hace falta más, lo hemos cambiado por otro mejor, lo hemos perdido, nos lo han robado... Sea lo que sea, y queremos, por seguridad, dar de baja ese cliente. Será tan sencillo como usar el comando pivpn -r
y listo.
Eliminar un cliente supone borrar su configuración por completo, por lo que si lo queremos volver a usar, habrá que dar de alta un cliente nuevo.
Habilitar o deshabilitar un cliente
En lugar de eliminarlo por completo, también podemos deshabilitar de manera temporal un usuario o un dispositivo. Para ello, usaremos el comando pivpn -off
y automáticamente ese cliente no podrá conectarse a nuestro servidor hasta que volvamos a habilitarlo, mediante el comando pivpn -on
.
Ver los clientes conectados
Para ver el listado de clientes que tenemos registrados y los que, actualmente, están conectados a nuestro servidor, podemos hacer uso de los comandos pivpn -l
y pivpn -c
, respectivamente:
Crear copias de seguridad de clientes y configuración
Por último, es útil tener una copia de seguridad de nuestros clientes , sus claves públicas y privadas, y de la configuración del servidor, ya que en caso de necesitar realizar una reinstalación o mover todo a un nuevo servidor, no querremos volver a configurar todo desde 0 y dar de alta todos los clientes de nuevo, ¿no?
Para hacer un backup de todo esto, PiVPN nos lo pone bastante fácil. Bastará con usar el comando pivpn -bk
y automáticamente nos creará un ZIP con todo lo necesario para una migración de nuestro servidor VPN.
Si accedemos a la ruta que nos muestra y descomprimimos dicho ZIP (que, por cierto, se genera para el usuario root
, por temas de seguridad), veremos que contiene lo siguiente:
Como podéis ver, están tanto las configuraciones del servidor de WireGuard (claves privadas, claves públicas de los peer, configuración del servidor en sí...) como las configuraciones de los clientes, cada una dentro de su directorio original. De forma que nos es muy sencillo migrar todo a un servidor nuevo sin necesidad de configurar todo de nuevo 😀.
¡Y hasta aquí la segunda parte del tutorial! Espero que os sea muy útil y si tenéis alguna duda, no dudéis en dejar un comentario o contactarme por cualquiera de las vías que tengo publicadas, que os responderé encantado (si tardo no os preocupéis, lo hago en cuanto puedo).
Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección: