WireGuard VPN
Servidor VPN
Instalación y configuración de WireGuard
Para instalar WireGuard hacemos lo siguiente como cualquier paquete.
Ahora vamos a generar directamente una clave privada y vamos a guardarla.
Este comando nos dará una clave aleatoria por ejemplo "3JNHDCNSM3DHISN(&JD83ND3U"
Ahora vamos a cambiar los permisos de la clave para que solo pueda acceder el usuario creador.
Ahora necesitamos una clave pública pero que este relacionada con la privada.
Vamos a suponer "874FD6V8S838YE8%&(/8648367".
Ahora vamos a crear y modificar el archivo wg0.conf del directorio de configuración de wireguard.
Y añadimos la siguiente configuración.
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 "3JNHDCNSM3DHISN(&JD83ND3U"
En dirección ponemos la ip que queramos que tenga el servidor vpn, no se refiere al rango.
El puerto que queramos poner, en este ejemplo he puesto 10296.
Y el parámetro saveconfig para que guarde la configuración cuando una interfaz de wireguard se apague.
Ahora vamos a ver que nombre de interfaz de red tenemos en el servidor.
Vemos que es ens18 en este caso, nos vamos al archivo wg0 y añadimos dos reglas de iptables que hacen lo siguiente:
PostUp:
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).
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.
PostDown:
iptables -D FORWARD -i %i -j ACCEPT: Elimina la regla que permite el reenvío de paquetes provenientes de la interfaz especificada (%i).
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]).
Ahora vamos a modificar los permisos del archivo wg0.
Ahora vamos a probar a activar la interfaz.
Y podemos comprobar el funcionamiento.
Ahora que hemos comprobado que funciona vamos a indicarle que se inicie automáticamente al iniciar el sistema.
Ahora vamos a modificar el sistema para permitir el reenvío del tráfico.
Entramos y descomentamos la primera línea de la imagen, la segunda es por si lo estáis haciendo con ipv6.
Ahora comprobamos que este bien.
Tenemos que activar el firewall y añadirle el puerto de la vpn.
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.
Añadir un cliente a WireGuard
Si ya esta el servidor encendido y no queremos pararlo, podemos añadir clientes/pares con el siguiente comando.
Creamos las claves privadas y publicas del cliente (necesitamos entrar en root)
wg genkey > /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.
Y dentro del directorio le otorgamos permisos predeterminados para que solo el usuario pueda entrar a los documentos.
Creamos las claves privadas y publicas del cliente (necesitamos entrar en root)
wg genkey > /etc/wireguard/keys/cliente.key
cat /etc/wireguard/keys/cliente.key | wg pubkey
Ahora nos vamos al archivo wg0.conf y añadimos lo siguiente.
Ahora encendemos el servidor y comprobamos el estado.
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.
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.
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.
Una vez conectados veremos lo siguiente en el apartado par.
Y si en el servidor ponemos el siguiente comando veremos como llegan las solicitudes al servidor.
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?