Instalar Servidor VPN Wireguard

Wireguard es un protocolo VPN de código abierto alternativo a IPSec, IKEv2 y OpenVPN. Wireguard está diseñado para sistemas operativos Linux y Unix, se ejecuta en el espacio del kernel de Linux, lo que hace que Wireguard sea más rápido y fiable. Wireguard se utiliza para crear conexiones de túnel seguras entre dos ordenadores o más.

Wireguard pretende sustituir a protocolos VPN como IPSec, IKEv2 y OpenVPN. Wireguard es más ligero, más rápido, más fácil de configurar y más eficaz. Y al mismo tiempo, Wiregurad no ha sacrificado el aspecto de seguridad del protocolo VPN. Wireguard es compatible con la criptografía moderna, como el marco del protocolo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF y construcciones seguras de confianza.

Habilitar el módulo del kernel Wireguard

La última versión de Rocky Linux 9 viene con el kernel Linux 5.14 por defecto, que lleva incorporado el módulo del kernel ‘wireguard’. En este paso, habilitarás el módulo del kernel Wirguard e instalarás las ‘wireguard-tools’ en tu servidor Rocky Linux.

Ejecuta el siguiente comando modprobe para activar el módulo del núcleo «wireguard». A continuación, comprueba la lista de módulos del núcleo habilitados mediante el comando ‘lsmod’.

Para cargar el módulo wireguard de forma permanente, puedes ejecutar el siguiente comando para añadir el nuevo archivo de configuración al directorio‘/etc/modules-load.d/’. Esto cargará el módulo del núcleo wireguard permanentemente al arrancar el sistema.

Una vez activado el módulo del núcleo‘wireguard‘, debes instalar el paquete‘wireguard-tools‘ para gestionar el servidor Wireguard. Esto incluye la generación de claves, el arranque del servidor Wireguard y muchas cosas más.

Ejecuta el siguiente comando dnf para instalar«wireguard-tools«. Cuando te pida confirmación, introduce y y pulsa ENTER para continuar.

Generar el par de claves del servidor y del cliente

Las herramientas wireguard proporcionan una línea de comandos en el espacio de usuario para gestionar el despliegue de Wireguard. Hay dos utilidades principales proporcionadas por wireguard-tools:

  • wg – una utilidad de línea de comandos que puede utilizarse para configurar la interfaz de túnel de wireguard. Con esta utilidad, puedes generar pares de claves, verificar el tiempo de ejecución y la interfaz actuales de wireguard, y configurar la interfaz de túnel de Wireguard.
  • wg-quick – una sencilla línea de comandos que puede gestionar la interfaz Wireguard. Puedes iniciar, detener y reiniciar cualquier interfaz wireguard mediante el comando wg-quick.

El primer paso tras habilitar el módulo del núcleo wireguard e instalar wireguard-tools es generar pares de claves para el servidor y el cliente Wireguard. Y esto se puede hacer mediante la utilidad de comandos‘wg‘.

Generar el par de claves del servidor

Ejecuta el siguiente comando ‘wg genkey’ para generar la clave privada del servidor ‘/etc/wireguard/servidor.key‘. A continuación, cambia el permiso por defecto a 0400 para deshabilitar la escritura y ejecución de otras personas y grupos.

Después, ejecuta el siguiente comando para generar la clave pública para el servidor wireguard ‘/etc/wireguard/servidor.pub‘. La clave pública de wireguard se deriva de la clave privada de wireguard ‘/etc/wireguard/servidor.key‘.

Salida:

generar par de claves del servidor

A continuación, verifica las claves pública y privada del servidor wireguard mediante el comando cat que aparece a continuación.

Puede que tengas una clave diferente para las claves pública y privada, pero la salida es similar a ésta:

verificar el par de claves del servidor

Generación del par de claves del cliente

Tras generar el par de claves del servidor wireguard, generarás uno nuevo para el cliente. En este ejemplo, generarás un nuevo par de claves con el nombre«cliente1«.

Ejecuta el siguiente comando para crear un nuevo directorio ‘/etc/wireguard/clientes‘. Este directorio se utilizará para almacenar los pares de claves de cliente.

A continuación, ejecuta el siguiente comando ‘wg genkey’ para generar la clave privada del cliente /etc/wireguard/clientes/cliente1.key‘. A continuación, genera la clave pública del cliente ‘/etc/wireguard/clientes/cliente1.pubmediante el comando‘wg pubkey‘.

Salida:

generar par de claves cliente

Ahora verifica las claves pública y privada de ambos clientes utilizando el comando cat que aparece a continuación.

La clave debe ser similar para el par de claves del servidor y del cliente wireguard, que es una clave de tipo base64.

Configurar el servidor Wireguard

En este paso, crearás un nuevo archivo de configuración para el servidor wireguard, configurarás la interfaz wireguard y configurarás la conexión peer para las conexiones cliente. Esto incluye la configuración de la subred VPN wireguard, la dirección IP del servidor wireguard y la dirección IP para el cliente par.

Para empezar, crea un nuevo archivo de configuración del servidor wireguard /etc/wireguard/wg0.conf ‘ utilizando el siguiente comando del editor nano.

Añade las siguientes líneas al archivo y asegúrate de cambiar la‘PrivateKey‘ por la clave privada del servidor Wirguard‘server.key‘. Con esto, también configurarás la interfaz del servidor Wireguard para que se ejecute en la dirección IP‘10.8.0.1‘. Y para la conexión con el cliente, utilizarás el puerto UDP 51820, en el ejemplo utilizaremos el 1194. Y, por último, también activarás el parámetro SaveConfig que garantizará que cualquier cambio se guarde en el archivo de configuración de Wireguard, incluso cuando la interfaz Wireguard esté apagada.

Configurar el reenvío de puertos

Para configurar cualquier servidor VPN, debes habilitar el reenvío de puertos en tu servidor de despliegue. En este paso, habilitarás el reenvío de puertos en tu servidor Rocky Linux mediante el archivo ‘/etc/sysctl.conf’.

Abre el archivo de configuración ‘/etc/sysctl.conf‘ utilizando el editor nano que aparece a continuación.

Añade las siguientes líneas al final del mismo. Estas líneas habilitarán el reenvío de puertos tanto para IPv4 como para IPv6. Tanto si necesitas IPv6 como si no, puedes desactivarlo poniendo un comentario‘#’ al principio de la línea.

# Port forwarding for IPv6
net.ipv6.conf.all.forwarding=1

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando‘sysctl‘ para aplicar los cambios en el archivo‘/etc/sysctl.conf‘.

Y recibirás una salida similar a ésta:

activar el reenvío de puertos

Con el Reenvío de Puertos activado, a continuación configurarás un cortafuegos que se utilizará para enrutar el tráfico de los clientes a la interfaz de red específica del servidor wireguard.

Configurar el cortafuegos

Si Desactivas el firewalld, debes saltarte este paso.

En este paso configurarás el firewalld en el servidor Wireguard. Enrutarás el tráfico de los clientes a la interfaz de red específica del servidor wireguard a través de firewalld. Y esto se puede hacer añadiendo nuevas reglas a firewalld de forma permanente, o utilizando los parámetros‘PostUp‘ y‘PostDown’ de wireguard en el archivo de configuración de Wireguard.

Antes de empezar, ejecuta el siguiente comando ip para comprobar la interfaz de red por defecto que se utiliza para acceder a Internet en el servidor wireguard.

Recibirás una salida similar a ésta – En este ejemplo, el servidor wireguard utilizaba la interfaz eth0 para el acceso a Internet. Puede que tengas nombres diferentes de interfaces de red en tu servidor.

mostrar ruta por defecto

A continuación, abre el archivo de configuración del servidor wireguard ‘/etc/wireguard/wg0.conf‘ utilizando el siguiente comando del editor nano.

Añade las siguientes líneas a la sección ‘[Interfaz]‘.

PostDown = firewall-cmd –zone=public –remove-masquerade
PostDown = firewall-cmd –direct –remove-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT
PostDown = firewall-cmd –direct –remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE

Guarda y sal del archivo.

  • El parámetro ‘PostUp‘ se ejecutará cada vez que el servidor Wirguard inicie el túnel VPN.
  • El parámetro «PostDown» se ejecutará cada vez que el servidor Wireguard detenga el túnel VPN.
  • El comando‘firewall-cmd –zone=public –add-masquerade‘ habilitará el enmascaramiento en firewalld.
  • El comando ‘firewall-cmd–direct –add-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT‘ añadirá firewalld rich-rule para el tráfico desde la interfaz wireguard a eth0.
  • El comando ‘firewall-cmd –direct –add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE‘ habilitará NAT a través de la interfaz eth0.
  • En el parámetro ‘PostDown‘, todos estos comandos se utilizan para revertir los cambios en firewalld eliminando las reglas que se aplicaron durante la ejecución de los comandos en el parámetro‘PostUp‘.

A continuación, ejecuta el siguiente comando firewall-cmd para abrir el puerto UDP 51820 que se utilizará para los clientes de wirguard. A continuación, recarga el firewalld para aplicar los cambios.

Por último, verifica las reglas del firewalld mediante el siguiente comando firewall-cmd.

Deberías recibir una salida como ésta – El puerto 51820/udp del cliente wireguard añadido al firewalld.

configurar firewalld

Con esto, ya has habilitado el reenvío de puertos en el servidor wireguard y configurado el firewalld para enrutar el tráfico desde la interfaz wireguard a la interfaz de red específica. Ahora estás preparado para iniciar el servidor wireguard.

Iniciar el servidor wireguard

En este paso, iniciarás y habilitarás el servidor Wireguard. También verificarás el servidor Wireguard y verificarás la interfaz wg0 que creará el servicio Wireguard.

Ejecuta la siguiente utilidad de comandos systemctl para iniciar y habilitar el servidor wireguard. Esto iniciará el servicio wireguard y creará una nueva interfaz wireguard‘wg0‘.

Verifica el servidor wireguard utilizando el siguiente comando systemctl. Esto asegurará que el servidor wireguard se está ejecutando.

Y recibirás una salida similar a ésta – El servidor wireguard está ahora habilitado y se ejecutará automáticamente al arrancar. Y el estado del servidor wireguard es en ejecución.

iniciar la verificación del servidor wireguard

También puedes verificar la interfaz «wg0» creada por el servidor wireguard mediante el siguiente comando ip.

Recibirás la interfaz detallada de wg0, que coincide con el archivo de configuración del servidor wireguard ‘/etc/wireguard/wg0.conf’. La interfaz wg0 debe tener una dirección IP‘10.8.0.1‘ como se describe en el archivo de configuración de wireguard ‘/etc/wireguard/wg0.conf‘.

verificar wireguard ip

Otro método que se puede utilizar para iniciar el servidor wireguard es utilizar la utilidad de comandos ‘wg-quick‘ que proporciona wireguard-tools.

Ejecuta ‘wg-quickup‘ para iniciar el servidor wireguard y‘wg-quick down‘ para detenerlo. Además, asegúrate de especificar la ruta completa de tu archivo de configuración del servidor wireguard ‘/etc/wireguard/wg0.conf‘.

En este punto, el servidor wireguard se está ejecutando en el servidor Linux Rocky. En el siguiente paso, configurarás una máquina cliente y la conectarás al servidor wireguard.

Configurar el cliente y conectarlo

Crear llave privada del cliente

Crear llave publica

Configurar la llave publica (nombre.key) en el servidor en la sección de Peers

Instalacion para Centos 7

Crear el archivo pa conectarse al servidor VPN

Contenido

Cambiar los permisos

Subir la VPN

Ver la configuración en el servidor y en el cliente

 

Referencia:

Cómo instalar Wireguard VPN en Rocky Linux 9

https://www.hostafrica.co.za/blog/linux/install-wireguard-vpn-centos-7/

https://reintech.io/blog/setting-up-vpn-server-wireguard-rocky-linux-9#google_vignette

 

 

 

Deja una respuesta