Ricerca nel sito web

WireGuard: un tunnel VPN veloce, moderno e sicuro per Linux


WireGuard è un'implementazione VPN moderna, sicura, multipiattaforma e generica che utilizza la crittografia all'avanguardia. Mira ad essere veloce, più semplice, più snello e più funzionale di IPsec e intende essere più performante di OpenVPN.

È progettato per l'uso in varie circostanze e può essere implementato su interfacce embedded, router backbone a pieno carico e supercomputer; e funziona su sistemi operativi Linux, Windows, macOS, BSD, iOS e Android.

Lettura consigliata: 13 migliori servizi VPN con abbonamento a vita

Presenta un'interfaccia estremamente semplice ma potente che mira a essere semplice, facile da configurare e distribuire come SSH. Le sue caratteristiche principali includono una semplice interfaccia di rete, routing delle chiavi crittografiche, roaming integrato e supporto dei contenitori.

Tieni presente che al momento in cui scrivo è in fase di sviluppo intenso: alcune delle sue parti stanno lavorando verso una versione 1.0 stabile, mentre altre sono già lì (funzionano bene).

In questo articolo imparerai come installare e configurare WireGuard in Linux per creare un tunnel VPN tra due host Linux.

Ambiente di test

Per questa guida, la nostra configurazione (nome host e IP pubblico) è la seguente:

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

Come installare WireGuard nelle distribuzioni Linux

Accedi a entrambi i nodi e installa WireGuard utilizzando il seguente comando appropriato per le tue distribuzioni Linux come segue.

Installa WireGuard in 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

Installa WireGuard in 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

Installa WireGuard in 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

Installa WireGuard in Fedora

sudo dnf install wireguard-tools

Installa WireGuard in 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

Installa WireGuard su Ubuntu

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

Installa WireGuard in OpenSUSE

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

Configurazione di un tunnel VPN WireGuard tra due host Linux

Una volta completata l'installazione di wireguard su entrambi i nodi, puoi riavviare i nodi o aggiungere il modulo wireguard dal kernel Linux utilizzando il seguente comando su entrambi i nodi.

sudo modprobe wireguard
OR
modprobe wireguard

Successivamente, genera chiavi pubbliche e private con codifica base64 utilizzando l'utilità wg su entrambi i nodi, come mostrato.

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

---------- On Node 2 ----------
umask 077
wg genkey >private_dbserver1
wg pubkey < private_dbserver1

Successivamente, devi creare un'interfaccia di rete (ad esempio wg0) per wiregaurd sui peer come mostrato di seguito. Assegna quindi gli indirizzi IP alla nuova interfaccia di rete creata (per questa guida utilizzeremo la rete 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

Per visualizzare le interfacce di rete collegate sui peer e i relativi indirizzi IP, utilizzare il seguente comando IP.

ip ad

Successivamente, assegna la chiave privata per ciascun peer all'interfaccia di rete wg0 e visualizza l'interfaccia come mostrato.

---------- 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

Ora che entrambi i collegamenti sono attivi, ciascuno con le chiavi private ad essi associate, esegui l'utilità wg senza argomenti per recuperare la configurazione delle interfacce WireGuard sui peer. Quindi crea il tuo tunnel VPN Wireguard come segue.

Il peer (chiave pubblica), ips consentiti (rete/maschera di sottorete) e endpoint (ip pubblico:porta) sono del peer opposto .

----------  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

Test del tunnel VPN WireGuard tra sistemi Linux

Una volta creato il tunnel VPN Wireguard, eseguire il ping del peer opposto utilizzando l'indirizzo dell'interfaccia di rete Wireguard. Quindi esegui nuovamente l'utility wg per confermare un handshake tra i peer come mostrato.

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

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

Per ora è tutto! WireGuard è una soluzione VPN moderna, sicura, semplice ma potente e facile da configurare per il futuro. È in fase di sviluppo intenso, quindi lavori in corso. Puoi ottenere maggiori informazioni in particolare sul suo funzionamento interno e altre opzioni di configurazione dalla home page di WireGuard.