WireGuard: come creare VPN con l'aiuto di Netmaker

Usare WireGuard per creare una VPN sicura su un proprio server. Come configurarla con l'open source Netmaker.

Uno dei progetti più apprezzati e in continua crescita in ambito networking è sicuramente WireGuard: si tratta di una piattaforma software open source che permette di creare reti VPN (Virtual Private Network).
Una soluzione del genere consente di far dialogare reciprocamente dispositivi connessi a migliaia di chilometri di distanza e che utilizzano reti insicure per l’accesso a Internet.

WireGuard è una soluzione versatile, flessibile ma soprattutto molto performante e sicura per allestire VPN anche in ambito professionale.
Tant’è vero che dopo la “benedizione” di Linus Torvalds WireGuard è supportato nel kernel Linux e prossimamente potrebbe essere integrato addirittura nel kernel di Windows.
Alcuni produttori di router stanno via via inserendo il supporto WireGuard nei loro dispositivi sia in modalità client che server.

Un altro aspetto positivo di WireGuard è che si tratta di un software multipiattaforma: sono disponibili client per tutti i sistemi operativi e i componenti server quasi per tutte le piattaforme.

WireGuard si configura quindi un’ottima soluzione anche per costruire una piattaforma di comunicazione sicura e condivisa per sistemi che sono fisicamente collegati a reti del tutto diverse.

In un altro articolo abbiamo visto ad esempio come creare un server VPN con WireGuard e un sistema Linux.
Questa volta vediamo come usare Netmaker per automatizzare l’installazione del modulo server di WireGuard e semplificare configurazione e gestione dei client.

WireGuard: come automatizzarne l’installazione e la configurazione

Netmaker è un software open source che facilita la creazione e gestione di reti VPN mesh in cui ogni dispositivo, secondo un’architettura peer-to-peer, può colloquiare con qualche altro host collegato alla medesima rete.
Netmaker sfrutta il protocollo WireGuard e permette di interconnettere in modo sicuro data center, infrastrutture cloud, dispositivi edge ma anche più sedi della stessa azienda o dispositivi collegati a reti differenti, magari a centinaia o migliaia di chilometri di distanza.

Netmaker è considerabile come la versione completamente aperta di uno strumento qualeTailscale: permette di allestire configurazioni peer-to-peer, site-to-site, far dialogare dispositivi IoT (Internet delle Cose), configurazioni Kubernetes e molto altro ancora.

Installare Netmaker su un server Linux

L’installazione di Netmaker su una macchina Linux provvede ad abilitare anche il protocollo WireGuard.
Perché tutto funzioni correttamente le porte TCP 443, 80, 53 e UDP 51821-51830 dovranno risultare raggiungibili dall’esterno (attenzione quindi alla corretta configurazione del firewall e all’inoltro delle porte).

Installiamo Netmaker, ad esempio, su un sistema Ubuntu 20.04 LTS.
Il comando che segue, impartito in corrispondenza della finestra del terminale, consente di installare e configurare Netmaker in modalità “Hub-And-Spoke“:

wget -qO - https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/nm-quick.sh | sudo bash -s -- -v true -c 10

In questo modo si il sistema Linux funge da gateway per lo scambio delle comunicazioni via VPN e permette ai client collegati non soltanto di “vedersi” reciprocamente, con la possibilità di accedere alle rispettive cartelle condivise ma anche di uscire sulla rete Internet con l’indirizzo IP pubblico del server. Lo switch c -10 nel comando precedente indica che Netmaker offrirà già preconfigurate 10 configurazioni VPN per altrettanti client.

Come si vede nell’immagine, Netmaker fornisce un indirizzo HTTPS (viene creato usando il servizio wildcard DNS nip.io e un certificato gratuito Let’s Encrypt) al quale ci si può collegare per configurare la VPN con profilo “Hub-And-Spoke“.

L’account che Netmaker invita a impostare è quello dell’utente che amministra la piattaforma.
Cliccando invece su Ext clients quindi scegliendo la rete VPN, nella colonna di destra si otterrano 10 profili client già preimpostati.

Nella colonna IP address figurano gli indirizzi IP locali che saranno assegnati a ciascun dispositivo che si collega alla VPN WireGuard-Netmaker. L’indirizzo IP del gateway Netmaker (sistema locale) è riportato invece nel riquadro di sinistra.

Per collegare un qualunque dispositivo alla VPN basta scaricare e installare il client WireGuard dal sito ufficiale.
Nel caso di Android e iOS basta avviare l’app WireGuard, premere il tasto “+” quindi inquadrare il codice QR mostrato nella pagina di Netmaker (colonna QR Code).

Per impostare i client WireGuard Windows, macOS e Linux basta invece scaricare il file di configurazione (Download Client Configuration) quindi cliccare su Aggiungi tunnel.

Con un doppio clic sul nome del client (colonna di sinistra) la connessione con il server WireGuard di Netmaker sarà immediatamente stabilita.

Adesso tutti i client collegati con la VPN possono scambiarsi reciprocamente file come se fossero collegati con la stessa rete locale. Nel caso di Windows è bene tenere presente la differenza tra rete pubblica e rete privata: se l’interfaccia di rete in uso venisse configurata come su “rete pubblica”, le risorse del computer non risulteranno accessibili.

Ciascun dispositivo connesso alla VPN WireGuard può inoltre navigare in Internet usando l’indirizzo IP pubblico del server. Una volta stabilita la connessione, suggeriamo di cliccare qui per verificare l’indirizzo IP assegnato.

Creare una VPN mesh con WireGuard e Netmaker

La configurazione standard di Netmaker consente di creare reti VPN anche molto complesse mettendo in comunicazione intere infrastrutture che di norma sarebbero tra loro separate.

Per installare Netmaker sul server Linux si può usare il comando che segue:

wget -qO - https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/nm-quick.sh | sudo bash

Netmaker permette di creare un qualsiasi numero di reti private (Networks) attraverso il comodo pannello di controllo (dashboard) che abbiamo visto in precedenza: esse possono funzionare su qualsiasi intervallo di indirizzi IP privati.

I nodi sono macchine sul quale sono installati il client di Netmaker (netclient) e WireGuard.
Una volta che i nodi sono stati aggiunti alla rete, l’amministratore di Netmaker può utilizzare molteplici strumenti per gestirli. Dal server centrale è ad esempio possibile cambiare molte impostazioni di rete come ad esempio nome, indirizzo privato, data di scadenza e impostazioni WireGuard.
L’amministratore possono designare alcuni nodi come gateway di ingresso o di uscita: questo permette loro di instradare il traffico nella rete da client esterni (ingress) o fuori dalla rete verso specifici intervalli IP (egress).
Le ACL (Access Control List) consentono di specificare quali dispositivi hanno visibilità sugli altri.
Si tratta di caratteristiche che aprono a una vasta schiera di casi d’uso al di fuori della rete mesh standard.

Il comando riportato in precedenza fornisce le indicazioni per installare i client sui singoli dispositivi e aggiungerli come nodi a una o più reti create con Netmaker.

Dopo aver effettuato il login al pannello di amministrazione di Netmaker previa creazione di un account amministrativo, cliccando su Access keys quindi sul nome della rete si ottengono i comandi da usare nei vari sistemi operativi per configurare il client (Netclient).

Nel caso di Windows, ad esempio, per aggiungere il sistema come nodo basta eseguire un comando PowerShell (premere Windows+X quindi scegliere Terminale Windows (Admin) oppure Windows PowerShell (amministratore)) simile al seguente:

. { iwr -useb  https://raw.githubusercontent.com/gravitl/netmaker/master/scripts/netclient-install.ps1 } | iex; Netclient-Install -version "v0.12.1" -token token-alfanumerico

Tra le esclusioni di Microsoft Defender e di qualunque altro antimalware che si utilizzasse sul sistema è importante inserire la cartella C:\Programdata\Netclient.

Conclusa quest’operazione, il sistema Windows risulterà immediatamente collegato con la rete creata lato Netmaker e avrà visibilità sugli altri dispositivi connessi, secondo le ACL impostate.

Per i dispositivi Android e iOS, che non possono essere collegati come nodi, va seguita la stessa procedura illustrata al paragrafo precedente quindi configurarli come client esterni (sezione Ext clients) previa installazione dell’app WireGuard.
I client esterni consentono a qualsiasi dispositivo che esegue WireGuard di accedere alla rete in modo sicuro ovunque non sia possibile eseguire il modulo Netclient.

Il dispositivo collegato alla rete come client esterno via accede tramite il gateway di ingresso specificato; potrà accedere all’intera rete ma dovrà essere aggiornato manualmente se vi fosse un cambiamento significativo della configurazione.

Nel caso in cui si volesse disinstallare Netclient da un sistema client Linux basta digitare sudo rm -rf /etc/netclient.
In Windows si deve aprire una finestra dei comandi con i diritti di amministratore quindi digitare %programdata%\netclient\netclient.exe uninstall

Da ultimo osserviamo che aggiungendo l’opzione -d terzolivello.nomedominio.com -e esempio@nomedominio.com è possibile usare un nome a dominio di terzo livello sotto la propria gestione che sia stato precedentemente fatto puntare (lato record DNS) sull’IP pubblico del server Netmaker.

Ti consigliamo anche

Link copiato negli appunti