VPN WireGuard · 15 min read · Oct 05, 2025

Come installare Wireguard VPN su Debian 11

Wireguard è un protocollo VPN gratuito e open-source alternativo a IPSec, IKEv2 e OpenVPN. Wireguard è progettato per sistemi operativi Linux e Unix. Funziona nello spazio del kernel Linux, il che rende Wireguard più veloce e più affidabile. Wireguard viene utilizzato per creare connessioni tunnel sicure tra due computer o più.

Wireguard mira a sostituire protocolli VPN come IPSec, IKEv2 e OpenVPN. Wireguard è più leggero, più veloce, facile da configurare e più efficiente. E allo stesso tempo, Wireguard non ha sacrificato l’aspetto della sicurezza del protocollo VPN. Wireguard supporta la crittografia moderna all’avanguardia come il framework del protocollo Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF e costruzioni sicure e affidabili.

Rispetto ad altri protocolli VPN come OpenVPN, IPSec e IKEv2, Wireguard è un nuovo protocollo VPN. Wireguard è stato rilasciato nel 2015 da Jason A. Donenfeld come un protocollo VPN alternativo, è stato fuso nel kernel Linux v5.6 da Linus Torvalds nel 2020 e nello stesso anno è stato anche portato su FreeBSD 13.

In questo tutorial, installerai e configurerai un server VPN tramite Wireguard su server Debian 11. Configurerai un server VPN Wireguard con il server Debian 11, quindi configurerai una macchina client per connettersi al server VPN Wireguard.

Per quanto riguarda la macchina client, puoi utilizzare qualsiasi distribuzione Linux, ma questo esempio utilizza una macchina Debian.

Requisiti

Per iniziare con questo tutorial, devi avere i seguenti requisiti:

  • Un server Debian 11 - Questo esempio utilizza un server Debian con hostname ‘ wireguard-server ‘ e un indirizzo IP statico esterno ‘ SERVER-IP ‘.
  • Una macchina Linux che verrà utilizzata come client - Puoi utilizzare qualsiasi distribuzione Linux, ma questo esempio utilizza una macchina Debian con hostname ‘client1’.
  • Un utente non root con privilegi di amministratore sudo/root.

Se tutti questi requisiti sono pronti, iniziamo.

Installazione di Wireguard

Prima di installare Wireguard, esegui il comando apt qui sotto per aggiornare e rinfrescare l’indice dei pacchetti Debian.

sudo apt update

Una volta aggiornati i repository Debian, esegui il comando apt qui sotto per installare il pacchetto Wireguard sul tuo server Debian. Questo installerà anche il pacchetto wireguard-tools che verrà utilizzato per gestire l’installazione del server Wireguard.

sudo apt install wireguard

Quando richiesto per la conferma, inserisci y per confermare e premi INVIO per procedere. Ora l’installazione dovrebbe iniziare.

install wireguard

Con Wireguard installato sul tuo server, sei pronto a generare una coppia di chiavi pubbliche e private per il server e il client Wireguard.

Generazione della coppia di chiavi pubblica/privata

In questo passaggio, genererai una coppia di chiavi pubblica e privata per il server Wireguard e la macchina client. E questo può essere fatto tramite il comando ‘wg’ fornito dal pacchetto wireguard-tools.

La coppia di chiavi per il server sarà utilizzata dal server Wireguard, e la macchina client utilizzerà la coppia di chiavi per il client. Se hai più macchine client, puoi generare più coppie di chiavi per i tuoi client.

Generazione della coppia di chiavi per il server Wireguard

Esegui il comando ‘ wg genkey ‘ qui sotto per generare la chiave privata per il server Wireguard. Quindi, cambia i permessi della chiave privata a ‘ 0400 ‘, che disabiliterà l’accesso in lettura e scrittura per il gruppo e gli altri.

In questo esempio, genererai la chiave privata ‘/etc/wireguard/server.key’.

wg genkey | sudo tee /etc/wireguard/server.key  
sudo chmod 0400 /etc/wireguard/server.key

Riceverai quindi un output di una chiave random base64 sullo schermo del terminale.

Successivamente, esegui il comando ‘ wg pubkey ‘ qui sotto per generare la nuova chiave pubblica del server in ‘ /etc/wireguard/server.pub ‘. La chiave pubblica del server è derivata dalla chiave privata del server ‘ /etc/wireguard/server.key ‘.

sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub

Riceverai quindi un output di una chiave pubblica random base64 sul tuo terminale.

generate server key pair

Ora che hai generato coppie di chiavi pubbliche e private per il server Wireguard. La chiave privata si trova in ‘/etc/wireguard/server.key’, e la chiave pubblica si trova in ‘/etc/wireguard/server.pub ‘.

Esegui il comando cat qui sotto per mostrare e verificare la coppia di chiavi generata per il server Wireguard.

cat /etc/wireguard/server.key  
cat /etc/wireguard/server.pub

Generazione della coppia di chiavi per il client

Per la coppia di chiavi del client, puoi generarla su qualsiasi macchina (server Wireguard o client) con i wireguard-tools installati. In questo passaggio, genererai una coppia di chiavi client dal server Wireguard.

Il processo per generare una coppia di chiavi per il server e il client è lo stesso, utilizzando il comando ‘ wg genkey ‘ per generare la chiave privata e utilizzando ‘ wg pubkey ‘ per generare la chiave pubblica, che è derivata dalla chiave privata.

Ora esegui il comando qui sotto per creare una nuova directory ‘ /etc/wireguard/clients ‘. Questa directory verrà utilizzata per memorizzare la coppia di chiavi del client.

mkdir -p /etc/wireguard/clients

Esegui il comando ‘wg genkey’ qui sotto per generare la chiave privata del client in ‘ /etc/wireguard/clients/client1.key ‘. Quindi, genera la chiave pubblica del client tramite il comando ‘ wg pubkey ‘ in ‘/etc/wireguard/clients/client1.pub ‘.

wg genkey | tee /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub

generate client key pair

Ora che la coppia di chiavi del client è generata, la chiave pubblica si trova in ‘/etc/wireguard/clients/client1.pub’ e la chiave privata è ‘ /etc/wireguard/clients/client1.key ‘. Esegui il comando qui sotto per mostrare e verificare la coppia di chiavi generata.

cat /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.pub

verify client key pair

Configurazione del server Wireguard

In questo passaggio, creerai un nuovo file di configurazione per il server Wireguard. Ma prima di tutto, devi decidere quali subnet utilizzerai per il server VPN Wireguard. Puoi anche decidere se abilitare o disabilitare IPv6 per il tuo server VPN Wireguard.

In questo esempio, il server VPN Wireguard avrà indirizzi IP con la subnet ‘10.8.0.2/24’ e disabiliterà l’IPv6 per il VPN Wireguard.

Crea un nuovo file di configurazione Wireguard ‘/etc/wireguard/wg0.conf ‘ utilizzando il comando dell’editor nano qui sotto.

sudo nano /etc/wireguard/wg0.conf

Prima di tutto, aggiungi le seguenti righe al file per definire i dettagli del server Wireguard. E assicurati di cambiare la ‘ PrivateKey ‘ con la chiave privata del server Wireguard ‘ server.key ‘. Con questo, l’interfaccia del server Wireguard funzionerà all’indirizzo IP ‘ 10.8.0.1 ‘, aprirà la porta UDP 51820 che è disponibile per i client per connettersi, e il parametro SaveConfig garantirà che eventuali modifiche vengano salvate nel file di configurazione, anche quando l’interfaccia Wireguard è spenta.

[Interface]  
# Chiave privata del server Wireguard - server.key  
PrivateKey = SIybp8GHtKIPtHPBOQFP1kbQg4UCLCMyNIfCLBQR2EA=  
  
# L'interfaccia Wireguard verrà eseguita su 10.8.0.1  
Address = 10.8.0.1/24  
  
# I client si connetteranno alla porta UDP 51820  
ListenPort = 51820  
  
# Assicurati che eventuali modifiche vengano salvate nel file di configurazione di Wireguard  
SaveConfig = true

Successivamente, aggiungi le righe qui sotto per definire la connessione peer del client. Cambia il parametro ‘ PublicKey ‘ con la chiave pubblica del client ‘ client1.pub ‘. E il parametro ‘ AllowedIPs ‘ specificherà quali client Wireguard sono autorizzati ad accedere a questo peer. In questo esempio, solo i client con IP ‘ 10.8.0.2 ‘ saranno autorizzati ad accedere a questa connessione peer. Ma puoi anche consentire l’intervallo di subnet come ‘ 10.8.0.0/24 ‘.

[Peer]  
# Chiave pubblica del client Wireguard - client1.pub  
PublicKey = ENokvIsS2euXrmM4OVFHPmTdCZ4wfEIR/UHuGCW64lw=  
  
# indirizzi IP VPN dei client che autorizzi a connettersi  
# possibile specificare subnet ⇒ [10.8.0.0/24]  
AllowedIPs = 10.8.0.2/24

Salva il file ed esci dall’editor quando hai finito.

Con il file di configurazione del server Wireguard creato e la connessione peer del client aggiunta, dovrai quindi configurare il port forwarding sul server Wireguard e impostare il firewall per configurare il routing del traffico.

Abilitare il Port-Forwarding tramite /etc/sysctl.conf

In questo passaggio, abiliterai il port-forwarding sul server Wireguard tramite il file /etc/sysctl.conf’. Puoi abilitare il port-forwarding sia per IPv4 che per IPv6 sul server Wireguard.

Per iniziare, apri il file di configurazione ‘/etc/sysctl.conf ‘ utilizzando il comando dell’editor nano qui sotto.

sudo nano /etc/sysctl.conf

Aggiungi le seguenti righe al file. Questo abiliterà il port forwarding sul tuo server Wireguard. Puoi utilizzare entrambi per IPv4 e IPv6, oppure puoi utilizzare IPv4 se hai disabilitato IPv6 sul tuo server Wireguard.

# Port Forwarding per IPv4  
net.ipv4.ip_forward=1  
  
# Port forwarding per IPv6  
net.ipv6.conf.all.forwarding=1

Salva il file ed esci dall’editor quando hai finito.

Successivamente, esegui l’utilità del comando sysctl qui sotto per applicare le modifiche.

sudo sysctl -p

Riceverai un output simile a questo - Il port-forwarding dovrebbe essere abilitato immediatamente.

enable port forwarding

Con il port-forwarding abilitato sul server Wireguard, dovrai quindi configurare il firewall che instraderà il traffico dei client Wireguard all’interfaccia di rete specifica.

Configurazione del Firewall per il Server Wireguard

In questo passaggio, configurerai il firewall che verrà utilizzato per il server Wireguard per instradare le connessioni dei client all’interfaccia di rete appropriata che verrà utilizzata per accedere a Internet. Questo consentirà anche ai client Wireguard di accedere a Internet tramite l’interfaccia specifica sul server Wireguard.

Per prima cosa, esegui il comando apt qui sotto per installare il pacchetto firewall ufw sul tuo server Debian.

sudo apt install ufw

Inserisci y quando richiesto e premi INVIO per procedere.

install ufw

Dopo che ufw è stato installato, esegui il comando qui sotto per aprire il servizio SSH e abilitare il firewall ufw.

sudo ufw allow OpenSSH  
sudo ufw enable

Quando richiesto per confermare di abilitare il firewall ufw, inserisci y e premi INVIO. Il firewall ufw dovrebbe ora essere in esecuzione sul tuo sistema ed è anche abilitato.

start enable ufw

Ora verifica lo stato del firewall ufw tramite il comando qui sotto. Dovresti ricevere un output come ‘ Status: active ‘, il che significa che lo stato del firewall ufw è in esecuzione.

sudo ufw status

Con il firewall ufw in esecuzione, dovrai quindi configurarlo per instradare le connessioni dei client Wireguard all’interfaccia di rete specifica.

Ora esegui il comando qui sotto per controllare l’interfaccia della tabella di routing predefinita sul server Wireguard. Di solito, questo rileverà un’interfaccia utilizzata per accedere a Internet o dove è disponibile l’indirizzo IP pubblico.

ip route list default

Riceverai un output simile a questo - In questo esempio, l’interfaccia eth0 è la tabella di routing predefinita per il server Wireguard. E questa è l’interfaccia utilizzata per accedere a Internet. Potresti avere un nome di interfaccia diverso.

Successivamente, apri il file di configurazione del server Wireguard ‘ /etc/wireguard/wg0.conf ‘ utilizzando il comando dell’editor nano qui sotto.

sudo nano /etc/wireguard/wg0.conf

Aggiungi le seguenti righe alla sezione ‘ [Interface] ‘.

[Interface]  
...  
....  
PostUp = ufw route allow in on wg0 out on eth0  
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE  
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE  
PreDown = ufw route delete allow in on wg0 out on eth0  
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE  
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Salva il file ed esci dall’editor quando hai finito.

  • Il parametro ‘ PostUp ‘ verrà eseguito ogni volta che il server Wireguard avvia il tunnel VPN.
  • Il parametro ‘ PreDown ‘ verrà eseguito ogni volta che il server Wireguard ferma il tunnel VPN.
  • Il comando ‘ ufw route allow in on wg0 out on eth0 ‘ consente di inoltrare il traffico in arrivo all’interfaccia wg0 verso l’interfaccia Internet eth0.
  • Il comando ‘iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE’ abiliterà il masquerading e riscrive il traffico IPv4 dall’interfaccia wg0 per farlo apparire come una connessione diretta dal server Wireguard.
  • Il comando ‘ ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE ‘ abiliterà il masquerading e riscrive il traffico IPv6 dall’interfaccia wg0 per farlo apparire come una connessione diretta dal server Wireguard.

Ora esegui il comando ufw qui sotto per aprire la porta UDP 51820 a cui i client si connetteranno.

sudo ufw allow 51820/udp

Infine, esegui il comando qui sotto per ricaricare il firewall ufw e applicare le modifiche. Quindi, verifica l’elenco delle regole ufw tramite il comando qui sotto.

sudo ufw reload  
sudo ufw status

Riceverai un output simile a questo screenshot - La porta UDP 51820 che il server Wireguard utilizzerà per le connessioni dei client è stata aggiunta al firewall ufw.

setup ufw firewall

Ora hai abilitato il port-forwarding e configurato il firewall sul server Wireguard. Sei ora pronto per avviare il server Wireguard.

Avvio del server Wireguard

In questo passaggio, avvierai e abiliterai il server Wireguard. Verificherai anche il server Wireguard e verificherai l’interfaccia wg0 che verrà creata dal servizio Wireguard.

Esegui l’utilità del comando systemctl qui sotto per avviare e abilitare il servizio Wireguard. Il servizio ‘ [email protected] ‘ creerà e abiliterà l’interfaccia Wireguard ‘ wg0 ‘ sul tuo server Wireguard.

sudo systemctl start [email protected]  
sudo systemctl enable [email protected]

Ora verifica il servizio Wireguard tramite il comando qui sotto.

sudo systemctl status [email protected]

Riceverai un output simile al seguente screenshot - Il servizio Wireguard ‘ [email protected] ‘ è in esecuzione ed è abilitato. Questo significa anche che l’interfaccia ‘ wg0 ‘ è stata creata e sta funzionando.

start enable verify wireguard server

Esegui il comando qui sotto per verificare l’interfaccia ‘wg0’ sul tuo server Wireguard.

ip a show wg0

Dovresti ricevere un output simile a questo - L’interfaccia Wireguard wg0 ottiene un indirizzo IP ‘ 10.8.0.1 ‘, come descritto nel file di configurazione di Wireguard ‘ /etc/wireguard/wg0.conf ‘.

verify wg0 interface

Inoltre, puoi anche avviare e fermare Wireguard tramite il comando ‘ wg-quick ‘ come di seguito. Il comando ‘ wg-quick up ‘ avvierà il server Wireguard, e il ‘wg-quick down ‘ fermerà il server Wireguard.

sudo wg-quick up /etc/wireguard/wg0.conf  
sudo wg-quick down /etc/wireguard/wg0.conf

Con il server Wireguard in esecuzione, dovrai quindi configurare la macchina client e connetterla al server Wireguard.

Configurazione della macchina client e connessione al server Wireguard

In questo passaggio, configurerai la macchina client installando i wireguard-tools, creando una nuova configurazione Wireguard per il client, connettendoti al server VPN Wireguard e infine verificando la connessione e assicurandoti che la macchina client possa raggiungere Internet e la rete VPN locale.

Installa il pacchetto ‘ wireguard-tools ‘ sulla macchina client. Questo utilizza Debian come client, quindi verrà utilizzato il comando APT.

sudo apt install wireguard-tools

L’installazione dovrebbe iniziare automaticamente.

install wireguard client

Dopo che i wireguard-tools sono stati installati, crea un nuovo file di configurazione ‘ /etc/wireguard/wg-client1.conf ‘ utilizzando il comando dell’editor nano qui sotto.

sudo nano /etc/wireguard/wg-client1.conf

Aggiungi le seguenti righe al file.

[Interface]  
# Definisci l'indirizzo IP per il client - deve corrispondere a wg0 sul server Wireguard  
Address = 10.8.0.2/24  
  
# server DNS specifico  
DNS = 1.1.1.1  
  
# Chiave privata per il client - client1.key  
PrivateKey = KPI59QH0jwc9wkUsW5Byci9ojXhz1322QXK52fQCE3E=  
  
[Peer]  
# Chiave pubblica del server Wireguard - server.pub  
PublicKey = Qt6oRLtlfAR490lTNb2K8TlbpwADV1j8NX7D5HY38EM=  
  
# Consenti a tutto il traffico di essere instradato tramite VPN Wireguard  
AllowedIPs = 0.0.0.0/0  
  
# Indirizzo IP pubblico del server Wireguard  
Endpoint = SERVER-IP:51820  
  
# Invia Keepalive ogni 25 secondi  
PersistentKeepalive = 25

Salva e chiudi il file quando hai finito.

Nella sezione ‘ [Interface] ‘, devi definire quanto segue:

  • L’indirizzo IP del client deve corrispondere alla subnet del server Wireguard. Il client Wireguard otterrà l’indirizzo IP ‘10.8.0.2’ in questo esempio.
  • Specifica il server DNS per il client.
  • Cambia il parametro ‘ PrivateKey ‘ con la chiave privata del client che hai generato, ‘ client1.key ‘.

Nella sezione ‘ [Peer]’ , devi aggiungere quanto segue:

  • La chiave pubblica del server Wireguard ‘ server.pub ‘ al parametro PublicKey.
  • Specifica ‘ AllowedIPs ‘ per limitare l’accesso al peer VPN, puoi specificare subnet di reti o semplicemente mettere 0.0.0.0/0 per tunnelizzare tutto il traffico tramite VPN.
  • Specifica il parametro Endpoint con l’indirizzo IP pubblico del server Wireguard o utilizza un nome di dominio.

Dopo che la configurazione del client è stata creata, esegui il comando qui sotto per avviare Wireguard sulla macchina client.

wg-quick up wg-client1

Dovresti ricevere un output simile a questo screenshot - La nuova interfaccia Wireguard ‘ wg-client1 ‘ verrà creata e la macchina client dovrebbe essere connessa al server Wireguard che funziona su ‘ SERVER-IP:51820 ‘.

configure wireguard client

Esegui il comando qui sotto per verificare l’interfaccia Wireguard ‘ wg-client1 ‘.

ip a show wg-client1

Dovresti ricevere un output simile a questo - L’interfaccia wg-client1 è attiva con un indirizzo IP ‘ 10.8.0.2 ‘, che fa parte della subnet del server Wireguard ‘ 10.8.0.0/24’.

check wireguar clcinet interface

Puoi anche verificare la connessione Wireguard tramite il comando ‘ wg show ‘.

Esegui il comando ‘ wg show ‘ sulla macchina client e dovresti ricevere un output simile a questo.

wg show

Se sei connesso al corretto server Wireguard, dovresti vedere l’indirizzo IP del server Wireguard nella sezione ‘ endpoint ‘ e vedere la chiave pubblica del server Wireguard ‘ server.pub ‘.

wg show client

Ora spostati sul server Wireguard e esegui il comando ‘ wg show ‘.

wg show

Dovresti ricevere un output simile a questo - Nella sezione endpoint, vedrai l’indirizzo IP pubblico del client, e nella sezione peer, vedrai la chiave pubblica del client ‘client1.pub ‘.

wg show wireguard server

Infine, esegui il comando qui sotto per assicurarti che la macchina client possa accedere a Internet o alla rete interna della subnet della VPN Wireguard.

ping -c5 10.8.0.1  
ping -c5 1.1.1.1  
ping -c5 duckduckgo.com

Di seguito è riportato l’output che dovresti ricevere:

La macchina client può connettersi al server Wireguard con un indirizzo IP ‘10.8.0.1 ‘.

ping to wireguard server

La macchina client può accedere a Internet. Tutto il traffico è instradato tramite l’indirizzo IP pubblico del server Wireguard.

ping to internet

Ora, se desideri fermare il Wireguard sulla macchina client, puoi eseguire il comando ‘ wg-quick down ‘ qui sotto

wg-quick down wg-client1

Riceverai l’output simile a questo. Inoltre, l’interfaccia wg-client1 scomparirà dalla macchina client.

ping with domain

Ora hai configurato il VPN Wireguard sulla macchina client. Hai anche verificato la connessione tra la macchina client e il server Wireguard.

Conclusione

In questo tutorial, hai installato e configurato Wireguard VPN su un server Debian 11. Hai anche configurato una macchina Debian e ti sei connesso con successo al server VPN Wireguard.

In dettaglio, hai installato il pacchetto VPN Wireguard, generato coppie di chiavi pubbliche e private sia per il server che per il client, configurato il firewall UFW per instradare il traffico VPN all’interfaccia di rete specifica e abilitato il port forwarding tramite il file /etc/sysctl.conf.

Tenendo presente questo, ora puoi aggiungere più client al tuo server VPN Wireguard generando un’altra coppia di chiavi per il client, definendo la connessione peer sul server Wireguard, quindi creando un nuovo file di configurazione Wireguard che la macchina client utilizzerà. Per saperne di più su Wireguard, visita la documentazione ufficiale di Wireguard.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.