Come configurare una VPN WireGuard sul tuo VPS
Scritto dal team ApexVPS • Ultimo aggiornamento: luglio 2026 • 9 min di lettura
Questo tutorial per la configurazione di WireGuard su VPS ti mostra come creare la tua VPN privata, veloce e moderna su un server Ubuntu o Debian. WireGuard è un protocollo VPN leggero integrato nel kernel Linux, quindi è molto più semplice di OpenVPN o IPsec, pur offrendo una crittografia forte e aggiornata. Alla fine avrai un server funzionante, almeno un client connesso e il pieno controllo del tuo tunnel crittografato, senza abbonamento VPN di terze parti.
Eseguire WireGuard sulla tua macchina significa che il traffico termina su hardware che affitti, non su un endpoint VPN consumer affollato. Se vuoi capire perché un box privato è la base migliore, leggi la nostra guida su come scegliere un VPS per una VPN personale prima di iniziare.
Cosa ti serve prima di iniziare
- Un VPS con Ubuntu 20.04+ o Debian 11+ con il modulo kernel WireGuard (entrambi lo includono).
- Accesso root o sudo via SSH. Ogni comando qui sotto presuppone che tu possa usare
sudo. - L'indirizzo IP pubblico del server e il nome della sua interfaccia di rete predefinita.
- Porta UDP 51820 raggiungibile, quella predefinita di WireGuard. La aprirai nel firewall.
Per una VPN, un endpoint stabile e senza contese è importante, quindi le risorse veramente dedicate battono l'hosting condiviso oversold. Un IPv4 dedicato è disponibile sui piani ApexVPS Business e Enterprise, dando al tuo tunnel un indirizzo non condiviso con nessun altro.
Passo 1: Aggiorna il sistema e installa WireGuard
Inizia aggiornando l'indice dei pacchetti e installando gli strumenti userspace di WireGuard. Su un kernel moderno questo è l'unico pacchetto di cui hai bisogno.
sudo apt update
sudo apt install wireguard -y
Questo installa wg e wg-quick, i due comandi che gestiscono chiavi, interfacce e configurazione. Puoi confermare l'installazione con wg --version.
Passo 2: Genera le chiavi del server
WireGuard autentica i peer con una coppia di chiavi pubblica/privata, proprio come SSH. Spostati nella directory di configurazione, restringi i permessi del file con umask e genera le chiavi in un unico passaggio.
cd /etc/wireguard
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
La riga umask 077 garantisce che la chiave privata sia leggibile solo da root. Stampa i due valori in modo da poterli incollare nella configurazione che segue.
sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
Mantieni segreta la chiave privata. Chiunque la possieda può impersonare il tuo server.
Passaggio 3: crea il file di configurazione del server (wg0.conf)
L'interfaccia del server è descritta in un unico file, /etc/wireguard/wg0.conf. Crealo con il tuo editor preferito:
sudo nano /etc/wireguard/wg0.conf
Incolla il blocco qui sotto, sostituendo <SERVER_PRIVATE_KEY> con la chiave privata del Passaggio 2 e eth0 con il nome reale della tua interfaccia se diverso.
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Qui 10.8.0.1/24 è la sottorete VPN privata, 51820/udp è la porta di ascolto e le regole PostUp/PostDown aggiungono e rimuovono NAT in modo che il traffico dei client venga mascherato attraverso l'interfaccia pubblica del server. Per trovare il nome della tua interfaccia, esegui:
ip route list default
La parola dopo dev nell'output (spesso eth0, ens3 o enp1s0) è l'interfaccia da utilizzare nelle due righe di firewall sopra.
Passaggio 4: abilita l'inoltro IP e il NAT
Per impostazione predefinita, Linux non instrada i pacchetti tra le interfacce, quindi è necessario comunicare al kernel di inoltrare. Abilitalo in modo persistente con un file drop-in sysctl.
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
Se instradi anche IPv6 attraverso il tunnel, aggiungi net.ipv6.conf.all.forwarding = 1 allo stesso file. La regola MASQUERADE del Passaggio 3 gestisce il NAT stesso, quindi una volta attivo l'inoltro, il percorso di routing è completo.
Apri la porta del firewall
Consenti la porta UDP di WireGuard. Se utilizzi ufw, esegui il seguente comando e assicurati di mantenere SSH aperto per non rimanere bloccato fuori.
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable
Se gestisci le regole direttamente con iptables invece di ufw, le righe PostUp aggiungono già le regole di inoltro e NAT; devi solo assicurarti che il traffico UDP in ingresso sulla porta 51820 sia consentito da qualsiasi firewall host o gruppo di sicurezza del provider.
Passaggio 5: avvia WireGuard con systemd
wg-quick è dotato di un modello di servizio systemd, quindi puoi avviare il tunnel ora e farlo riavviare automaticamente dopo un riavvio.
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
Il flag enable --now avvia l'interfaccia e la imposta per l'avvio all'avvio. Un rapido controllo di integrità conferma che l'interfaccia è attiva:
sudo wg show
Dovresti vedere un'interfaccia wg0 con la tua chiave pubblica e la porta di ascolto. Non ci sono ancora peer: questo è il passaggio successivo.
Passaggio 6: aggiungi un client (peer)
Ogni dispositivo che si connette è un peer con la propria coppia di chiavi. Genera una coppia di chiavi per il tuo primo client:
wg genkey | sudo tee client1_private.key | wg pubkey | sudo tee client1_public.key
Ora registra il client sul server. Aggiungi un blocco [Peer] a /etc/wireguard/wg0.conf, usando la chiave pubblica del client e il prossimo indirizzo libero nella sottorete VPN.
[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32
Ricarica l'interfaccia per applicare il nuovo peer:
sudo systemctl restart wg-quick@wg0
Preferisci non interrompere il tunnel? Puoi aggiungere il peer a caldo senza riavvio:
sudo wg set wg0 peer <CLIENT1_PUBLIC_KEY> allowed-ips 10.8.0.2/32
Passaggio 7: crea la configurazione del client e un codice QR
Sul server, assembla il file di configurazione del client. Questo è ciò che il dispositivo — un laptop o un telefono — caricherà. Sostituisci i segnaposto con la chiave privata del client e la chiave pubblica e l'IP pubblico del server.
[Interface]
PrivateKey = <CLIENT1_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_PUBLIC_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
L'impostazione AllowedIPs = 0.0.0.0/0, ::/0 instrada tutto il traffico del client attraverso il tunnel — il classico comportamento full-VPN. PersistentKeepalive = 25 mantiene la connessione attiva attraverso NAT e firewall. Salvalo come client1.conf.
Per un desktop, copia client1.conf sulla macchina e importalo nel client WireGuard ufficiale. Per un telefono, renderizza il file come codice QR scansionabile direttamente dal terminale:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf
Apri l'app WireGuard su Android o iOS, scegli "Aggiungi tunnel" e poi "Scansiona dal codice QR". Il tunnel verrà importato in pochi secondi. Le app e i client ufficiali sono tutti collegati da wireguard.com.
Passaggio 8: verifica il tunnel
Attiva il tunnel sul client, poi conferma l'handshake sul server. Una connessione sana mostra un handshake recente e contatori di trasferimento in aumento.
sudo wg show
Cerca un timestamp latest handshake e valori transfer non nulli sotto il tuo peer. Infine, verifica dal client che il tuo IP pubblico sia ora l'IP del server:
curl ifconfig.me
Se restituisce l'indirizzo del VPS, il tuo traffico sta passando attraverso il tunnel e la configurazione del VPS WireGuard è completa. Per aggiungere altri dispositivi, ripeti i passaggi 6 e 7 con una nuova coppia di chiavi e il prossimo indirizzo nel range 10.8.0.0/24.
Risoluzione dei problemi di una connessione che non si avvia
Se wg show non riporta mai un handshake, esamina i soliti sospetti in ordine. Innanzitutto, conferma che la porta sia effettivamente aperta: da un'altra macchina esegui nc -uzv <SERVER_PUBLIC_IP> 51820 e verifica che il gruppo di sicurezza o il firewall del tuo provider consenta UDP in ingresso sulla porta 51820, non solo TCP. In secondo luogo, assicurati che l'IP forwarding sia davvero abilitato con sysctl net.ipv4.ip_forward — dovrebbe restituire 1. Terzo, ricontrolla che il nome dell'interfaccia nella regola NAT PostUp corrisponda all'output di ip route list default; una mancata corrispondenza è il motivo più comune per cui il traffico si autentica ma non raggiunge mai Internet. Infine, verifica che le chiavi non siano invertite: la configurazione del server contiene la chiave privata del server e la chiave pubblica del client, mentre la configurazione del client rispecchia tale disposizione. Una singola chiave incrociata blocca silenziosamente l'handshake.
Scegliere il VPS giusto per WireGuard
WireGuard in sé è minuscolo — il protocollo tocca a malapena la CPU — quindi anche un piano base esegue comodamente una VPN personale. Ciò che realmente condiziona l'esperienza è la rete: larghezza di banda, latenza verso la tua regione e se l'IP è tuo esclusivo. ApexVPS gira su vCPU, RAM e storage NVMe realmente dedicati in 39 sedi, con bassa latenza nelle principali regioni, quindi la velocità rimane prevedibile invece di crollare per colpa di vicini rumorosi.
Se desideri che il tunnel viva su un indirizzo stabile e non condiviso, un IPv4 dedicato è incluso nei piani Business ed Enterprise. E poiché la privacy è spesso il punto centrale dell'auto-hosting di una VPN, vale la pena notare come ti registri: ApexVPS è un VPS senza KYC con registrazione solo via email e pagamento solo in criptovalute tramite OxaPay, accettando Bitcoin, Ethereum, USDT e oltre 30 criptovalute — senza nome, indirizzo, carta di credito o conto bancario richiesti.
Domande frequenti
È difficile configurare WireGuard su un VPS?
No. WireGuard usa un file di configurazione piccolo e leggibile e una manciata di comandi standard. Su un VPS Ubuntu o Debian fresco puoi installarlo, generare le chiavi, scrivere wg0.conf e connettere il primo client in circa dieci-quindici minuti.
Mi serve un IP dedicato per una VPN WireGuard?
Un IP dedicato non è strettamente necessario, ma dà al tuo tunnel un endpoint stabile non condiviso con altri clienti. Su ApexVPS, un IPv4 dedicato è incluso nel piano Business e due nell'Enterprise.
Quali versioni di Ubuntu e Debian supportano WireGuard?
WireGuard è integrato nel kernel Linux dalla versione 5.6 in poi, quindi Ubuntu 20.04 e successive e Debian 11 e successive lo includono di serie. Devi solo installare gli strumenti userspace con apt.
Posso usare lo stesso server sul mio telefono?
Sì. Aggiungi un secondo peer per il telefono, genera una configurazione client e renderizzala come codice QR con qrencode. Le app ufficiali WireGuard per Android e iOS scansionano il codice e si connettono all'istante.
Posso pagare il VPS senza carta di credito?
Sì. Il checkout di ApexVPS è solo in criptovalute e accetta Bitcoin, Ethereum, USDT e oltre 30 criptovalute. La registrazione richiede solo un'email per inviarti i dettagli di accesso — niente nome, indirizzo o documento.