VPN con WireGuard su server Ubuntu

WireGuard1 è un programma open source e un protocollo che implementa la tecnica della virtual private network (VPN) per creare connessioni sicure punto-punto in configurazione routed o bridged. Viene eseguito come modulo nel kernel linux e punta ad avere prestazioni migliori rispetto ad IPsec e OpenVPN.

(contributori di Wikipedia, 2024)2

Supponiamo di voler impostare la nostra VPN con WireGuard avendo la seguente configurazione:

  • server Ubuntu
    • indirizzo FQDN ubusrv.dom.internet
    • ip locale 10.10.10.254/24
  • client
    • subnet 192.168.10.0/24

Per permettere che il client comunichi con il server, è necessario configurare il Router 1 affinché i pacchetti UDP diretti all’indirizzo pubblico del server WireGuard dal client attraverso Internet siano inoltrati all’indirizzo IP locale dello stesso server.

Schema VPN

Installazione

sudo apt install wireguard-tools iptables
Installazione WireGuard server

Configurazione

  • Generiamo la chiave privata per il server:
umask 077
wg genkey | tee /etc/wireguard/server.key
chiave privata server
  • Chiave pubblica per il server:
cat /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
chiave pubblica server
  • Chiave privata per il client:
wg genkey | tee /etc/wireguard/client.key
chiave privata client
  • Chiave pubblica per il client:
cat /etc/wireguard/client.key | wg pubkey | tee /etc/wireguard/client.pub
chiave pubblica client

Impostiamo il profilo di configurazione per l’interfaccia della VPN:

nano /etc/wireguard/wg0.conf
profilo configurazione interfaccia VPN

Facciamo partire l’interfaccia per la VPN:

systemctl start wg-quick@wg0

Verifichiamo l’interfaccia:

ip addr
verifica configurazione interfaccia VPN

Configurazione del client Windows

WireGuard Windows client

Con l’importazione del file wg0.conf, le impostazioni del tunnel sono caricate. Per avviare la VPN facciamo clic su Activate

WireGuard Windows client activate

Se le impostazioni sono corrette, il tunnel viene attivato

WireGuard Windows client attivo

Possiamo infine controllare il collegamento con il server:

verifica collegamento server

Configurazione del client macOS

Installiamo il client WireGuard dall’App Store4:

Installazione macOS client da App Store

Apriamo l’App ed importiamo il file di configurazione:

Importazione configurazione WireGuard macOS client

Selezioniamo la configurazione importata ed attiviamola:

Configurazione WireGuard macOS client
WireGuard macOS client attivo

Parliamone


Note

1. Donenfeld, J. A. (n.d.). WireGuard: fast, modern, secure VPN tunnel. https://www.wireguard.com/
2. contributori di Wikipedia. (2024, September 24). WireGuard. Wikipedia. https://it.wikipedia.org/wiki/WireGuard
3. Donenfeld, J. A. (n.d.-b). Installation - WireGuard. https://www.wireguard.com/install/
4. App Store. (2023, February 16). WireGuard. App Store. https://apps.apple.com/it/app/wireguard/id1441195209