# WireGuard VPN

# Instalación y configuración de WireGuard

<span style="color: rgb(126, 140, 141);">Para instalar WireGuard hacemos lo siguiente como cualquier paquete.</span>

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/BZyimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/BZyimage.png)

<span style="color: rgb(126, 140, 141);">Ahora vamos a generar directamente una clave privada y vamos a guardarla.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Dkximage.png)](https://wikasa.es/uploads/images/gallery/2024-02/Dkximage.png)</span>

<span style="color: rgb(126, 140, 141);">Este comando nos dará una clave aleatoria por ejemplo <span data-darkreader-inline-bgcolor="" style="background-color: rgb(241, 196, 15); --darkreader-inline-bgcolor: #907508;">"3JNHDCNSM3DHISN(&amp;JD83ND3U"</span></span>

<span style="color: rgb(126, 140, 141);">Ahora vamos a cambiar los permisos de la clave para que solo pueda acceder el usuario creador.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Lxwimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/Lxwimage.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora necesitamos una clave pública pero que este relacionada con la privada. </span>

<span style="color: rgb(126, 140, 141);">Vamos a suponer <span style="background-color: rgb(53, 152, 219);">"874FD6V8S838YE8%&amp;(/8648367"</span>.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/S00image.png)](https://wikasa.es/uploads/images/gallery/2024-02/S00image.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora vamos a crear y modificar el archivo wg0.conf del directorio de configuración de wireguard.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/XSGimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/XSGimage.png)</span>

<span style="color: rgb(126, 140, 141);">Y añadimos la siguiente configuración.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/FJNimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/FJNimage.png)</span>

<span style="color: rgb(126, 140, 141);">Donde pone privatekey, como el propio parámetro dice hay que poner la clave privada que fue la primera que creamos, para el tutorial vamos a coger el dicho anteriormente <span style="background-color: rgb(241, 196, 15);">"3JNHDCNSM3DHISN(&amp;JD83ND3U"</span></span>

<span style="color: rgb(126, 140, 141);">En dirección ponemos la ip que queramos que tenga el servidor vpn, no se refiere al rango.</span>

<span style="color: rgb(126, 140, 141);">El puerto que queramos poner, en este ejemplo he puesto 10296.</span>

<span style="color: rgb(126, 140, 141);">Y el parámetro saveconfig para que guarde la configuración cuando una interfaz de wireguard se apague.</span>

<span style="color: rgb(126, 140, 141);">Ahora vamos a ver que nombre de interfaz de red tenemos en el servidor.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/uGKimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/uGKimage.png)</span>

<span style="color: rgb(126, 140, 141);">Vemos que es ens18 en este caso, nos vamos al archivo wg0 y añadimos dos reglas de iptables que hacen lo siguiente:</span>

<span style="color: rgb(126, 140, 141);">PostUp:</span>

<span style="color: rgb(126, 140, 141);">iptables -A FORWARD -i %i -j ACCEPT: Añade una regla a la cadena FORWARD para permitir el reenvío de paquetes provenientes de la interfaz especificada (%i).</span>

  
<span style="color: rgb(126, 140, 141);">iptables -t nat -A POSTROUTING -o \[NOMBRE\_INTERFAZ\_INTERNET\] -j MASQUERADE: Añade una regla a la tabla de nat para realizar el enmascaramiento de direcciones (NAT) en la interfaz de salida especificada (\[NOMBRE\_INTERFAZ\_INTERNET\]), lo que permite que los paquetes parezcan provenir de la interfaz principal.</span>

  
<span style="color: rgb(126, 140, 141);">PostDown:</span>

<span style="color: rgb(126, 140, 141);">iptables -D FORWARD -i %i -j ACCEPT: Elimina la regla que permite el reenvío de paquetes provenientes de la interfaz especificada (%i).</span>

  
<span style="color: rgb(126, 140, 141);">iptables -t nat -D POSTROUTING -o \[NOMBRE\_INTERFAZ\_INTERNET\] -j MASQUERADE: Elimina la regla de enmascaramiento de direcciones para la interfaz de salida especificada (\[NOMBRE\_INTERFAZ\_INTERNET\]).</span>

[![image.png](https://wikasa.es/uploads/images/gallery/2024-05/scaled-1680-/image.png)](https://wikasa.es/uploads/images/gallery/2024-05/image.png)

<span style="color: rgb(126, 140, 141);">Ahora vamos a modificar los permisos del archivo wg0.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/JdQimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/JdQimage.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora vamos a probar a activar la interfaz.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/GJMimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/GJMimage.png)</span>

<span style="color: rgb(126, 140, 141);">Y podemos comprobar el funcionamiento.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Y16image.png)](https://wikasa.es/uploads/images/gallery/2024-02/Y16image.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora que hemos comprobado que funciona vamos a indicarle que se inicie automáticamente al iniciar el sistema.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/od3image.png)](https://wikasa.es/uploads/images/gallery/2024-02/od3image.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora vamos a modificar el sistema para permitir el reenvío del tráfico.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/yCXimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/yCXimage.png)</span>

<span style="color: rgb(126, 140, 141);">Entramos y descomentamos la primera línea de la imagen, la segunda es por si lo estáis haciendo con ipv6.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Tgbimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/Tgbimage.png)</span>

<span style="color: rgb(126, 140, 141);">Ahora comprobamos que este bien.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Q8Iimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/Q8Iimage.png)</span>

<span style="color: rgb(126, 140, 141);">Tenemos que activar el firewall y añadirle el puerto de la vpn.</span>

<span style="color: rgb(126, 140, 141);">[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/lJ4image.png)](https://wikasa.es/uploads/images/gallery/2024-02/lJ4image.png)</span>

#### <span style="color: rgb(224, 62, 45);">Y el ultimo paso es modificar el MTU para bajarlo a 1420.</span>

<span style="color: rgb(126, 140, 141);">sudo ip link set dev &lt;nombre\_interfaz&gt; mtu 1420</span>

<span style="color: rgb(126, 140, 141);">Y con ello ya podríamos dar por terminado la instalación y configuración de wireguard, el siguiente tutorial es como añadir un cliente.</span>

# Añadir un cliente a WireGuard

<span style="background-color: rgb(241, 196, 15);">Si ya esta el servidor encendido y no queremos pararlo, podemos añadir clientes/pares con el siguiente comando.</span>

Creamos las claves privadas y publicas del cliente (necesitamos entrar en root)

wg genkey &gt; /etc/wireguard/keys/cliente.key

cat /etc/wireguard/keys/cliente.key | wg pubkey

Y lo añadimos con lo siguiente.

sudo wg set wg0 peer \[CLAVE\_PUBLICA\_CLIENTE\] allowed-ips \[IP\_CLIENTE\_VPN\]

Para empezar vamos a crear una carpeta que almacene las claves.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/7Auimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/7Auimage.png)

Y dentro del directorio le otorgamos permisos predeterminados para que solo el usuario pueda entrar a los documentos.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/faeimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/faeimage.png)

Creamos las claves privadas y publicas del cliente (necesitamos entrar en root)

wg genkey &gt; /etc/wireguard/keys/cliente.key

cat /etc/wireguard/keys/cliente.key | wg pubkey

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/0Opimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/0Opimage.png)

Ahora nos vamos al archivo wg0.conf y añadimos lo siguiente.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/ktVimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/ktVimage.png)

Ahora encendemos el servidor y comprobamos el estado.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/s25image.png)](https://wikasa.es/uploads/images/gallery/2024-02/s25image.png)

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/oewimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/oewimage.png)

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/Xprimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/Xprimage.png)

Ahora tenemos que irnos al cliente e instalar wireguard, en mi caso iré a un iphone.

Al instalar la aplicación y entrar nos dirá de agregar un tunel.

[![IMG_1451.PNG](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/img-1451.PNG)](https://wikasa.es/uploads/images/gallery/2024-02/img-1451.PNG)

Ahora tenemos que rellenar los siguientes puntos.

Las claves son las generadas en el servidor.

La dirección es la que le asignamos en el servidor.

Puerto de escucha la misma que el servidor y en mi caso puse el DNS de google.

[![IMG_1454.PNG](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/HLsimg-1454.PNG)](https://wikasa.es/uploads/images/gallery/2024-02/HLsimg-1454.PNG)

En la parte de abajo tenemos que poner la clave pública del servidor, donde pone punto final se refiere a la ip pública del servidor junto al puerto, el IPs permitidas recomiendo siempre dejarlo en 0.0.0.0/0 a no ser que queramos otra cosa y el Keepalive nos recomienda wireguard 25 segundos pero yo pongo 35, esto sirve para que cada 35 segundos compruebe si la conexión sigue activa. Las dos opciones ultimas "Celular" y "Wi-Fi" es para que pongamos si queremos que la vpn se active automaticamente al utilizar datos o wifi.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/kcmimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/kcmimage.png)

Una vez conectados veremos lo siguiente en el apartado par.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/JSvimage.png)](https://wikasa.es/uploads/images/gallery/2024-02/JSvimage.png)

Y si en el servidor ponemos el siguiente comando veremos como llegan las solicitudes al servidor.

[![image.png](https://wikasa.es/uploads/images/gallery/2024-02/scaled-1680-/tf0image.png)](https://wikasa.es/uploads/images/gallery/2024-02/tf0image.png)

Y ya tendríamos todo listo, y si haces un script que automáticamente añada el par en el servidor y le mande al usuario un archivo zip para añadirlo a la aplicación sin tocar nada?