WireGuard o OpenVPN: quale scegliere per il tuo VPS
WireGuard è più veloce, compatto e semplice da verificare. Scopri le 4 situazioni precise in cui OpenVPN resta la scelta migliore per il tuo server.
La risposta breve
WireGuard e OpenVPN, nel caso di una sola persona che gestisce un server VPN sul proprio VPS, non sono alternative alla pari: scegli WireGuard. È più compatto, viene eseguito nel kernel Linux, stabilisce la connessione in una frazione di secondo e una configurazione client funzionante occupa circa dieci righe. OpenVPN mantiene quattro funzioni concrete. Se nessuna di queste ti serve, non hai motivo di usarlo.
Queste quattro funzioni sono uscire da una rete che consente soltanto la porta TCP 443, integrarsi con un'autorità di certificazione esistente, autenticare utenti identificati tramite password o un secondo fattore e creare un bridge a Layer 2. Tutto ciò che segue documenta questa raccomandazione e indica il punto preciso in cui ciascuna eccezione diventa applicabile al tuo caso.
Perché WireGuard è la scelta preferita per i server gestiti autonomamente
Il codice è abbastanza compatto da poter essere letto. Il progetto WireGuard implementa il protocollo in circa 4.000 righe di codice. OpenVPN supera le 100.000 righe se si include la libreria OpenSSL, da cui dipende per ogni operazione crittografica. Le dimensioni contano perché ogni riga amplia la superficie di attacco, e né tu né chi esegue la revisione leggerete 100.000 righe. 4.000 righe, invece, sono leggibili.
Viene eseguito nel kernel. WireGuard è incluso nel kernel Linux principale dalla versione 5.6, quindi Ubuntu 24.04 e Debian 13 lo distribuiscono senza dover compilare nulla. I pacchetti vengono cifrati nel punto in cui si trovano già, nello spazio del kernel, senza copiarli a un processo nello spazio utente e poi nuovamente nel kernel. Verifica prima di tutto:
sudo modprobe wireguard && echo okSu una VPS KVM viene visualizzato ok. Nella virtualizzazione basata su container che condivide il kernel dell'host, come OpenVZ o LXC, il comando non riesce e restituisce Operation not supported, perché non puoi caricare un modulo in un kernel che non è tuo.
Non c'è nulla da negoziare. WireGuard usa una sola suite di cifratura fissa: ChaCha20-Poly1305 per i dati e chiavi Curve25519. Non esiste una versione a cui eseguire il downgrade e non ci sono opzioni che possono essere configurate in modo errato. OpenVPN negozia con ogni client la cifratura e la versione di TLS (transport layer security). Questa flessibilità è anche il punto in cui si verificano gli errori di configurazione. Un server lasciato con data-ciphers AES-256-GCM:AES-128-CBC può eseguire senza problemi il fallback alla cifratura CBC per un client che non offre alternative migliori, e nei log non compare alcun messaggio che segnali il problema.
La porta non risponde. Un pacchetto WireGuard che non supera il controllo di autenticazione del messaggio viene scartato senza inviare alcuna risposta, quindi nmap -sU -p 51820 restituisce open|filtered indipendentemente dal fatto che sia in ascolto un servizio. Un server OpenVPN in modalità TCP completa l'handshake TCP prima di decidere che la connessione non è autorizzata. Questo è sufficiente per dimostrare a uno scanner che sulla porta è presente un servizio. OpenVPN su UDP con tls-crypt è quasi altrettanto silenzioso. Questo argomento è quindi contrario all'esecuzione di OpenVPN su TCP, non a OpenVPN in generale.
Il roaming è automatico. Un peer WireGuard viene identificato tramite la sua chiave pubblica, non tramite il suo indirizzo. Il portatile passa dalla rete domestica a un hotspot mobile, invia un handshake dal nuovo indirizzo e il server aggiorna l'endpoint a cui invia le risposte. Non viene ristabilita alcuna connessione, perché non era mai stata mantenuta una connessione persistente. OpenVPN può ottenere un comportamento simile con float, ma normalmente il client chiude e ricrea una sessione TLS completa. Per questo, dopo l'apertura del coperchio, la pausa è evidente con OpenVPN e non lo è con WireGuard.
Velocità nel 2026: il divario si è ridotto
Per anni, l'argomento corretto a favore della velocità era che OpenVPN copiasse ogni pacchetto nello userspace, lo cifrasse al suo interno e lo ricopiasse indietro, mentre WireGuard restava sempre nel kernel. Questo non rappresenta più l'intero quadro e un confronto che ignora questo aspetto è superato.
OpenVPN 2.7 è stato rilasciato nel febbraio 2026 con il supporto per il modulo kernel ovpn upstream, integrato in Linux 6.16. Si tratta del DCO (data channel offload): il canale di controllo resta nello userspace, mentre il percorso dei dati viene spostato nel kernel, come WireGuard ha sempre fatto. Con un kernel e una versione di OpenVPN abbastanza recenti da supportarlo, il throughput rientra nella stessa fascia, invece di appartenere a una fascia completamente diversa. Verifica ciò che hai effettivamente installato:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3A luglio 2026 Ubuntu 24.04 LTS standard include OpenVPN 2.6, non 2.7, e il modulo ovpn richiede la versione 2.7. In questa release puoi usare l'offload soltanto tramite il pacchetto openvpn-dco-dkms precedente, che compila un modulo out-of-tree per il kernel in esecuzione e quindi deve essere ricompilato a ogni aggiornamento del kernel. È una componente variabile che WireGuard non richiede.
Prima di considerarlo un motivo per continuare a usare OpenVPN, leggi attentamente le limitazioni del DCO. Supporta soltanto tunnel Layer 3, accetta solo cifrari AEAD (authenticated encryption with associated data: AES-GCM o ChaCha20-Poly1305), non supporta la compressione e, su un server, funziona soltanto con topology subnet. Ognuna di queste limitazioni elimina una parte della flessibilità che in origine costituiva il principale argomento a favore di OpenVPN. Un OpenVPN veloce è un OpenVPN configurato in modo simile a WireGuard.
Non fidarti dei valori di throughput pubblicati da altri, compresi quelli riportati in questa pagina. Su una VPS, il limite massimo dipende di solito dalla quota CPU o dalla quota di rete, non dal protocollo. Misura il tuo throughput con iperf3 in esecuzione attraverso il tunnel, quindi ripeti la misurazione al di fuori del tunnel e confronta i due valori.
Dove OpenVPN continua a essere utile
Devi uscire tramite la porta TCP 443. WireGuard usa esclusivamente UDP, per scelta progettuale, e non è prevista una modalità TCP. Una rete alberghiera o un proxy aziendale che consente soltanto TCP 443 lascerà passare OpenVPN configurato con proto tcp-server e port 443, perché questo traffico appare come una normale sessione TLS. Per attraversare la stessa rete, WireGuard richiede un wrapper come wstunnel o udp2raw, cioè un processo aggiuntivo da eseguire e mantenere aggiornato. Considera anche il conflitto: se su quell'indirizzo IP un web server occupa già TCP 443, uno dei due servizi deve essere spostato.
Gestisci già un'autorità di certificazione. OpenVPN esegue l'autenticazione con certificati X.509, quindi si integra in una PKI (infrastruttura a chiave pubblica) già operativa. I certificati scadono autonomamente e puoi revocarne uno aggiungendolo a una certificate revocation list che il server legge tramite crl-verify. WireGuard non usa certificati, scadenze o certificate revocation list. Per rimuovere un peer devi modificare la configurazione del server e ricaricarla. Con dieci peer è una procedura gestibile. Con quattrocento peer e un requisito di audit, il modello basato sui certificati svolge una funzione concreta.
Ti servono utenti nominativi, non soltanto chiavi. OpenVPN può delegare l'autenticazione a un sistema esterno tramite auth-user-pass-verify o un plugin come openvpn-plugin-auth-pam.so, consentendo di aggiungere LDAP o un secondo fattore basato su password monouso. WireGuard non prevede il concetto di utente. Una chiave è presente nella configurazione oppure non lo è. Se il requisito è «Sara deve inserire un codice dal telefono», WireGuard non può gestirlo autonomamente.
Ti serve il livello 2 oppure un client per sistemi obsoleti. OpenVPN con dev tap inoltra frame Ethernet, una funzione utile per i protocolli broadcast e per i vecchi giochi LAN. WireGuard opera esclusivamente al livello 3 e continuerà a farlo. OpenVPN dispone inoltre di client per hardware e sistemi operativi sui quali non sarà mai disponibile un'app WireGuard. Entrambe sono motivazioni sempre meno frequenti e dev tap è incompatibile con DCO; quando usi il bridge devi quindi adottare il percorso più lento.
Quanto costano realmente le due configurazioni
Un’identità WireGuard richiede un solo comando. Le parentesi sono importanti perché impostano i permessi del file prima che la chiave venga creata:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyL’equivalente in OpenVPN è una certificate authority che resta sotto la tua responsabilità per tutto il ciclo di vita della VPN:
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverNessuno dei due elenchi è fuorviante. La CA offre scadenza e revoca, ma richiede una chiave privata da proteggere per anni, un rinnovo da ricordare e una ricostruzione completa se la perdi. Se non utilizzi questi vantaggi, sostieni costi senza ottenere benefici. La procedura completa per WireGuard, inclusi il forwarding, il NAT (network address translation) e gli errori di handshake che possono farti perdere un pomeriggio, è disponibile nella guida per eseguire il self-hosting di una VPN WireGuard sul tuo VPS.
Cosa richiede ciascuno al firewall
WireGuard richiede una sola regola in ingresso, per UDP sulla porta indicata in ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN richiede UDP 1194 per impostazione predefinita oppure TCP 443, se hai scelto questa configurazione. In entrambi i casi devi abilitare l'inoltro IP e configurare una regola di NAT sull'origine, perché Linux scarta i pacchetti che non sono indirizzati al server. Questa parte è identica per i due protocolli ed è all'origine della maggior parte delle segnalazioni del tipo «il tunnel si connette, ma Internet non funziona». Se non conosci ufw, inizia da le nozioni di base del firewall ufw su un VPS e ricorda che la maggior parte dei provider gestisce un secondo firewall di rete nel pannello di controllo: una regola aggiunta sul server non ha effetto se il pacchetto non raggiunge mai il server. Capire che cos'è una porta e come Linux resta in ascolto su una porta rende più rapide entrambe le verifiche.
Come scegliere, in un solo paragrafo
Usa WireGuard, a meno che tu non sappia indicare il requisito specifico che non è in grado di soddisfare. Se ti serve TCP 443 per aggirare una rete con restrizioni, usa OpenVPN su quella porta e valuta di eseguire entrambi: usano porte diverse e possono coesistere sullo stesso server senza conflitti. Se ti servono account per utente o un secondo fattore di autenticazione, non cercare di forzare WireGuard a gestirli. Aggiungi invece un livello di identità sopra WireGuard. Un server di controllo Headscale self-hosted usa WireGuard come livello sottostante e aggiunge il modello degli account, la distribuzione delle chiavi e l'approvazione dei dispositivi, che WireGuard senza componenti aggiuntivi lascia a tuo carico.
Migrazione da OpenVPN senza interruzioni
Non esiste una conversione. La PKI di OpenVPN non diventa un insieme di chiavi WireGuard, perché WireGuard non usa certificati da convertire. Ogni client riceve una nuova coppia di chiavi, generata nello stesso modo di quella del server.
Eseguire la migrazione in parallelo invece di effettuare un passaggio immediato. WireGuard sulla porta UDP 51820 e OpenVPN sulla porta 1194 possono essere eseguiti contemporaneamente sullo stesso host. Avviare wg0, verificarlo con sudo wg show elencando un latest handshake recente, quindi spostare i client uno alla volta. Quando l'elenco dei peer OpenVPN non cambia più, arrestare il servizio con sudo systemctl disable --now openvpn-server@server. Conservare i file della CA finché non si è certi che non servano più, perché non è possibile ricreare un client revocato usando una CA eliminata.
Un elemento non viene trasferito: gli account basati su nome utente e password e lo storico delle revoche associato. Stabilire dove conservarli prima di disattivare il vecchio server, non dopo.
FAQ
WireGuard è più veloce di OpenVPN?
Su un server Ubuntu 24.04 con configurazione standard, sì, e con un margine significativo, perché WireGuard cifra i dati nel kernel mentre OpenVPN 2.6 gestisce ogni pacchetto tramite un processo in userspace. Con OpenVPN 2.7 e il modulo kernel ovpn di Linux 6.16, anche il percorso dei dati è nel kernel e i due prodotti appartengono alla stessa classe. Misura le prestazioni del tuo ambiente con iperf3 attraverso il tunnel invece di affidarti a un valore riportato in un blog, perché su un VPS il limite è generalmente la CPU o la quota di banda disponibile.
WireGuard può funzionare sulla porta TCP 443?
Non autonomamente. Per progettazione, WireGuard usa solo UDP e non è prevista una modalità TCP. Per attraversare una rete che consente soltanto TCP 443, incapsula WireGuard in un tunnel come wstunnel o udp2raw. Questa soluzione aggiunge un processo da eseguire e aggiornare su entrambi i lati. Se questa limitazione fa parte del tuo normale ambiente di lavoro, OpenVPN con proto tcp-server e port 443 è la soluzione più semplice.
OpenVPN è ormai insicuro?
No. Una versione aggiornata di OpenVPN con un cifrario AEAD come AES-256-GCM e tls-crypt abilitato è una soluzione VPN affidabile. Il vantaggio di WireGuard dipende da un altro fattore: OpenVPN include molto più codice e molte più opzioni, quindi offre a un amministratore affaticato molte più possibilità di configurarlo in modo errato. Meno scelte significa meno configurazioni sbagliate.
Quale soluzione dovrei scegliere per una VPN personale su un VPS?
WireGuard. Una coppia di chiavi per dispositivo, un file di configurazione di circa dieci righe, una porta UDP aperta e un handshake che termina prima che tu ti accorga che è iniziato. Scegli OpenVPN soltanto se ti connetti regolarmente da reti che bloccano UDP oppure se devi integrarti con una certificate authority o una directory utenti già esistente.