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 updateUna 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 wireguardQuando richiesto per la conferma, inserisci y per confermare e premi INVIO per procedere. Ora l’installazione dovrebbe iniziare.

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.keyRiceverai 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.pubRiceverai quindi un output di una chiave pubblica random base64 sul tuo terminale.

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.pubGenerazione 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/clientsEsegui 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
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
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.confPrima 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 = trueSuccessivamente, 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/24Salva 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.confAggiungi 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=1Salva il file ed esci dall’editor quando hai finito.
Successivamente, esegui l’utilità del comando sysctl qui sotto per applicare le modifiche.
sudo sysctl -pRiceverai un output simile a questo - Il port-forwarding dovrebbe essere abilitato immediatamente.

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 ufwInserisci y quando richiesto e premi INVIO per procedere.

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

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 statusCon 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 defaultRiceverai 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.confAggiungi 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 MASQUERADESalva 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/udpInfine, 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 statusRiceverai 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.

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.

Esegui il comando qui sotto per verificare l’interfaccia ‘wg0’ sul tuo server Wireguard.
ip a show wg0Dovresti 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 ‘.

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.confCon 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-toolsL’installazione dovrebbe iniziare automaticamente.

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.confAggiungi 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 = 25Salva 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-client1Dovresti 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 ‘.

Esegui il comando qui sotto per verificare l’interfaccia Wireguard ‘ wg-client1 ‘.
ip a show wg-client1Dovresti 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’.

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 showSe 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 ‘.

Ora spostati sul server Wireguard e esegui il comando ‘ wg show ‘.
wg showDovresti 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 ‘.

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.comDi seguito è riportato l’output che dovresti ricevere:
La macchina client può connettersi al server Wireguard con un indirizzo IP ‘10.8.0.1 ‘.

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

Ora, se desideri fermare il Wireguard sulla macchina client, puoi eseguire il comando ‘ wg-quick down ‘ qui sotto
wg-quick down wg-client1Riceverai l’output simile a questo. Inoltre, l’interfaccia wg-client1 scomparirà dalla macchina client.

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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.