WireGuard – Un túnel VPN rápido, moderno y seguro para Linux

WireGuard es una implementación moderna, segura, multiplataforma y de propósito general de VPN que utiliza criptografía de última generación. Su objetivo es ser más rápido, simple, liviano y funcional que IPsec y tener un mejor rendimiento que OpenVPN.

Está diseñado para ser utilizado en diversas situaciones y puede implementarse en interfaces integradas, enrutadores de alta capacidad y supercomputadoras por igual; y se ejecuta en sistemas operativos Linux, Windows, macOS, BSD, iOS y Android.

Lectura recomendada: 13 mejores servicios de VPN con suscripción de por vida

Presenta una interfaz extremadamente básica pero poderosa que tiene como objetivo ser simple, tan fácil de configurar e implementar como SSH. Sus principales características incluyen una interfaz de red simple, enrutamiento de claves criptográficas, roaming integrado y soporte de contenedores.

Ten en cuenta que en el momento de escribir esto, está en pleno desarrollo: algunas partes están trabajando hacia una versión estable 1.0, mientras que otras ya han alcanzado ese punto (funcionan correctamente).

En este artículo, aprenderás cómo instalar y configurar WireGuard en Linux para crear un túnel VPN entre dos hosts Linux.

Entorno de prueba

Para esta guía, nuestra configuración (nombre de host e IP pública) es la siguiente:

Node 1 : tecmint-appserver1: 		10.20.20.4
Node 2 : tecmint-dbserver1: 		10.20.20.3

Cómo instalar WireGuard en distribuciones de Linux

Inicia sesión en ambos nodos e instala WireGuard utilizando el comando apropiado para tus distribuciones de Linux de la siguiente manera.

Instalar WireGuard en RHEL 8

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools

Instalar WireGuard en CentOS 8

$ sudo yum install epel-release
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools

Instalar WireGuard en RHEL/CentOS 7

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-tools

Instalar WireGuard en Fedora

$ sudo dnf install wireguard-tools

Instalar WireGuard en Debian

# echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
# printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
# apt update
# apt install wireguard

Instalar WireGuard en Ubuntu

$ sudo add-apt-repository ppa:wireguard/wireguard
$ sudo apt-get update
$ sudo apt-get install wireguard

Instalar WireGuard en OpenSUSE

$ sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
$ sudo zypper install wireguard-kmp-default wireguard-tools

Configurar un túnel VPN de WireGuard entre dos hosts Linux

Cuando la instalación de wireguard esté completa en ambos nodos, puedes reiniciar tus nodos o agregar el módulo wireguard del kernel de Linux usando el siguiente comando en ambos nodos.

$ sudo modprobe wireguard
OR
# modprobe wireguard

A continuación, genera claves públicas y privadas codificadas en base64 utilizando la utilidad wg en ambos nodos como se muestra.

---------- On Node 1 ---------- 
$ umask 077
$ wg genkey >private_appserver1

---------- On Node 2 ----------
$ umask 077
$ wg genkey >private_dbserver1
$ wg pubkey < private_dbserver1
Generate Keys on Both Nodes

Luego, debes crear una interfaz de red (por ejemplo, wg0) para WireGuard en los pares como se muestra a continuación. Luego, asigna direcciones IP a la nueva interfaz de red creada (para esta guía, usaremos la red 192.168.10.0/24).

---------- On Node 1 ---------- 
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.1/24 dev wg0

---------- On Node 2 ----------
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.2/24 dev wg0

Para ver las interfaces de red adjuntas en los pares y sus direcciones IP, usa el siguiente comando IP.

$ ip ad
View Network Interfaces with IP Addresses

A continuación, asigna la clave privada de cada par a la interfaz de red wg0 y activa la interfaz como se muestra.

---------- On Node 1 ---------- 
$ sudo wg set wg0 private-key ./private_appserver1
$ sudo ip link set wg0 up

---------- On Node 2 ----------
$ sudo wg set wg0 private-key ./private_dbserver1
$ sudo ip link set wg0 up

Ahora que ambos enlaces están activos, cada uno con claves privadas asociadas a ellos, ejecuta la utilidad wg sin argumentos para recuperar la configuración de las interfaces de WireGuard en los pares. Luego crea tu túnel VPN de wireguard de la siguiente manera.

El par (clave pública), allowed-ips (red/máscara de subred) y endpoint (ip pública:puerto) pertenecen al par opuesto.

----------  On Node1 (Use the IPs and Public Key of Node 2) ---------- 
$ sudo wg
$ sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24  endpoint  10.20.20.3:54371

----------  On Node2 (Use the IPs and Public Key of Node 1) ----------
$ sudo wg
$ sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint  10.20.20.4:42930
Create Wireguard VPN Tunnel Between Linux Machines

Pruebas del Túnel VPN de WireGuard entre Sistemas Linux

Una vez que se haya creado el túnel VPN de wireguard, haz ping al par opuesto utilizando la dirección de la interfaz de red de wireguard. Luego ejecuta la utilidad wg nuevamente para confirmar un apretón de manos entre los pares, tal como se muestra.

---------- On Node 1 ----------
$ ping 192.168.10.2
$ sudo wg

---------- On Node 2 ----------
$ ping 192.168.10.1
$ sudo wg
Test Wireguard VPN Tunnel Between Linux Machines

¡Eso es todo por ahora! WireGuard es una solución VPN moderna, segura, simple pero potente y fácil de configurar para el futuro. Está en constante desarrollo, por lo tanto, es un trabajo en progreso. Puedes obtener más información, especialmente sobre su funcionamiento interno y otras opciones de configuración, desde la página de inicio de WireGuard.

Source:
https://www.tecmint.com/wireguard-secure-vpn-tunnel-for-linux/