WireGuard: un túnel VPN rápido, moderno y seguro para Linux


WireGuard es una implementación de VPN moderna, segura, multiplataforma y de uso general que utiliza criptografía de última generación. Su objetivo es ser más rápido, más simple, más ágil y más funcional que IPsec y tiene la intención de ser más eficiente que OpenVPN.

Está diseñado para su uso en diversas circunstancias y se puede implementar en interfaces integradas, enrutadores troncales completamente cargados y supercomputadoras por igual; y se ejecuta en los sistemas operativos Linux, Windows, macOS, BSD, iOS y Android.

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

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

Tenga en cuenta que en el momento de escribir este artículo, se encuentra en un gran desarrollo: algunas de sus partes están trabajando hacia una versión 1.0 estable, mientras que otras ya están allí (funcionando bien).

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

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

Inicie sesión en ambos nodos e instale WireGuard usando el siguiente comando apropiado para sus distribuciones de Linux de la siguiente manera.

$ 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
$ 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
$ 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
$ sudo dnf install wireguard-tools
# 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
$ sudo add-apt-repository ppa:wireguard/wireguard
$ sudo apt-get update
$ sudo apt-get install wireguard
$ sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
$ sudo zypper install wireguard-kmp-default wireguard-tools

Configuración de un túnel VPN WireGuard entre dos hosts Linux

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

$ sudo modprobe wireguard
OR
# modprobe wireguard

A continuación, genere 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

A continuación, debe crear una interfaz de red (por ejemplo, wg0) para wiregaurd en los pares, como se muestra a continuación. Luego asigne 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, use el siguiente comando IP.

$ ip ad

A continuación, asigne la clave privada para cada par a la interfaz de red wg0 y abra 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 con ellos, ejecute la utilidad wg sin ningún argumento para recuperar la configuración de las interfaces WireGuard en los pares. Luego, cree su túnel VPN wireguard de la siguiente manera.

El par (clave pública), los IPS permitidos (red/máscara de subred) y el punto final (IP pública: puerto) son del 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

Prueba del túnel VPN WireGuard entre sistemas Linux

Una vez que se ha creado el túnel VPN de wireguard, haga ping al par opuesto utilizando la dirección de la interfaz de red de wireguard. Luego ejecute la utilidad wg una vez más para confirmar un apretón de manos entre los pares como se muestra.

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

---------- On Node 2 ----------
$ ping 192.168.10.1
$ sudo wg

¡Eso es todo por ahora! WireGuard es una solución VPN moderna, segura, simple pero poderosa y fácil de configurar para el futuro. Está experimentando un gran desarrollo, por lo que el trabajo está en curso. Puede obtener más información, especialmente sobre su funcionamiento interno interno y otras opciones de configuración, en la página de inicio de WireGuard.