photo-1603985529862-9e12198c9a60

WireGuard

Con este articulo en formato de guía por pasos, voy a configurar una VPN con WireGuard, tanto el servidor, como un par de clientes (Windows y IOS)

Podemos obtener toda la documentación de su página oficial en https://www.wireguard.com/

Lo primero que debemos hacer es instalar WireGuard en una máquina Linux con el siguiente comando:

~# apt install wireguard

Una vez instalado y antes de empezar con la configuración, vamos a abrir el puerto del rooter, en mi caso he abierto el siguiente puerto:

Configuración del archivo del servidor

1. Creamos el par de claves para el servidor con el comando que se ve en la siguiente imagen:

Captura de pantalla de un celular

Descripción generada automáticamente

2. Protegemos el acceso a la carpeta donde vamos a almacenar todas las claves, empezando por las que creamos en el punto anterior:

Interfaz de usuario gráfica, Texto

Descripción generada automáticamente

3.  A continuación, creamos el fichero wg0.conf y volcamos dentro el contenido de la clave privada que hemos creado para el servidor, para ello ejecutamos los siguientes comandos:

Texto

Descripción generada automáticamente

4. Editamos el archivo wg0.conf(*) con nuestro editor preferido y empezamos a organizar de la siguiente forma:

Captura de pantalla de un celular

Descripción generada automáticamente

*Cuando entremos por primera vez, solo encontraremos la clave privada que hemos introducido anteriormente.

5. A continuación, habilitamos el servicio de wireguard con el siguiente comando:

Una captura de pantalla de una red social

Descripción generada automáticamente

6. Comprobamos que el servicio está corriendo:

Texto

Descripción generada automáticamente

7. Lo siguiente que vamos a mirar es que se a creado una nueva interfaz llamada wg0, donde podremos ver como IP la que pusimos en el archivo de configuración que creamos:

Texto

Descripción generada automáticamente

8. Por último, si queremos tener navegación cuando estemos conectados a la VPN, debemos de añadir en la parte de interface dentro de wg0.conf las siguientes reglas de iptables:

Configuración de Cliente Móvil

1. Creamos dentro de la carpeta wireguard la carpeta clientes:

Interfaz de usuario gráfica

Descripción generada automáticamente

2. Y dentro de esta vamos a crear una para nuestro cliente móvil, en mi caso para un dispositivo IOS, donde generaremos de nuevo un par de claves:

Una captura de pantalla de una red social

Descripción generada automáticamente

3. Una vez hecho el paso anterior, vamos a crear un archivo movil.conf donde volcaremos la clave que acabamos de crear y cogeremos también la clave pública del archivo servidor_publica.key como podemos ver en la siguiente imagen:

Captura de pantalla de computadora

Descripción generada automáticamente

4. En el siguiente paso, nos metemos a editar el archivo móvil.conf, donde agregaremos la clave pública del servidor, el puerto de escucha, además de, la ip pública(Endpoint), así como el puerto de destino:

Captura de pantalla de un celular

Descripción generada automáticamente

5. Ahora, mandamos la clave pública del dispositivo al archivo de configuración del servidor de wireguard:

6. Y configuramos el cliente en el archivo del servidor de la siguiente forma:

Captura de pantalla de un celular

Descripción generada automáticamente

7. Una vez realizado esto, reiniciamos el servicio de wireguard:

Una captura de pantalla de una red social

Descripción generada automáticamente

8. Ahora vemos con el comando wg que la configuración funciona corretamente:

Captura de pantalla de un celular

Descripción generada automáticamente

En los siguientes pasos, lo que vamos a hacer es mandar la configuración que hemos creado para el dispositivo móvil mediante un código QR, para ello debemos de instalar el siguiente programa:

Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

9. Una vez instalado, generemos el código QR con el siguiente comando:

Código QR

Descripción generada automáticamente

10. Ahora lo que debemos de hacer es ir al dispositivo móvil y leer el código QR generado, donde se nos hará una serie de preguntas y veremos como se carga la configuración del perfil en el dispositivo móvil:

                       Interfaz de usuario gráfica, Código QR

Descripción generada automáticamente

Permitimos que añada la configuración de la VPN

   Imagen de la pantalla de un celular con letras

Descripción generada automáticamente con confianza media

Le ponemos el nombre que queramos a la VPN

       Interfaz de usuario gráfica, Aplicación

Descripción generada automáticamente

Y por último comprobamos que la configuración es la correcta

 

11. Por último, comprobamos que podemos acceder al servicio apache instalado en la misma máquina donde esta wireguard desde el dispositivo móvil:

Texto

Descripción generada automáticamente

Como se puede ver, podemos acceder al servicio apache, aunque no se vea en la imagen que el servicio VPN en el móvil esta activado, si lo está, como se puede ver estoy conectado por 4G, pero por la propia visualización que hacen los dispositivos IOS no se ve en la propia pantalla si estas conectado a la VPN.

Configuración de Cliente Windows

1. Lo primero que debemos de hacer una vez instalado el cliente de wireguard para Windows, es crear un túnel, para ello le damos a la opción de abajo a la izquierda Add Tunnel y después a Add empty tunnel:

Interfaz de usuario gráfica, Aplicación, Word

Descripción generada automáticamente

2. A continuación, añadimos los siguientes parámetros al nuevo túnel que vamos a crear:

Interfaz de usuario gráfica

Descripción generada automáticamente

3. Pasamos la clave pública al servidor de wireguard y reiniciamos el servicio

Captura de pantalla de un celular

Descripción generada automáticamente

4. Por último, activamos la VPN y probamos a conectarnos:

Interfaz de usuario gráfica, Texto

Descripción generada automáticamente

Con esto tendríamos configurado tanto el servidor WireGuard con un cliente Windows y uno IOS.

En un futuro agregare como hacerlo en una RasberryPi.