Guida
Come configurare una VPN su Linux
Il client del fornitore dal suo repository, l’alternativa di un file di configurazione negli strumenti propri del sistema, il dettaglio DNS che su Linux causa più perdite che altrove e i controlli da terminale. Scritto per Ubuntu 26.04 LTS e NetworkManager.
Prima di iniziare
Questa guida non sceglie per te
Ogni passaggio qui sotto è uguale qualunque sia il fornitore che usi, perciò qui non ne viene nominato nessuno. La scelta è un’attività separata e si fa nel registro, dove viene fatta sulla base di un punteggio pubblicato, non di una pagina di download.
Installa il client dal repository del fornitore, usando la chiave di firma indicata nelle istruzioni del fornitore. Non incollare mai in un terminale un comando di installazione composto da una sola riga preso da un forum o da un blog: il comando viene eseguito come root e non hai idea di ciò che ha recuperato. Un pacchetto proveniente da un repository firmato può essere verificato; uno script inoltrato a una shell no.
Installa il client
Su Linux esistono due strade, ed entrambe sono valide. Il client del fornitore è la prima: offre un kill switch, un selettore dei server e la gestione DNS senza costi aggiuntivi. Un file di configurazione negli strumenti propri del sistema è la seconda; la sezione alla fine di questa guida spiega a cosa si rinuncia.
- Accedi al sito web del fornitore e apri le istruzioni per Linux dall’area dell’account. Indicano il repository, la chiave e il pacchetto; segui quelle istruzioni e nient’altro.
- Aggiungi il repository e la relativa chiave, quindi installa il pacchetto con il gestore dei pacchetti della distribuzione. La chiave permette al gestore dei pacchetti di rifiutare un pacchetto manomesso, quindi un repository aggiunto senza chiave è un repository di cui hai accettato l’attendibilità.
- Abilita il servizio del client affinché si avvii all’accensione. Di solito un client è composto da un demone root e da un’app desktop che comunica con esso; il demone gestisce il tunnel e un kill switch che deve essere attivo dall’avvio ha bisogno che il demone sia in esecuzione dall’avvio.
- Accedi al client — dall’app oppure dalla riga di comando con il token fornito dall’area dell’account — e assegna al dispositivo un nome che non permetta di identificarti.
- Non connetterti ancora. Apri prima le impostazioni. Nella maggior parte dei client, due delle tre impostazioni qui sotto sono disattivate per impostazione predefinita.
Le tre impostazioni che vale la pena controllare
I menu dei client cambiano, le impostazioni no. Ognuna delle tre ha una voce nel glossario se il nome non ti è familiare.
Il kill switch
Blocca tutto il traffico se il tunnel cade, invece di lasciare silenziosamente che la connessione torni alla rete normale. Su Linux consiste in un insieme di regole del firewall scritte dal client: viene scartato tutto tranne l’interfaccia del tunnel e il relativo endpoint. Attivalo e, se il client la offre, scegli la modalità sempre attiva o lockdown, così le regole restano valide dall’avvio e non solo quando sei connesso. Lo scopo del kill switch è spiegato nella pagina dedicata.
DNS dentro il tunnel
Le richieste di risoluzione dei nomi possono uscire dalla macchina al di fuori del tunnel anche quando tutto il resto è al suo interno; su Linux questa è la perdita più frequente, perché il resolver è una componente dinamica. Su Ubuntu quella componente è systemd-resolved: ogni interfaccia ha i propri resolver e quello con la route predefinita per il DNS risponde a tutto ciò che non corrisponde a un dominio più specifico. Il client dovrebbe indirizzare quella route predefinita al resolver del fornitore attraverso l’interfaccia del tunnel. Imposta nel client il DNS del fornitore, non quello di terzi: avere un secondo soggetto che vede solo le richieste di risoluzione significa aggiungere un altro soggetto. Il funzionamento di una perdita è spiegato nella pagina sulle perdite DNS.
Il protocollo
Lascialo sull’impostazione predefinita moderna, a meno che qualcosa non funzioni — la pagina sui protocolli indica quali sono attuali e quali legacy. Se il client offre un’opzione meno recente per risolvere un problema di connessione, è un compromesso da accettare consapevolmente e poi annullare: il registro segnala il protocollo più debole ancora offerto da un fornitore e selezionarlo manualmente significa scegliere per te quella classificazione.
Verifica che funzioni davvero
Connettiti, poi controlla invece di dare per scontato. Esegui questi tre controlli da terminale, in quest’ordine:
- Il tuo indirizzo è cambiato. Usa
curlcon un servizio «qual è il mio IP» oppure aprine uno nel browser e verifica che il Paese corrisponda all’uscita scelta.ip route getverso un indirizzo pubblico dovrebbe indicare l’interfaccia del tunnel, non quella Wi-Fi o Ethernet. - Le richieste di risoluzione passano nel tunnel. Esegui
resolvectl status: l’interfaccia del tunnel dovrebbe usare il resolver del fornitore e la route DNS predefinita; il resolver dell’interfaccia fisica dovrebbe risultare inutilizzato. Un test delle perdite DNS nel browser è un secondo controllo e qualsiasi elemento appartenente al tuo fornitore di servizi Internet indica che l’impostazione DNS non è stata applicata. - Il kill switch fa ciò che dichiara. Mentre è in corso un download, arresta il servizio del client con
systemctl stopoppure disattiva l’interfaccia del tunnel conip link set … down, in modo che il tunnel cada senza chiedere al client di farlo. Il trasferimento dovrebbe interrompersi immediatamente. Se continua, il kill switch è solo decorativo.
La batteria di test più completa, con ciò che ciascuno può e non può dimostrare, è disponibile nella guida dedicata.
Cosa dimostrano questi controlli
+Il tuo traffico esce dal server di uscita nel Paese selezionato
+Il resolver che risponde alle tue richieste è quello del fornitore, all’interno del tunnel
+Quando il tunnel cade, la connessione si interrompe invece di tornare silenziosamente alla rete normale
Cosa non dimostrano
−Non dicono nulla su ciò che il fornitore conserva — è una questione documentale, trattata nelle pagine sulla conservazione
−Non ti rendono anonimo: il browser e i tuoi accessi restano invariati; vedi da cosa una VPN non ti protegge
−Un test superato oggi non è una promessa sul prossimo aggiornamento del pacchetto o sul prossimo kernel
La strada del file di configurazione e a cosa si rinuncia
La maggior parte dei fornitori pubblica file di configurazione per i due protocolli comuni nell’area dell’account. Un file WireGuard viene importato in NetworkManager dall’editor delle connessioni o con nmcli connection import e funziona altrettanto bene con wg-quick; un file OpenVPN viene importato nello stesso modo con il plugin OpenVPN. Ottieni il tunnel, il comando dell’interfaccia del sistema e nient’altro che il fornitore non abbia inserito nel file.
Ciò che perdi è il resto del client. Non c’è alcun kill switch a meno che tu non scriva personalmente le regole del firewall; un file importato in NetworkManager che interrompe la connessione restituisce semplicemente il traffico alla rete normale. Non c’è alcuna gestione DNS oltre la riga DNS nel file e un file che ne è privo è la causa della perdita da verificare per prima. Non c’è alcun selettore dei server: ogni file corrisponde a una sola uscita e per cambiare uscita serve un altro file. Genera i file dall’area dell’account e conservali in privato: un file WireGuard contiene la chiave privata che costituisce la tua identità presso il fornitore.
Questa strada è adatta a un server, a una macchina senza interfaccia grafica o a una distribuzione non supportata dal client. Su un portatile, è preferibile il client: il kill switch che offre è proprio ciò che un file di configurazione non può fornire.
Quando non funziona
Il tunnel è attivo, ma il DNS passa ancora dal mio fornitore di servizi Internet
La classica perdita di Linux. Un file di configurazione che non imposta alcun DNS lascia che systemd-resolved usi il resolver fornito dalla rete, al di fuori del tunnel. Esegui resolvectl status: l’interfaccia del tunnel dovrebbe elencare il resolver del fornitore e avere la route predefinita per il DNS, indicata con un segno più.
Aggiungi una riga DNS alla configurazione oppure imposta il DNS sulla connessione in NetworkManager, quindi riconnettiti. Il client del fornitore lo imposta autonomamente: è uno dei motivi per preferirlo.
Quando il tunnel cade smette di funzionare tutto, ed è irritante
È il kill switch che fa il suo lavoro: un tunnel interrotto significa una connessione inattiva, non un ritorno silenzioso alla rete senza protezione. Riconnettiti invece di disattivare il kill switch.
Se cade spesso su una rete e raramente altrove, cambia una volta il protocollo e prova un’uscita più vicina. Se nessun protocollo resta attivo su quella rete, la rete sta bloccando il traffico VPN e questa guida si ferma qui.
Il client chiede sudo o una password ogni volta
La creazione di un’interfaccia di rete è un’operazione privilegiata e un client che non installa un servizio in background deve chiedere l’autorizzazione ogni volta. La maggior parte dei client ne installa uno: un demone eseguito come root e un’app desktop che comunica con esso. La richiesta ripetuta indica che il servizio non è in esecuzione o non è abilitato.
Controlla con systemctl status e con il nome del servizio indicato nelle istruzioni del fornitore, quindi abilitalo affinché si avvii all’accensione.
Nella pagina di test compaiono indirizzi IPv6
Il tunnel trasporta IPv4, ma la macchina ha ancora una route IPv6 al di fuori del tunnel, quindi tutto ciò che preferisce IPv6 aggira la VPN. I fornitori che non trasportano IPv6 dovrebbero disabilitarlo sull’interfaccia; i client migliori lo fanno.
Se hai creato la connessione da un file, disabilita IPv6 sulla connessione in NetworkManager oppure disattivalo con sysctl e ripeti il test. Un tunnel che lascia aperta una seconda famiglia di indirizzi è un tunnel a metà.
Stessi passaggi, altre macchine
Il resto delle piattaforme
Ogni piattaforma ha una guida propria anziché una scheda su questa. I passaggi divergono non appena si apre il programma di installazione, e una pagina che risponde a tre piattaforme insieme non risponde bene a nessuna.