Saltar al contenido
solo software libre

Cómo configurar WireGuard VPN en CentOS 8 Linux

Cómo-configurar-WireGuard-VPN-en-CentOS-8-Linux

 

WireGuard es una VPN (red privada virtual) simple y moderna con criptografía de última generación. Es más rápido, más fácil de configurar y más eficiente que otras soluciones similares, como IPsec y OpenVPN .

WireGuard es multiplataforma y puede ejecutarse en casi cualquier lugar, incluidos Linux, Windows, Android y macOS. Wireguard es una VPN punto a punto; 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 mediante la creación de una interfaz de red en cada dispositivo par que funciona como un túnel. Los pares se autentican intercambiando y validando claves públicas, imitando el modelo SSH. Las claves públicas se asignan con una lista de direcciones IP que están permitidas en el túnel. El tráfico VPN está encapsulado en UDP.

Este tutorial describe cómo configurar WireGuard en una máquina 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 como protección contra los ataques de Man in the Middle, navegando por la web de forma anónima, evitando el contenido restringido geográficamente o permitiendo que sus colegas que trabajan desde casa se conecten a la red de la empresa de forma segura.

indice

Prerrequisitos

Necesitará un servidor CentOS 8 al que pueda acceder como root o cuenta con privilegios de sudo .

Configuración del servidor 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 de los clientes a través de él.

Instalación de WireGuard en CentOS 8

Las herramientas WireGuard y el módulo del núcleo están disponibles para su instalación desde los repositorios Epel y Elrepo. Para agregar los repositorios a su 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

You may be asked to import the repositories GPG Keys. Type y when prompted.

Configuring WireGuard

Se le puede pedir que importe los repositorios GPG Keys. Escriba ycuando se le solicite.

Configurar WireGuard

El wireguard-toolspaquete incluye dos herramientas de línea de comandos con nombre wgwg-quickque le permiten configurar y administrar las interfaces WireGuard.

Almacenaremos la configuración del servidor VPN y en el /etc/wireguarddirectorio. 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/wireguarddirectorio.

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

Puede ver los archivos con catless. 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 comandos usando ipwgo creando el archivo de configuración con un editor de texto.

Cree un nuevo archivo llamado wg0.confy agregue los siguientes contenidos:

sudo nano /etc/wireguard/wg0.conf
/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

La interfaz se puede nombrar como desee, sin embargo, se recomienda utilizar algo como include wg0wgvpn0La configuración en la sección de la interfaz tiene el siguiente significado:

  • Dirección: una lista de direcciones IP v4 o v6 separadas por comas para la wg0interfaz. Utilice IP de un rango reservado para las 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á las conexiones entrantes.
  • PrivateKey: una clave privada generada por el wg genkeycomando. (Para ver el contenido del archivo de ejecución: sudo cat /etc/wireguard/privatekey)
  • SaveConfig: cuando se establece en verdadero, el estado actual de la interfaz se guarda en el archivo de configuración cuando se apaga.
  • PostUp: comando o script que se ejecuta antes de abrir la interfaz. En este ejemplo, estamos usando firewall-cmdpara abrir el puerto WireGuard y habilitar el enmascaramiento. Esto permitirá que el tráfico salga del servidor, dando a los clientes VPN acceso a Internet.
  • PostDown: comando o script que se ejecuta antes de desactivar la interfaz. Las reglas del firewall se eliminarán una vez que la interfaz esté inactiva.

Los archivos wg0.confprivatekeyno deben ser legibles para los usuarios normales. Use chmodpara establecer los permisos para 600:

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

Una vez hecho esto, active la wg0interfaz utilizando 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: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
  private key: (hidden)
  listening port: 51820

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

ip a show wg0
4: 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 traer la wg0interfaz en el momento del arranque, ejecute el siguiente comando:

sudo systemctl enable wg-quick@wg0

Servidor de redes

Para que NAT funcione, debemos habilitar el reenvío de IP. Cree un nuevo archivo /etc/sysctl.d/99-custom.confy agregue la siguiente línea:

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

Guarde el archivo y aplique el cambio usando sysctl:

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

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

Linux and macOS Clients Setup

Configuración de clientes Linux y macOS

Las instrucciones de instalación para todas las plataformas compatibles están disponibles en httpss://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 instale WireGuard, siga los pasos a continuación para configurar el dispositivo cliente.

El proceso para configurar un cliente Linux y macOS es más o menos el mismo que 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 archivo wg0.confy agregue los siguientes contenidos:

sudo nano /etc/wireguard/wg0.conf
/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

La configuración en la sección de la interfaz tiene el mismo significado que al configurar el servidor:

  • Dirección: una lista de direcciones IP v4 o v6 separadas por comas para la wg0interfaz.
  • PrivateKey: para ver el contenido del archivo en la máquina cliente, ejecute: 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 /etc/wireguard/publickeyarchivo del servidor ).
  • Punto final: una IP o nombre de host del par al que desea conectarse seguido de dos puntos, y luego un número de puerto en el que escucha el par remoto.
  • IP permitidas: una lista separada por comas de direcciones IP v4 o v6 desde la que se permite el tráfico entrante para el igual y hacia el que se dirige 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, simplemente repita los mismos pasos con una dirección IP privada diferente.

Configuración de clientes de Windows

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

Una vez instalado, abra la aplicación WireGuard y haga clic en «Agregar túnel» -> «Agregar túnel vacío …» como se muestra en la imagen a continuación:

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

Ingrese un nombre para el túnel y edite 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 ( /etc/wireguard/publickeyarchivo).
  • Punto final: la dirección IP del servidor CentOS seguido de dos puntos y el puerto WireGuard (51820).
  • IP permitidas – 0.0.0.0/0

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

Agregue el cliente igual 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_KEYcon la clave pública que generó en la máquina del 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 máquina del cliente y abra la interfaz de túnel.

Clientes Linux y macOS

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

sudo wg-quick up wg0

Ahora debe estar conectado al servidor CentOS, y el tráfico de su máquina cliente debe enrutarse a través de él. Puede verificar la conexión con:

sudo wg
interface: wg0
  public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
  private key: (hidden)
  listening port: 60351
  fwmark: 0xca6c

peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 41 seconds ago
  transfer: 213.25 KiB received, 106.68 KiB sent

También puede abrir su navegador, escribir «what is my ip», y debería ver la dirección IP de su servidor CentOS.

Para detener el túnel, baje la wg0interfaz:

sudo wg-quick down wg0

Clientes de Windows

Si instaló 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 hemos mostrado cómo instalar WireGuard en una máquina CentOS 8 y configurarlo como un servidor VPN. Esta configuración le permite navegar por la web de forma anónima manteniendo sus datos de tráfico privados.

Si tiene algún problema, no dude en dejar un comentario.

 

PASS:)

1634