Come usare un file di configurazione WireGuard
In questa pagina
Una connessione WireGuard è un file di testo. Davvero, non è altro: una manciata di righe con le tue chiavi, l'indirizzo del server e le regole su cosa passa nel tunnel. Una volta che hai quel file, connettersi a un server VPN WireGuard significa semplicemente consegnarlo all'app WireGuard del dispositivo che stai usando.
Questa guida fa due cose. Prima legge riga per riga un vero file di configurazione, così sai cosa fa ogni impostazione e quale cambiare quando qualcosa non va. Poi spiega come importare quel file e connetterti su Windows, Android, iPhone, macOS, Linux e router, e chiude con la manciata di problemi che spiegano quasi tutte le lamentele su WireGuard: l'handshake che non si completa mai e il tunnel che si connette ma non carica nessuna pagina.
Cosa c'è dentro un file .conf, riga per riga
Ogni configurazione WireGuard ha la stessa struttura in due parti. [Interface] descrive il tuo capo del tunnel; [Peer] descrive la macchina a cui ti connetti. Ecco una configurazione client completa, con i segreti sostituiti da segnaposto:
[Interface] PrivateKey = YOUR_PRIVATE_KEY_KEEP_THIS_SECRET Address = 10.7.0.4/32 DNS = 10.7.0.1 [Peer] PublicKey = THE_SERVER_PUBLIC_KEY_FROM_YOUR_PROVIDER Endpoint = 198.51.100.10:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
198.51.100.10 è un indirizzo di documentazione riservato dall'RFC 5737: niente di tutto questo si connette a qualcosa. Usa i valori del tuo file.Il blocco [Interface]: il tuo lato
- PrivateKey: questa è la tua identità sulla VPN. Chiunque la possieda può spacciarsi per te. Sono 44 caratteri base64 che terminano con
=; se la tua ha una lunghezza diversa, il file è stato troncato da qualche parte durante la copia. - Address: l'IP che il tuo dispositivo ha dentro il tunnel, non il tuo IP pubblico. Il
/32significa "solo questo indirizzo", ed è normale per un client. - DNS: il resolver usato mentre il tunnel è attivo. Senza, il dispositivo continua a interrogare il resolver precedente, il che rivela cosa stai cercando e spesso impedisce di risolvere qualsiasi cosa dall'altra parte.
- MTU: facoltativa, ed è la riga più utile da conoscere. Manca nella maggior parte dei file perché il valore predefinito è quello giusto; vedi la sezione risoluzione dei problemi per il caso in cui non lo è.
Il blocco [Peer]: il lato del server
- PublicKey: la chiave pubblica del server. La tua non compare mai nel tuo file; la conserva il server.
- Endpoint: dove inviare i pacchetti, nel formato
host:port. WireGuard funziona solo in UDP, e51820è la porta convenzionale, non una porta obbligatoria. - AllowedIPs: quali destinazioni passano nel tunnel.
0.0.0.0/0, ::/0significa tutto, ed è proprio lo scopo di una VPN per la privacy. Un elenco più ristretto (ad esempio solo la rete interna della tua azienda) fa passare nel tunnel solo quello e lascia il resto sulla connessione normale. Questa configurazione si chiama split tunnel, ed è una scelta deliberata, non un tunnel completo che non funziona. - PersistentKeepalive: invia un piccolo pacchetto ogni 25 secondi perché il dispositivo NAT tra te e il server mantenga aperto il percorso di ritorno. Serve ogni volta che sei dietro un NAT, e su uno smartphone o una connessione di casa lo sei sempre.
Address e DNS non sono affatto impostazioni di WireGuard: sono istruzioni per lo strumento wg-quick, che configura la tua interfaccia di rete. WireGuard non le vede mai. Puoi verificarlo tu stesso: wg-quick strip wg0 stampa la configurazione che il kernel riceve davvero, ed entrambe le righe sono semplicemente sparite. Conta se un giorno configuri un tunnel con wg setconf invece di wg-quick, perché in quel caso nessuno assegna il tuo indirizzo né il tuo resolver e il tunnel si attiva collegato al nulla.Ti serve un file di configurazione da importare? Un servizio HytHost VPN ti consegna una configurazione WireGuard pronta all'uso da €0.99/mese.
Vedi i piani VPNWindows: importa il tunnel
Windows ha un'app WireGuard ufficiale, e importarci un file è tutto il lavoro.
- Installa WireGuard da wireguard.com/install.
- Fai clic su Aggiungi tunnel in basso a sinistra: si apre una finestra di selezione filtrata su File di configurazione (*.zip, *.conf). Scegli il tuo
.confe comparirà nell'elenco dei tunnel, con il nome del file. - Oppure incollalo. La freccia accanto ad Aggiungi tunnel offre Aggiungi tunnel vuoto..., che ti dà una casella di testo: utile quando la configurazione ti è arrivata in un messaggio invece che come file. È precompilata con una nuova chiave privata, quindi cancella quella riga e incollaci sopra la tua configurazione.
- Fai clic su Attiva. Lo stato passa ad Attivo e il pannello inizia a contare i byte trasferiti. Quel contatore è il controllo più rapido che hai: se mostra dati in uscita e niente in entrata, l'handshake non si sta completando.
Android e iPhone: scansiona il codice QR o importa il file
Su uno smartphone hai due strade, e il codice QR esiste proprio perché digitare una chiave di 44 caratteri su un touchscreen è un tormento.
Android
- Installa WireGuard dal Play Store e tocca il pulsante +.
- La schermata Crea un tunnel WireGuard offre Scansiona da codice QR, Importa da file o archivio e la creazione da zero. Scegli l'opzione che corrisponde a ciò che ti è stato dato.
- Dai un nome al tunnel se richiesto, poi attiva il suo interruttore. Android chiede una sola volta il permesso di aggiungere una configurazione VPN: quella richiesta è del sistema operativo, non dell'app.
iPhone e iPad
- Installa WireGuard dall'App Store e tocca Aggiungi un tunnel.
- In Aggiungi un nuovo tunnel WireGuard, scegli Crea da codice QR oppure Crea da file o archivio. La schermata dello scanner si chiama Scansione codice QR; dopo una scansione riuscita ti chiede di dare un nome al tunnel.
- Attivalo e consenti la configurazione VPN quando iOS lo chiede.
Creare un codice QR da un file di configurazione che hai già
Il codice QR non è qualcosa che il provider deve per forza darti: è solo il tuo file di configurazione disegnato come immagine, e puoi generarlo da solo con un comando. È la stessa app WireGuard a suggerirlo:
# prints the code straight into the terminal, ready to scan off the screen qrencode -t ansiutf8 < wg0.conf # or write it to an image file qrencode -o wg0.png < wg0.conf
Su Debian o Ubuntu, qrencode si installa con apt install qrencode; su macOS, con brew install qrencode.
macOS e Linux
macOS
Installa WireGuard dal Mac App Store. L'app per Mac non è l'app per iPhone su uno schermo più grande: vive nella barra dei menu, e la sua finestra si apre da Gestisci i tunnel. Fai clic su Importa tunnel da file (nella barra dei menu la stessa voce si chiama Importa tunnel da file…), scegli il tuo .conf, poi seleziona il tunnel e fai clic su Attivato. Sul Mac non c'è uno scanner QR (i codici QR sono pensati per gli smartphone), quindi usa direttamente il file, oppure scegli Aggiungi tunnel vuoto… e incollaci la configurazione.
Se preferisci lavorare nel terminale, brew install wireguard-tools ti dà gli stessi comandi wg-quick di Linux, descritti qui sotto.
Linux
- Installa gli strumenti. Su Debian o Ubuntu:
sudo apt install wireguard. La maggior parte delle distribuzioni ha un pacchetto con lo stesso nome. - Metti il file dove wg-quick lo cerca. È il passaggio in cui si sbaglia più spesso, perché il nome del file diventa il nome dell'interfaccia:
sudo install -m 600 -o root -g root wg0.conf /etc/wireguard/wg0.conf
Il600è importante: il file contiene la tua chiave privata e non deve essere leggibile dagli altri utenti della macchina. Usa un nome breve e semplice; deve essere un nome di interfaccia di rete valido. - Attivalo:
sudo wg-quick up wg0 sudo wg show
wg showè l'unico comando che vale la pena ricordare. Mostra il peer, l'endpoint, una riga latest handshake e i contatori di traffico. Un timestamp di handshake che non compare mai è il segno distintivo del problema descritto nella prossima sezione. - Avvio automatico:
sudo systemctl enable --now wg-quick@wg0. Per fermare il tunnel a mano,sudo wg-quick down wg0.
wg-quick: `/etc/wireguard/wg0.conf' does not exist significa che il nome che hai indicato non corrisponde a nessun file in quella cartella: hai chiesto wg0 e il file si chiama in un altro modo. E se il tunnel si rifiuta di attivarsi lamentandosi di resolvconf, il colpevole è la riga DNS: wg-quick ha bisogno di resolvconf o systemd-resolved per applicarla. Installane uno, oppure rimuovi la riga DNS e imposta tu il resolver.Sul router, per coprire tutta la casa
Mettere il tunnel sul router copre tutti i dispositivi collegati, compresi quelli che non possono proprio eseguire un'app VPN: una console, una TV, uno smart speaker. Se puoi farlo dipende interamente dal firmware.
| Firmware | Supporto WireGuard | Dove guardare |
|---|---|---|
| OpenWrt | Sì, con un pacchetto | Installa luci-proto-wireguard, poi aggiungi un'interfaccia con protocollo WireGuard VPN e compila i campi con i dati del tuo file |
| Asus (firmware originale recente) | Sì, su molti modelli | La sezione VPN ha un client WireGuard che importa direttamente un .conf |
| Asuswrt-Merlin | Sì | Stessa idea, con più controllo sull'instradamento |
| Mikrotik RouterOS 7 | Sì | WireGuard è integrato; RouterOS 6 non lo ha affatto |
| Router tipico fornito dall'operatore | Di solito no | Niente WireGuard e nessun modo di aggiungerlo: vedi sotto |
Se il tuo router è quello che ti ha dato l'operatore, le opzioni realistiche sono mettere dietro un router che controlli tu, oppure continuare con le configurazioni per singolo dispositivo. Nessuna delle due è una sconfitta; anzi, la configurazione per dispositivo spesso è migliore, perché puoi lasciare il tunnel spento sui dispositivi che non ne hanno bisogno.
Una cosa da decidere prima di far passare tutta la casa in un tunnel: da quel momento ci passa tutto. I siti delle banche che non amano gli indirizzi esteri, lo streaming che controlla la tua regione e qualsiasi cosa comunichi con i dispositivi della tua rete possono comportarsi diversamente. È qui che un AllowedIPs più ristretto si rivela prezioso: fai passare solo ciò che serve e lascia stare il resto.
Si connette ma non carica nulla, e altri problemi reali
WireGuard è insolitamente silenzioso quando qualcosa va storto, ed è una scelta di progettazione voluta: un pacchetto non autenticato non riceve alcuna risposta, così uno scanner non può capire se c'è qualcosa in ascolto. L'effetto collaterale è che una chiave sbagliata, una porta sbagliata e una rete bloccata sembrano identiche dal tuo lato: silenzio. Parti dal sintomo.
| Cosa vedi | Di solito è | Dove guardare |
|---|---|---|
| Nessun handshake; i byte inviati salgono, quelli ricevuti restano a zero | Nessuno risponde, oppure la risposta non riesce a tornare | Endpoint, la PublicKey del server, UDP bloccato |
| Handshake ok, le cose piccole funzionano, le pagine web restano caricate a metà | MTU | Aggiungi una riga MTU a [Interface] |
| Connesso, ma non si risolve nulla | DNS | La riga DNS, e resolvconf su Linux |
| Connesso, i nomi si risolvono, ma nel tunnel non passa traffico | AllowedIPs troppo ristretto | AllowedIPs in [Peer] |
| Funziona, poi si blocca dopo un paio di minuti di inattività | La mappatura NAT è scaduta | PersistentKeepalive = 25 |
"Handshake did not complete"
Il tuo dispositivo ha inviato un pacchetto di avvio e non ha ricevuto nulla in risposta. Controlla, in quest'ordine:
- L'endpoint. Host giusto, porta giusta, e la porta dev'essere UDP. Un errore di battitura qui produce esattamente questo sintomo e nessun altro.
- Che l'UDP arrivi davvero all'esterno. Wi-Fi per ospiti, reti degli hotel, alcune reti aziendali e qualche operatore mobile consentono solo TCP sulle porte comuni. Se la stessa configurazione funziona sulla connessione di casa e non su una rete specifica, la configurazione è a posto e il problema è la rete.
- Che le chiavi siano al posto giusto. La
PublicKeyin[Peer]è la chiave pubblica del server, e il server deve avere, separatamente, la chiave pubblica che corrisponde alla tuaPrivateKey. Una configurazione copiata da un altro dispositivo fallisce qui. - L'orologio. L'handshake di WireGuard include un timestamp e rifiuta quelli troppo sfasati. Succede di rado, ma capita sui dispositivi che hanno perso l'ora.
Se il tunnel funziona da casa ma mai da una connessione mobile, la causa potrebbe essere dal lato del tuo operatore e non dal tuo: il CGNAT e soluzioni simili cambiano ciò che può raggiungerti. La guida al port forwarding spiega come verificarlo dal tuo router in un paio di minuti.
Il problema dell'MTU, che vale la pena capire una volta per tutte
È il classico caso "connesso ma internet non va", e lo schema è inconfondibile: il ping funziona, il DNS funziona, le pagine leggere si caricano e tutto ciò che è un po' più pesante resta bloccato all'infinito.
La causa è la dimensione. Incapsulare il traffico per il tunnel aggiunge intestazioni, quindi un pacchetto che entrava perfettamente nella connessione normale non ci sta più una volta dentro WireGuard. I pacchetti piccoli passano senza problemi; quelli grandi vengono scartati. Di norma la rete avvisa il mittente di usare pacchetti più piccoli, ma il messaggio che lo fa viene spesso filtrato, così invece di un errore resti semplicemente ad aspettare.
La soluzione è dire a WireGuard di usare pacchetti più piccoli fin dall'inizio. wg-quick ci prova già: prende l'MTU del tuo percorso normale e sottrae 80 byte per l'overhead del tunnel, quindi su una normale connessione da 1500 byte ottieni 1420. Quando è ancora troppo (alcune reti mobili, la maggior parte delle connessioni che passano già dentro un altro tunnel), impostalo esplicitamente e scendi a gradini:
[Interface] MTU = 1420 # what wg-quick would have picked # still stalling? try 1380, then 1280
1280 è il minimo che vale la pena provare, perché è la dimensione di pacchetto più piccola che IPv6 impone a tutti di trasportare, quindi supera praticamente qualsiasi percorso. Costa un po' di efficienza ed è molto meglio di un tunnel che si blocca.
Il tunnel è attivo ma non ci passa niente
Controlla prima AllowedIPs. Non è un firewall né un elenco di permessi: decide quali destinazioni vengono instradate nel tunnel. Se non include 0.0.0.0/0, il traffico verso il resto di internet non doveva mai passarci, e la connessione si comporta esattamente come è stata configurata. Su Linux, ip route show table all | grep wg0 mostra cosa è stato davvero instradato.
Se l'instradamento è corretto e sono i nomi a non risolversi, è la riga DNS: manca, oppure c'è ma non viene applicata perché resolvconf non è installato.
Da dove arriva il file di configurazione
Tutto ciò che hai letto finora presuppone che tu abbia un file. Ci sono esattamente due modi per ottenerlo.
Gestire il server da solo
Generi una coppia di chiavi, installi WireGuard su una macchina con un indirizzo pubblico, aggiungi il tuo dispositivo come peer e scrivi a mano la configurazione client. Non è difficile ed è davvero una bella cosa da imparare. Il costo è continuo: un server da pagare e tenere aggiornato, e una modifica manuale su entrambi i lati ogni volta che aggiungi un dispositivo, perché, ricorda, un peer è un dispositivo.
Ottenerlo da un provider
L'alternativa è che il file venga generato per te e tu lo scarichi e basta. Con HytHost VPN, da €0.99/mese, lo trovi qui:
- Ordina il servizio e accedi all'area clienti, poi apri il tuo servizio VPN dall'elenco.
- Trova la sezione WireGuard Configuration. Ti offre due pulsanti: Copy to Clipboard, che copia il testo della configurazione negli appunti, e Download Configuration, che ti consegna il file già pronto.
- Se l'hai copiato, incollalo in un editor di testo semplice e salvalo con l'estensione
.conf;wg0.confè un buon nome. Assicurati che l'editor non abbia aggiunto.txtalla fine. - Importalo seguendo la sezione qui sopra relativa al tuo dispositivo. Su uno smartphone, trasformalo prima in un codice QR con
qrencode.
La stessa pagina mostra se il tunnel è attualmente connesso al server, il che risolve il dubbio "è colpa mia o loro?" prima che inizi a cambiare impostazioni. Non c'è un pulsante per il codice QR: generalo tu dal file, il che significa anche che il codice non viaggia mai dove non serve.
Ti serve un file di configurazione da importare? Un servizio HytHost VPN ti consegna una configurazione WireGuard pronta all'uso da €0.99/mese.
Vedi i piani VPNDomande frequenti
Installa l'app ufficiale WireGuard, importa il file di configurazione che ti ha dato il tuo server o provider, poi attiva il tunnel. Su Windows significa Aggiungi tunnel e poi Attiva; su Android e iPhone puoi scansionare il file come codice QR invece di importarlo; su Linux, metti il file in /etc/wireguard/ ed esegui wg-quick up con il suo nome. Un timestamp di handshake e dei dati ricevuti nell'app confermano che la connessione è attiva.
Un semplice file di testo, di solito con estensione .conf, che contiene due blocchi. [Interface] descrive il tuo dispositivo: la sua chiave privata, l'indirizzo che assume dentro il tunnel e il resolver da usare. [Peer] descrive il server: la sua chiave pubblica, il suo host e la porta UDP, e quali destinazioni devono passare nel tunnel. Quel file è l'intera connessione: sul tuo dispositivo non viene salvato nient'altro da nessuna parte.
Non in modo affidabile, e il motivo merita di essere conosciuto. Una configurazione è un peer, identificato da una coppia di chiavi, e il server tiene traccia di un'unica posizione attuale per ogni peer. Se colleghi un telefono e un portatile con lo stesso file, il server invia il traffico di ritorno a quello che ha fatto l'handshake più di recente, quindi entrambe le connessioni cadono e tornano di continuo. Ogni dispositivo ha bisogno della propria configurazione con la propria coppia di chiavi.
Lo generi dal file di configurazione che hai già: un codice QR di WireGuard è semplicemente quel file codificato come immagine. Esegui qrencode -t ansiutf8 < wg0.conf per stamparlo nel terminale e scansionarlo dallo schermo, oppure qrencode -o wg0.png < wg0.conf per salvarlo come immagine. Poiché il codice contiene la chiave privata, va trattato come il file stesso: mai pubblicato da nessuna parte.
No. La chiave privata è ciò che identifica il tuo dispositivo sulla VPN, quindi chiunque abbia il file può connettersi al posto tuo. Non va mai pubblicata in una chat, in un forum, in un issue tracker o in un ticket di assistenza, e lo stesso vale per un codice QR o uno screenshot del file. Se una configurazione è stata esposta, la soluzione è generare una nuova coppia di chiavi e sostituire il peer, non sperare che nessuno l'abbia letta.
Quel messaggio significa che il pacchetto di avvio è partito e non è tornato nulla, e WireGuard non può dirti perché, dato che non ha mai ricevuto risposta. Controlla host e porta dell'Endpoint, verifica che la rete su cui ti trovi consenta l'UDP in uscita e assicurati che la PublicKey sotto [Peer] sia la chiave del server, mentre il server deve avere la chiave pubblica corrispondente alla tua chiave privata. Se lo stesso file funziona su un'altra rete, il file è corretto ed è la rete a filtrare l'UDP.
Questo schema (handshake ok, ping ok, pagine web che si bloccano) è quasi sempre l'MTU. Una volta incapsulato il traffico per il tunnel, ogni pacchetto diventa più grande, quindi i pacchetti che prima entravano vengono scartati, e il messaggio che normalmente lo segnalerebbe viene spesso filtrato. Aggiungi una riga MTU a [Interface]: 1420 è il valore che wg-quick calcolerebbe su una connessione normale, e 1380 o 1280 funzionano quando è ancora troppo.
Non per usare un file di configurazione. Il client apre una connessione UDP in uscita verso il server, e la risposta torna attraverso la mappatura creata da quella connessione, che è proprio ciò che PersistentKeepalive mantiene aperto. Una porta va aperta solo sul lato che esegue il server WireGuard e deve accettare connessioni in entrata.
Da un provider che la genera per te. Un servizio HytHost VPN, da €0.99/mese, mostra nell'area clienti una sezione WireGuard Configuration con un pulsante per copiare il testo della configurazione e uno per scaricare il file già pronto. Da lì si importa nell'app WireGuard su qualsiasi dispositivo, e la stessa pagina indica se il tunnel è attualmente connesso.
Un file di configurazione che resta tuo
HytHost VPN ti dà una configurazione WireGuard da scaricare una volta e importare su qualsiasi dispositivo: Windows, Android, iPhone, macOS, Linux o il tuo router. Da €0.99/mese.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursQuesta guida ti è stata utile?