WireGuard è un protocollo prestazionale ed evoluto che permette di allestire connessioni VPN sicure e veloci. Progettato da Jason A. Donenfeld, vuole essere più semplice, sicuro e performante rispetto ad ad altri protocolli VPN, come OpenVPN e IPsec. WireGuard VPN è sempre più spesso implementato nel kernel del sistema operativo (in Linux, almeno, lo è…): ciò contribuisce alla sua efficienza e velocità.
Come abbiamo visto in tanti nostri articoli, WireGuard in sé non è basato su un’architettura client-server tradizionale. Lo schema di funzionamento di WireGuard è infatti di tipo peer-to-peer: i dispositivi che stabiliscono una connessione VPN sono chiamati “peer” e ciascuno di essi usa una chiave privata e una chiave pubblica. L’idea di base è che ogni peer possa comunicare direttamente con ogni altro peer all’interno della rete. I peer WireGuard possono comunicare tra loro senza necessariamente passare attraverso un server centralizzato.
È comunque possibile implementare un’architettura che includa un server centralizzato per gestire la distribuzione delle chiavi, la configurazione iniziale e altre funzionalità di WireGuard. In questa configurazione, il server svolge un ruolo di coordinamento e facilita l’inizializzazione delle connessioni tra i peer, ma una volta che le connessioni sono stabilite, i dati possono fluire direttamente tra i peer senza passare per il server.
WireHub: generare configurazioni client e server per WireGuard VPN
WireGuard è un protocollo VPN innovativo che ha rivoluzionato il modo con cui le reti private virtuali sono progettate e implementate. Presentata a inizio novembre 2023, WireHub si configura come una piattaforma che mira a semplificare ulteriormente l’utilizzo di WireGuard, rendendo la configurazione delle reti VPN un’esperienza efficiente e accessibile.
Ricorrendo a WireHub, gli utenti possono generare facilmente configurazioni WireGuard per allestire e dispiegare le proprie VPN. Ciò elimina la necessità di scambiare file di configurazione tramite email o altri canali, semplificando notevolmente il processo di impostazione della rete sicura.
La piattaforma supporta la generazione delle chiavi, comprese quelle private, direttamente nel browser permettendo parimenti l’eventuale importazione di chiavi preesistenti. WireHub non riceve né memorizza mai le password o le chiavi private perché l’intera procedura è gestita dinamicamente lato client.
WireHub permette di definire regole di accesso basate su etichette per definire il peering tra dispositivi di rete. Il peering si riferisce alla creazione di una connessione diretta e sicura tra due dispositivi di rete. Le etichette sono utili a inquadrare le regole che coprono le varie necessità di peering (identificazione reciproca dei dispositivi), l’eventuale definizione di indirizzi IP consentiti, l’utilizzo di una chiave condivisa per garantire la sicurezza della connessione (PreSharedKey).
Grazie a WireHub è inoltre possibile invitare gli utenti che devono potersi collegare alla WireGuard VPN configurandoli come Ospiti, Membri, Manager o Amministratori. Questo sistema di gestione dei ruoli semplifica la distribuzione delle responsabilità all’interno della rete.
Come usare WireHub
Per semplificare la generazione di configurazioni WireGuard VPN con WireHub, è sufficiente accedere alla home page della piattaforma quindi cliccare su Signup e accedere con un account social (in futuro sarà disponibile anche una registrazione di tipo tradizionale).
A titolo esemplificativo, WireHub propone di default tre reti VPN preconfigurate, contraddistinte con denominazioni differenti.
Con un clic su New network, si può impostare una nuova rete WireGuard VPN assegnandole un nome e definendo l’intervallo di indirizzi IP locali (CIDR) da assegnare ai dispositivi che vi si collegheranno (per maggiori informazioni, suggeriamo di fare riferimento anche al concetto di subnet mask). Nell’apposito riquadro, è inoltre possibile definire anche un server DNS che i peer WireGuard utilizzeranno per la risoluzione dei nomi a dominio.
Impostata la rete (pulsante Create), si può aggiungere il primo dispositivo autorizzato a stabilire una connessione. Supponiamo di configurare, in prima battuta, il proprio notebook personale: con un clic su New Device, si può specificarne il nome, assegnarlo ad esempio a un certo team e spuntare la casella Assign to me.
Il passaggio seguente consiste nell’indicazione della chiave pubblica associata al dispositivo sul quale è installato WireGuard. Si può anche fare in modo che tale chiave sia generata automaticamente da WireHub: basta cliccare su Import or generate. In questo caso, deve essere specificata una password personale da usare a protezione della chiave privata, anch’essa creata all’interno del browser Web.
Come ultimo passo è necessario cliccare sul pulsante Encrypt: la chiave pubblica comparirà nel campo Public key nel riquadro Register a New Interface.
Il pulsante Register Interface consente di registrare il dispositivo che dovrà poi potersi connettere alla WireGuard VPN.
Registrazione di un dispositivo WireGuard server
Allo stesso modo, cliccando nuovamente sul pulsante New device in alto, si può aggiungere un ulteriore dispositivo che funge da server WireGuard, nell’accezione descritta in apertura. Inseriamo dei descrittori pertinenti, come nell’immagine di seguito e clicchiamo su Add Device senza spuntare la casella Assign to me.
Il server è mostrato nell’elenco dei dispositivi: per proseguire, è necessario fare clic sul pulsante “+” di colore blu in basso a sinistra quindi su Add interface. Apparirà un riquadro Register a New Interface come quello incontrato in precedenza.
Configurare la macchina che svolge il ruolo di server WireGuard
Supponiamo di avere a disposizione una macchina Debian Linux (o derivata, ad esempio Ubuntu) da usare come server. In primis, è necessario installare WireGuard: lo si può fare semplicemente digitando quanto segue nella finestra del terminale:
sudo apt install wireguard -y
Il comando seguente permette di generare una coppia di chiavi WireGuard:
wg genkey | tee privatekey | wg pubkey > publickey
La chiave privata è salvata nel file privatekey
, mentre la chiave pubblica all’interno del file publickey
. La chiave pubblica sarà utilizzata per identificare il server da parte degli altri peer o nodi della rete, mentre la chiave privata sarà mantenuta segreta.
La chiave pubblica visualizzabile con il comando cat publickey
, va copiata e incollata nel campo Public Key di WireHub. Nel campo Endpoint bisogna aver cura di specificare l’indirizzo IP pubblico e la porta di comunicazione sulla quale è in ascolto WireGuard.
Sulla macchina Linux va impartito anche il comando sudo apt install resolvconf -y
, un insieme di script e strumenti che gestisce la configurazione dei server DNS nel sistema.
Configurazione delle impostazioni di connessione
Con un clic sul pulsante Edit, a destra di Connections, si possono definire le impostazioni di connessione. Come accennato in precedenza, le connessioni sono gestite in base alle etichette. Nell’esempio che segue i membri di team-admin possono collegarsi alla macchina server Linux.
Oltre a permettere l’inserimento di indirizzi IP e CIDR, il campo Allowed IP supporta anche diverse parole chiave, come peers
, network
e all
.
Una volta fatto clic su Save changes, è possibile aprire il file delle impostazioni con la freccia all’estremità destra del campo del dispositivo server e fare clic su “Download” per scaricarlo.
Il contenuto del file di configurazione esportato da WireHub deve essere salvato sulla macchina Linux come file /etc/wireguard/wg0.conf
. A questo punto è possibile avviare WireGuard:
wg-quick up wg0
Il comando wg show wg0
consente di stabilire se WireGuard risulta correttamente in esecuzione.
Configurazione client WireGuard con i file di configurazione WireHub
Cliccando sul pulsante Download a destra del dispositivo precedente aggiunto in WireHub, si può scaricarne il corrispondente file di configurazione. Per effettuarne il download è necessario indicare la password specificata in precedenza a protezione della chiave privata.
Dopo aver avviato il client WireGuard sul dispositivo, si deve fare clic sul pulsante Importa tunnel da file quindi fornire il file .conf
scaricato in precedenza da WireHub.
Una volta importate le impostazioni, si deve fare clic su Attiva per stabilire la connessione alla VPN WireGuard appena allestita.
Aggiungere nuovi peer e creare inviti
Impostando un nuovo dispositivo nella schermata principale di WireHub, è possibile assegnare il peer a un’altra persona, definire un ruolo e creare un invito (pulsante Create invite) per partecipare alla VPN.
Nella colonna di destra di WireHub, il pulsante Invite (accanto a Members) permette di generare un link da condividere con la persona che deve potersi collegare, dal suo dispositivo, alla rete VPN WireGuard.
Gli utenti invitati possono accedere all’interfaccia di WireHub per scaricare il loro file di configurazione personale, da importare con il client WireGuard ufficiale. Non potranno invece visualizzare alcuna informazione di tipo amministrativo.
Credit immagine in apertura: iStock.com/NicoElNino