SSD Nodes Learn 8GB di RAM — $66/anno
Guide Matt ConnorDi Matt Connor · Aggiornato 2026-08-02

WireGuard o OpenVPN: quale scegliere per il self-hosting

WireGuard è più veloce, usa configurazioni di circa 10 righe e ha una superficie di audit ridotta. OpenVPN resta utile in 4 casi specifici.

La risposta breve

WireGuard vs OpenVPN, per una persona che gestisce un server VPN sul proprio VPS, non è una scelta equilibrata: scegli WireGuard. È più piccolo, viene eseguito nel kernel Linux, stabilisce la connessione in una frazione di secondo e una configurazione client funzionante contiene circa dieci righe. OpenVPN mantiene quattro funzioni specifiche. Se nessuna riguarda il tuo caso, non ti serve.

Queste quattro funzioni consistono nell'uscire da una rete che consente solo la porta TCP 443, integrarsi con un'autorità di certificazione esistente, autenticare utenti identificati tramite password o un secondo fattore e creare un bridge al Layer 2. Tutto ciò che segue documenta questa raccomandazione e indica il punto esatto in cui ciascuna eccezione diventa applicabile al tuo caso.

Perché WireGuard è la scelta dei self-hosters

Il codice è abbastanza compatto da poter essere letto. Il progetto WireGuard contiene l'implementazione del protocollo in circa 4,000 righe di codice. OpenVPN arriva a sei cifre se si conta anche la libreria OpenSSL, da cui dipende per ogni operazione crittografica. Le dimensioni contano perché ogni riga aumenta 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 fa parte del kernel Linux principale dalla versione 5.6, quindi Ubuntu 24.04 e Debian 13 lo distribuiscono senza dover compilare nulla. I pacchetti vengono cifrati dove si trovano già, nello spazio del kernel, senza copiarli a un processo nello spazio utente e poi indietro. Verificalo prima di tutto:

sudo modprobe wireguard && echo ok

Su un VPS KVM viene visualizzato ok. Nella virtualizzazione basata su container che condivide il kernel dell'host, come OpenVZ o LXC, il comando restituisce Operation not supported, perché non puoi caricare un modulo in un kernel che non ti appartiene.

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 da abbassare né un'opzione da configurare in modo errato. OpenVPN negozia con ogni client la cifratura e la versione di TLS (transport layer security). Questa è flessibilità, ma è anche il punto in cui si verificano gli errori di configurazione. Un server lasciato con data-ciphers AES-256-GCM:AES-128-CBC passerà senza problemi alla cifratura CBC per un client che non offre nulla di meglio, e nulla nel log segnalerà questa situazione come un problema.

La porta non risponde. Un pacchetto WireGuard che non supera il controllo di autenticazione del messaggio viene scartato senza alcuna risposta, quindi nmap -sU -p 51820 restituisce open|filtered indipendentemente dal fatto che ci sia qualcosa in ascolto. Un server OpenVPN in modalità TCP completa l'handshake TCP prima di decidere che il client non è autorizzato. Questo basta a dimostrare a uno scanner che il servizio esiste. OpenVPN su UDP con tls-crypt è quasi altrettanto silenzioso, quindi questo argomento è contro l'esecuzione di OpenVPN su TCP, non contro OpenVPN in sé.

Il roaming è automatico. Un peer WireGuard viene identificato dalla sua chiave pubblica, non dal suo indirizzo. Il laptop passa dalla rete domestica a un hotspot mobile, invia un handshake dal nuovo indirizzo e il server aggiorna l'endpoint a cui risponde. Nulla si riconnette perché nulla era mai stato connesso. OpenVPN può fare qualcosa di simile con float, ma normalmente il client chiude e ricrea una sessione TLS completa. Per questo la pausa quando si apre il coperchio è percepibile con OpenVPN, ma non con WireGuard.

Velocità nel 2026: il divario si è ridotto

Per anni, l'argomento sulla velocità era semplice: OpenVPN copiava ogni pacchetto nello userspace, lo cifrava lì e lo ricopiava indietro, mentre WireGuard non lasciava mai il kernel. Oggi questo non descrive più l'intero quadro. Un confronto che ignora questo aspetto è ormai obsoleto.

OpenVPN 2.7 è stato rilasciato a febbraio 2026 con il supporto al modulo kernel upstream ovpn, integrato in Linux 6.16. Si tratta del DCO (data channel offload): il canale di controllo resta nello userspace, mentre il percorso dei dati principali viene spostato nel kernel, come avviene da sempre con WireGuard. Con un kernel e una versione di OpenVPN abbastanza recenti da supportarlo, il throughput appartiene alla stessa fascia, invece di essere molto inferiore. Verifica ciò che hai effettivamente installato:

uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3

A luglio 2026, una versione standard di Ubuntu 24.04 LTS include OpenVPN 2.6, non 2.7, e il modulo ovpn richiede la versione 2.7. In questa release puoi usare l'offload solo 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. È un componente variabile che WireGuard non richiede.

Leggi attentamente le limitazioni del DCO prima di considerarlo un motivo per continuare a usare OpenVPN. Supporta solo tunnel Layer 3, accetta esclusivamente cifrari AEAD (crittografia autenticata con dati associati: AES-GCM o ChaCha20-Poly1305), non supporta la compressione e, su un server, funziona solo con topology subnet. Ognuna di queste limitazioni riduce una parte della flessibilità che inizialmente distingueva OpenVPN. Un OpenVPN veloce è un OpenVPN configurato per comportarsi come WireGuard.

Non fidarti dei valori di throughput pubblicati da altri, compresi quelli di questa pagina. Su una VPS, il limite massimo dipende di solito dalla quota CPU o dalla quota di rete, non dal protocollo. Misura le prestazioni con iperf3 in esecuzione attraverso il tunnel, quindi ripeti il test al di fuori del tunnel e confronta i due risultati.

Quando OpenVPN continua a essere utile

Devi uscire tramite la porta TCP 443. WireGuard usa solo UDP, per scelta progettuale, e non è prevista una modalità TCP. Una rete alberghiera o un proxy aziendale che consente solo TCP 443 lascerà passare OpenVPN configurato con proto tcp-server e port 443, perché quel traffico appare come una normale sessione TLS. WireGuard richiede un wrapper come wstunnel o udp2raw per attraversare la stessa rete, aggiungendo un processo da eseguire e mantenere aggiornato. Tieni presente il conflitto: se un server web utilizza già TCP 443 su quell'indirizzo IP, 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 automaticamente e puoi revocarne uno aggiungendolo a una lista di revoca dei certificati che il server legge tramite crl-verify. WireGuard non usa certificati, scadenze o liste di revoca. Per rimuovere un peer devi modificare la configurazione del server e ricaricarla. Con dieci peer, questa procedura è semplice. Con quattrocento peer e un requisito di audit, il modello basato sui certificati offre un vantaggio concreto.

Ti servono utenti identificabili, non solo chiavi. OpenVPN può delegare l'autenticazione a un sistema esterno con auth-user-pass-verify o con un plugin come openvpn-plugin-auth-pam.so; è così che puoi aggiungere LDAP o un secondo fattore basato su password monouso. WireGuard non gestisce 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 Layer 2 oppure un client per sistemi obsoleti. OpenVPN con dev tap esegue il bridging dei frame Ethernet, utile per i protocolli broadcast e per i vecchi giochi LAN. WireGuard supporta solo il Layer 3 e continuerà a farlo. OpenVPN dispone inoltre di client per hardware e sistemi operativi sui quali non sarà mai disponibile un'app WireGuard. Entrambi sono motivi sempre meno rilevanti e dev tap è incompatibile con DCO, quindi il bridge impone il percorso più lento.

Quanto ti 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.key

L'equivalente OpenVPN è una certificate authority che ora devi gestire per tutta la durata 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 server

Nessuno dei due elenchi è fuorviante. La CA offre scadenza e revoca, ma richiede una chiave privata che devi proteggere per anni, un rinnovo che devi ricordare e una ricostruzione se la perdi. Se non usi queste funzionalità, sostieni un costo inutile. La procedura completa per WireGuard, incluso il forwarding, il NAT (network address translation) e gli errori di handshake che possono farti perdere un pomeriggio, è disponibile nella guida per ospitare autonomamente una VPN WireGuard sul tuo VPS.

Cosa richiede ciascuno dal firewall

WireGuard richiede esattamente una regola in ingresso per UDP sulla porta indicata in ListenPort:

sudo ufw allow 51820/udp
sudo ufw status verbose

OpenVPN richiede UDP 1194 per impostazione predefinita oppure TCP 443, se hai scelto questa configurazione. Entrambi richiedono quindi l'attivazione dell'inoltro IP e una regola di NAT dell'origine, perché un sistema Linux scarta i pacchetti che non sono indirizzati a esso. Questa parte è identica per i due protocolli ed è all'origine della maggior parte dei problemi descritti come "il tunnel si connette, ma non c'è accesso a Internet". Se non conosci ufw, inizia dalle nozioni di base sul firewall ufw su un VPS e ricorda che la maggior parte dei provider esegue un secondo firewall di rete nel pannello di controllo: una regola aggiunta sul server non ha alcun effetto se il pacchetto non raggiunge mai il server. Capire che cos'è una porta e come Linux resta in ascolto su di essa rende più rapide entrambe le verifiche.

Come scegliere, in un paragrafo

Eseguite WireGuard, a meno che non sappiate indicare il requisito specifico che non può soddisfare. Se vi serve TCP 443 per aggirare una rete con restrizioni, eseguite OpenVPN su quella porta e valutate l'esecuzione di entrambi: usano porte diverse e coesistono sullo stesso server senza conflitti. Se vi servono account per utente o un secondo fattore, non cercate di imporli a WireGuard. Aggiungete invece un livello di gestione delle identità sopra di esso. Un server di controllo Headscale autogestito utilizza WireGuard sottostante e aggiunge il modello degli account, la distribuzione delle chiavi e l'approvazione dei dispositivi che WireGuard senza componenti aggiuntivi lascia a voi.

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 il passaggio in un'unica soluzione. WireGuard sulla porta UDP 51820 e OpenVPN sulla porta 1194 possono essere eseguiti contemporaneamente sullo stesso host. Avviare quindi wg0, verificarlo con sudo wg show elencando un elemento latest handshake recente, poi 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 dopo avere eliminato la CA.

Un elemento non viene trasferito: gli account basati su nome utente e password e lo storico delle revoche associato. Stabilire dove conservarli prima di spegnere il vecchio server, non dopo.

FAQ

WireGuard è più veloce di OpenVPN?

Su un server Ubuntu 24.04 con la configurazione predefinita, sì, e con un margine ampio, perché WireGuard cifra i dati nel kernel, mentre OpenVPN 2.6 trasferisce ogni pacchetto attraverso un processo nello spazio utente. Con OpenVPN 2.7 e il modulo del kernel ovpn di Linux 6.16, anche il percorso dei dati è nel kernel e i due software appartengono alla stessa categoria. 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 è in genere la CPU o la quota di larghezza di banda.

WireGuard può usare la porta TCP 443?

Non autonomamente. Per progettazione, WireGuard usa solo UDP e non è prevista una modalità TCP. Per attraversare una rete che consente solo TCP 443, incapsula WireGuard in un tunnel come wstunnel o udp2raw. Questo richiede l'esecuzione e l'applicazione di patch a un processo su entrambe le estremità. Se questa limitazione è normale nel tuo 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 VPN sicura. Il vantaggio di WireGuard dipende da un altro aspetto: OpenVPN include molto più codice e molte più opzioni, quindi offre a un amministratore affaticato molti più modi per configurarlo in modo errato. Meno scelte significano meno configurazioni errate.

Quale 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 solo se ti connetti regolarmente da reti che bloccano UDP oppure se devi integrarti con un'autorità di certificazione o una directory utenti già esistente.