Cómo configurar WireGuard VPN en CentOS 8

1 mar 2021 7 min di lettura
Cómo configurar WireGuard VPN en CentOS 8
Indice dei contenuti

Introducción

WireGuard es una red privada virtual (VPN) sencilla y moderna con cifrado de última generación. Es más rápido, más fácil de configurar y tiene un mejor rendimiento que otras soluciones similares, como IPsec y OpenVPN.

WireGuard es multiplataforma y puede funcionar prácticamente en cualquier lugar, incluidos Linux, Windows, Android y macOS. Wireguard es una VPN de igual a igual; no se basa en el modelo cliente-servidor. Dependiendo de su configuración, un par puede actuar como un servidor o cliente tradicional.

WireGuard funciona creando una interfaz de red en cada dispositivo del mismo nivel que funciona como un túnel. Los pares se autentican entre sí intercambiando y validando claves públicas, imitando el modelo SSH. Las claves públicas se asignan a una lista de direcciones IP permitidas en el túnel. El tráfico de VPN está encapsulado en UDP.

Este tutorial describe cómo configurar WireGuard en una computadora CentOS 8 que actuará como un servidor VPN. También le mostraremos cómo configurar WireGuard como cliente. El tráfico del cliente se enrutará a través del servidor CentOS 8. Esta configuración se puede utilizar para proteger contra ataques Man in the Middle, navegar por la web de forma anónima, ignorar el contenido restringido geográficamente o permitir que los colegas que trabajan desde casa se conecten de forma segura a la red corporativa.

Prerrequisitos

Necesitará un servidor CentOS 8 en el que pueda iniciar sesión como root o cuenta con privilegios sudo y el firewall instalado en su servidor CentOS 8.

Instalar WireGuard

Comenzaremos instalando WireGuard en la máquina CentOS y configurándolo para que actúe como servidor. También configuraremos el sistema para enrutar el tráfico del cliente a través de él.

Las herramientas de WireGuard y el módulo de kernel están disponibles para su instalación desde los repositorios de Epel y Elrepo. Para agregar los repositorios al sistema, ejecute el siguiente comando:

sudo dnf install epel-release elrepo-release

Una vez hecho esto, instale los paquetes WireGuard:

sudo dnf install kmod-wireguard wireguard-tools

Es posible que se le solicite que importe las claves GPG del repositorio. Escriba y cuando se le solicite.

Configurar WireGuard

El wireguard-tools incluye dos herramientas de línea de comando llamadas wg y wg-quick que le permiten configurar y administrar interfaces WireGuard.

Almacenaremos la configuración del servidor VPN y en el /etc/wireguard. En CentOS, este directorio no se crea durante la instalación. Ejecute el siguiente comando para crear el directorio:

sudo mkdir /etc/wireguard

Genere las claves públicas y privadas en el /etc/wireguard.

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Puede ver archivos con cat o less. La clave privada nunca debe compartirse con nadie.

Ahora que se generan las claves, el siguiente paso es configurar el dispositivo de túnel que enrutará el tráfico VPN.

El dispositivo se puede configurar desde la línea de comando usando ip y wg o creando el archivo de configuración con un editor de texto.

Instale el editor de texto nano si aún no está instalado:

sudo dnf install nano

Cree un nuevo archivo llamado wg0.conf y agregue el siguiente contenido:

sudo nano /etc/wireguard/wg0.conf
[Interface]
 Address = 10.0.0.1/24
 SaveConfig = true
 ListenPort = 51820
 PrivateKey = SERVER_PRIVATE_KEY
 PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade
 PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade
/etc/wireguard/wg0.conf

La interfaz se puede nombrar como se desee, sin embargo, se recomienda usar algo como include wg0 o wgvpn0. Los ajustes en la sección de interfaz tienen el siguiente significado:

  • Dirección: una lista separada por comas de direcciones IP v4 o v6 para la interfaz wg0 Utilice IP de un rango reservado para redes privadas (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16).
  • ListenPort: el puerto en el que WireGuard aceptará conexiones entrantes.
  • PrivateKey: una clave privada generada por el comando wg genkey (Para ver el contenido del archivo ejecutado sudo cat /etc/wireguard/privatekey )
  • SaveConfig: si se establece en verdadero, el estado actual de la interfaz se guarda en el archivo de configuración al apagar.
  • PostUp: comando o script que se ejecuta antes de abrir la interfaz. En este ejemplo, usamos firewall-cmd para abrir el puerto WireGuard y habilitar el enmascaramiento. Esto permitirá que el tráfico salga del servidor, dando acceso a Internet a los clientes VPN.
  • PostDown: comando o script que se ejecuta antes de deshabilitar la interfaz. Las reglas de firewall se eliminarán una vez que se desactive la interfaz.

Los wg0.conf y privatekey no deben ser legibles por usuarios normales. Use chmod para establecer los permisos en 600:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

Una vez hecho esto, abra la wg0 usando los atributos especificados en el archivo de configuración:

sudo wg-quick up wg0

El comando generará algo como esto:

[#] ip link add wg0 type wireguard
 [#] wg setconf wg0 /dev/fd/63
 [#] ip -4 address add 10.0.0.1/24 dev wg0
 [#] ip link set mtu 1420 up dev wg0
 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Para ver el estado y la configuración de la interfaz, ejecute:

sudo wg show wg0
interface: wg0
 public key: z//Gb63cqmICNZcsja76y9LdSFyBgfVb5JHO3SZyVTo=
 private key: (hidden)
 listening port: 51820

También puede usar el ip para verificar el estado de la interfaz:

ip a show wg0
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
 link/none
 inet 10.0.0.1/24 scope global wg0
 valid_lft forever preferred_lft forever

Para que la wg0, ejecute el siguiente comando:

sudo systemctl enable wg-quick@wg0

Redes de servidores

Para que NAT funcione, el reenvío de IP debe estar habilitado. Cree el siguiente /etc/sysctl.d/99-custom.conf y agregue la siguiente línea:

sudo nano /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward=1
/etc/sysctl.d/99-custom.conf

Guarde el archivo y aplique el cambio:

sudo sysctl -p /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1

Eso es todo. Se ha configurado el par de CentOS que actuará como servidor.

Instale los clientes de Linux y macOS

Las instrucciones de instalación para todas las plataformas compatibles están disponibles en https://wireguard.com/install/. En sistemas Linux, puede instalar el paquete utilizando el administrador de paquetes de distribución y en macOS con brew. Una vez que WireGuard esté instalado, siga los pasos a continuación para configurar el dispositivo cliente.

El proceso para configurar un cliente de Linux y macOS es prácticamente el mismo que hizo para el servidor. Comience generando las claves públicas y privadas:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Cree el wg0.conf y agregue el siguiente contenido:

sudo nano /etc/wireguard/wg0.conf
[Interface]
 PrivateKey = CLIENT_PRIVATE_KEY
 Address = 10.0.0.2/24


 [Peer]
 PublicKey = SERVER_PUBLIC_KEY
 Endpoint = SERVER_IP_ADDRESS:51820
 AllowedIPs = 0.0.0.0/0
/etc/wireguard/wg0.conf

Los ajustes en la sección de interfaz tienen el mismo significado que al configurar el servidor:

  • Dirección: una lista separada por comas de direcciones IP v4 o v6 para la interfaz wg0
  • PrivateKey: para ver el contenido del archivo en la computadora cliente en ejecución: sudo cat /etc/wireguard/privatekey

La sección de pares contiene los siguientes campos:

  • PublicKey: una clave pública del par al que desea conectarse. (El contenido del archivo del servidor /etc/wireguard/publickey ).
  • Punto final: una IP o nombre de host del par al que desea conectarse seguido de dos puntos, luego un número de puerto en el que escucha el par remoto.
  • DPI permitido: una lista separada por comas de direcciones IP v4 o v6 desde las que se permite el tráfico entrante para este par y a las que se enruta el tráfico saliente para este par. Estamos usando 0.0.0.0/0 porque estamos enrutando el tráfico y queremos que el servidor del mismo nivel envíe paquetes con cualquier IP de origen.

Si necesita configurar clientes adicionales, repita los mismos pasos con una dirección IP privada diferente.

Instalar el cliente de Windows

Descargue e instale el paquete msi de Windows desde el sitio web de WireGuard.

Una vez instalada, abra la aplicación WireGuard y haga clic en " Agregar túnel " -> " Agregar túnel vacío... ".

Se crea automáticamente un par de claves públicas y se muestra en la pantalla.

Ingrese un nombre para el túnel y cambie la configuración de la siguiente manera:

[Interface]
 PrivateKey = CLIENT_PRIVATE_KEY
 Address = 10.0.0.2/24


 [Peer]
 PublicKey = SERVER_PUBLIC_KEY
 Endpoint = SERVER_IP_ADDRESS:51820
 AllowedIPs = 0.0.0.0/0

En la sección de interfaz, agregue una nueva línea para definir la dirección del túnel del cliente.

En la sección de pares, agregue los siguientes campos:

  • PublicKey: la clave pública del servidor CentOS (archivo /etc/wireguard/publickey ).
  • Punto final: la dirección IP del servidor CentOS seguida de dos puntos y el puerto WireGuard (51820).
  • IP permitida - 0.0.0.0/0

Una vez hecho esto, haga clic en el botón " Guardar ".

Agregue el cliente par al servidor

El último paso es agregar la clave pública del cliente y la dirección IP al servidor:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

Asegúrese de cambiar CLIENT_PUBLIC_KEY a la clave pública que generó en la computadora cliente ( sudo cat /etc/wireguard/publickey ) y ajuste la dirección IP del cliente si es diferente. Los usuarios de Windows pueden copiar la clave pública de la aplicación WireGuard.

Una vez hecho esto, regrese a la computadora cliente y vea la interfaz de túnel.

Cliente Linux y macOS

En clientes Linux, ejecute el siguiente comando para abrir la interfaz:

sudo wg-quick up wg0

Ahora debería estar conectado al servidor CentOS y el tráfico de su computadora cliente debería enrutarse a través de él. Puedes comprobar la conexión con:

sudo wg
interface: wg0
 public key: qEmVlRE+O/g74NTT6AjkqPEjGkcOQPu9Id7SgcJe/2E=
 private key: (hidden)
 listening port: 51820
 fwmark: 0xca6c

 peer: z//Gb63cqmICNZcsja76y9LdSFyBgfVb5JHO3SZyVTo=
 endpoint: XXX.XXX.XXX.XXX:51820
 allowed ips: 0.0.0.0/0
 latest handshake: 21 seconds ago
 transfer: 123.25 KiB received, 106.68 KiB sent

También puede abrir su navegador, escribir " mi IP " y debería ver la dirección IP de su servidor CentOS.

Para detener el túnel, desactive la interfaz wg0

sudo wg-quick down wg0

Cliente de Windows

Si ha instalado WireGuard en Windows, haga clic en el botón " Activar ". Una vez que los pares están conectados, el estado del túnel cambiará a Activo:

Conclusión

Le mostramos cómo instalar WireGuard en una computadora CentOS 8 y configurarlo como un servidor VPN. Esta configuración le permite navegar por la web de forma anónima mientras mantiene la privacidad de sus datos de tráfico.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.