Configurazione di WireGuard per Windows | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Configurazione di WireGuard per Windows

Questa guida spiega come configurare un tunnel VPN WireGuard tra due macchine Windows: un server WireGuard in esecuzione su un host Windows remoto, per esempio un VPS Windows, e un client WireGuard in esecuzione sul vostro computer Windows locale. Una volta che il tunnel è attivo, le due macchine si scambiano dati tramite una connessione privata cifrata ed è possibile, facoltativamente, instradare tutto il traffico del client attraverso il server.

Per semplificare la generazione delle chiavi, questa guida crea sia la configurazione del server sia quella del client all'interno di un'unica applicazione WireGuard, per poi distribuire ciascun file di configurazione alla macchina a cui appartiene. La configurazione del server viene eseguita sul server e quella del client sul client. Server e client sono sempre macchine distinte. Lo stesso procedimento si utilizza per aggiungere un numero qualsiasi di client aggiuntivi.

Prima di iniziare, installate l'ultima versione di WireGuard dalla pagina di installazione ufficiale (https://www.wireguard.com/install/) sia sul server sia sul client, e assicuratevi di disporre dei diritti di amministratore su ciascuna macchina.

La configurazione di questa guida è la seguente:

Server (public IP, listening on UDP 51820) Tunnel address 10.0.0.1/24 | | encrypted WireGuard tunnel | Client Tunnel address 10.0.0.2/32

Creazione della configurazione del server

Eseguite C:\Program Files\WireGuard\wireguard.exe, fate clic su Add tunnel e scegliete Add empty tunnel. WireGuard genera automaticamente una coppia di chiavi. La chiave pubblica mostrata nella parte superiore della finestra è la chiave pubblica del server. Vi servirà più avanti, durante la configurazione del client.

Assegnate un nome al tunnel e compilate la sezione interface con la chiave privata del server, la porta su cui WireGuard resterà in ascolto e l'indirizzo interno che il server utilizzerà all'interno del tunnel.

[Interface] PrivateKey = # private key of the WireGuard server ListenPort = # port that WireGuard will listen on Address = # internal IP address of the WireGuard server, for example 10.0.0.1/24

Utilizzate una sottorete privata per la rete del tunnel e mantenete il server e tutti i client nello stesso intervallo. Una scelta comune è 10.0.0.1/24 per il server e 10.0.0.2/32, 10.0.0.3/32 e così via per ciascun client. Il server utilizza un prefisso /24, quindi considera l'intero intervallo del tunnel come raggiungibile attraverso l'interfaccia WireGuard. Ogni client utilizza /32, perché un client rappresenta un singolo indirizzo e non una sottorete. Un client impostato su /24 presumerebbe che l'intero intervallo si trovi sulla propria interfaccia e non invierebbe attraverso il tunnel il traffico destinato ad altri indirizzi del tunnel.

Nell'editor del tunnel, sotto il campo di configurazione, potete attivare facoltativamente Block untunneled traffic (kill-switch), che blocca qualsiasi traffico che uscirebbe al di fuori del tunnel, e impostare una Pre-shared key, che aggiunge un ulteriore livello di sicurezza. Entrambe le opzioni sono facoltative. Consultate la sezione "Comprendere AllowedIPs" per sapere quando il kill-switch è utile e che cosa blocca.

Creazione della configurazione del client

Fate clic su Add tunnel e scegliete Add empty tunnel una seconda volta, questa volta per il client. La chiave pubblica mostrata per questo tunnel è la chiave pubblica del client, di cui il server ha bisogno per accettare il client.

Compilate la configurazione del client:

[Interface] PrivateKey = # private key of the WireGuard client Address = # internal IP address of the WireGuard client, for example 10.0.0.2/32 DNS = 1.1.1.1, 1.0.0.1 [Peer] PublicKey = # public key of the WireGuard server AllowedIPs = # 0.0.0.0/0 for a full tunnel, or 10.0.0.0/24 for a split tunnel Endpoint = # public IP address and port of the WireGuard server PersistentKeepalive = 25

L'Endpoint deve essere l'indirizzo IP pubblico reale del server insieme alla porta impostata nel ListenPort del server, non l'indirizzo interno del tunnel. Per aiuto nella scelta del valore di AllowedIPs, consultate la sezione "Comprendere AllowedIPs" più avanti.

Le righe DNS e PersistentKeepalive sono facoltative. DNS imposta i server DNS utilizzati mentre il tunnel è attivo, evitando problemi di risoluzione dei nomi dopo la connessione. Potete utilizzare resolver pubblici come 1.1.1.1, 1.0.0.1 oppure 8.8.8.8, 8.8.4.4, o il server DNS della rete VPN stessa. PersistentKeepalive = 25 invia un piccolo pacchetto ogni 25 secondi e aiuta a mantenere aperta la connessione quando il client si trova dietro NAT.

Copiate le chiavi e l'Endpoint con molta attenzione. Una chiave digitata male o un Endpoint errato sono la causa più comune del mancato collegamento di un tunnel.

Aggiunta del client al server

Aprite di nuovo la configurazione del server e aggiungete una sezione [Peer] per il client, utilizzando la chiave pubblica del client del passaggio precedente.

[Peer] PublicKey = # public key of the WireGuard client AllowedIPs = # internal IP address of the client

Nella configurazione del server, AllowedIPs ha due funzioni. Indica al server quale indirizzo del tunnel appartiene a questo client e funge da elenco di instradamento: qualsiasi pacchetto indirizzato a tali intervalli viene cifrato e inviato a questo peer. Per un singolo client si tratta del suo indirizzo del tunnel, per esempio 10.0.0.2/32. Se il client deve rendere raggiungibile attraverso il tunnel anche una rete locale, aggiungete qui anche quella sottorete, per esempio 10.0.0.2/32, 192.168.1.0/24. Ripetete questo passaggio per ogni client aggiuntivo.

Configurazione del Firewall di Windows sul server

Il server deve accettare il traffico WireGuard in entrata sulla sua porta UDP. Aprite Windows Defender Firewall con sicurezza avanzata, selezionate Regole connessioni in entrata e fate clic su Nuova regola. Scegliete Porta e fate clic su Avanti. Selezionate UDP, immettete la porta di WireGuard, per esempio 51820, e fate clic su Avanti. Se utilizzate più di una porta, elencatele separate da virgole, per esempio 51820, 51821. Selezionate Consenti la connessione e fate clic su Avanti. Selezionate i profili a cui si applica la regola. Se il server è ospitato in un data center, di solito è sufficiente il profilo Pubblico; in caso contrario, lasciate selezionati i profili Dominio, Privato e Pubblico. Fate clic su Avanti, assegnate alla regola un nome chiaro come WireGuard UDP 51820 e fate clic su Fine.

Questa regola in entrata è necessaria solo sul server, perché il server è il lato che riceve le connessioni in entrata. Su un VPS, assicuratevi inoltre che il vostro provider di hosting consenta il traffico UDP in entrata su questa porta a livello di rete, non solo nel Firewall di Windows.

Esportazione e distribuzione delle configurazioni

Quando entrambe le configurazioni sono pronte, fate clic su Export all tunnels to zip, scegliete una posizione e salvate.

Aprite l'archivio per trovare i file di configurazione di tutti i tunnel. Collocate la configurazione del server sul server e fornite a ciascun client il proprio file di configurazione. Se la macchina contiene molti tunnel, potete anche esportare un singolo tunnel dal suo menu contestuale. L'esportazione in un file zip è comoda quando entrambi i tunnel sono stati creati sulla stessa macchina, come in questa guida. Se create ciascuna configurazione direttamente sul proprio host, l'esportazione non è necessaria e potete copiare il file di configurazione manualmente.

Sul server, selezionate la configurazione del server e fate clic su Attiva.

Sul client, fate clic su Add Tunnel, selezionate il file di configurazione del client e apritelo.

Quindi fate clic su Attiva.

Il primo client è ora configurato. Aggiungete ulteriori client nello stesso modo: create un nuovo tunnel vuoto per ciascun client e aggiungete alla configurazione del server una sezione [Peer] corrispondente con la chiave pubblica e l'indirizzo del tunnel di quel client, come descritto in "Aggiunta del client al server".

Warning: Se configurate WireGuard su un server remoto tramite una sessione RDP, leggete la sezione "Comprendere AllowedIPs" prima di attivare un tunnel che instrada tutto il traffico. Una configurazione con AllowedIPs = 0.0.0.0/0 può reindirizzare il traffico stesso del server nel tunnel e interrompere la vostra connessione RDP.

Verifica della connessione

Dopo aver attivato il tunnel, Windows potrebbe mostrare l'adattatore WireGuard come "Nessun accesso alla rete" o "Nessun accesso a Internet" nel Centro connessioni di rete e condivisione. Questo è un comportamento previsto, perché Windows non tratta gli adattatori dei tunnel VPN come connessioni Internet standard, e non influisce sul tunnel. Windows determina questo stato tramite il suo controllo di connettività, che interroga determinati URL Microsoft, quindi l'avviso può comparire anche se tali interrogazioni sono bloccate o non vengono risolte dal vostro DNS, anche quando il tunnel funziona.

Per confermare che il tunnel funziona, controllate il suo stato nel client WireGuard. Un tunnel attivo mostra lo stato Attivo insieme ai contatori di trasferimento dati. Se i contatori aumentano, il tunnel sta trasmettendo traffico.

Sul server potete inoltre confermare che WireGuard è in ascolto sulla sua porta UDP mentre il tunnel è attivo:

netstat -ano | findstr 51820

In PowerShell l'equivalente è:

Get-NetUDPEndpoint -LocalPort 51820

Sostituite 51820 con la vostra porta di WireGuard. Se non viene restituito nulla, il tunnel non è attivo oppure la porta differisce da quella impostata nella configurazione del server.

Aprite quindi il Prompt dei comandi ed eseguite il ping dell'indirizzo interno del tunnel del server:

ping 10.0.0.1

Sostituite 10.0.0.1 con l'IP interno reale che avete impostato per il server. Le risposte confermano che il tunnel funziona.

Se il client utilizza AllowedIPs = 0.0.0.0/0, potete anche confermare che il traffico viene instradato attraverso il tunnel:

tracert 8.8.8.8

Il primo hop dovrebbe essere l'indirizzo IP interno del server WireGuard.

Controllo dell'handshake di WireGuard

L'handshake è l'indicatore più utile nella diagnosi di una connessione WireGuard. Nell'applicazione WireGuard, aprite il tunnel e osservate il campo Latest handshake. Su un tunnel funzionante l'handshake compare entro pochi secondi dall'attivazione e poi si aggiorna periodicamente durante il trasferimento dei dati. Se il tunnel è inattivo, tra un handshake e l'altro può trascorrere del tempo, quindi una breve pausa è normale. Se il campo rimane vuoto, i peer non riescono a raggiungersi, il che di solito indica un Endpoint errato, una porta UDP chiusa o chiavi non corrispondenti.

Potete controllare l'handshake anche dalla riga di comando con lo strumento wg fornito con WireGuard:

wg show

L'output elenca ogni peer insieme all'ora del suo ultimo handshake e ai suoi contatori di trasferimento.

Comprendere AllowedIPs

Il valore di AllowedIPs nella configurazione del client decide quale traffico viene inviato attraverso il tunnel. In breve, sul client AllowedIPs stabilisce quali pacchetti vengono inviati nel tunnel, mentre sul server stabilisce quali pacchetti vengono accettati da un determinato client e dove vengono instradati.

AllowedIPs = 0.0.0.0/0 instrada tutto il traffico attraverso il tunnel, compresa la normale navigazione in Internet. Utilizzatelo quando desiderate una protezione totale del traffico. Affinché questo traffico raggiunga Internet, il server deve tradurlo. Consultate "Configurazione del NAT sul server per il tunneling completo" più avanti.

AllowedIPs = 10.0.0.0/24 instrada solo il traffico della rete interna attraverso il tunnel, mentre il normale traffico Internet continua a utilizzare la connessione abituale. Utilizzatelo quando dovete raggiungere solo risorse specifiche della rete remota.

Potete elencare più sottoreti separate da virgole, per esempio AllowedIPs = 10.0.0.0/24, 192.168.1.0/24.

Tip: L'opzione Block untunneled traffic (kill-switch) nell'editor del tunnel ha pieno effetto con AllowedIPs = 0.0.0.0/0. Blocca tutto ciò che circolerebbe al di fuori del tunnel, il che blocca anche la rete locale. Se avete bisogno di accedere a stampanti o ad altri dispositivi della LAN, lasciate il kill-switch disattivato.
Warning: Impostare AllowedIPs = 0.0.0.0/0 invia ogni connessione attraverso il tunnel. Se lo applicate su un server remoto che gestite tramite RDP, la sessione RDP può interrompersi nel momento in cui il tunnel si attiva, perché il traffico del server viene reindirizzato. Su un server raggiunto tramite RDP, instradate solo le sottoreti necessarie e fate prove con un valore di AllowedIPs ristretto prima di passare a 0.0.0.0/0.

Configurazione del NAT sul server per il tunneling completo

Se i client utilizzano AllowedIPs = 0.0.0.0/0 e desiderate che il loro traffico raggiunga effettivamente Internet attraverso il server, il server deve tradurre gli indirizzi WireGuard interni nel proprio indirizzo esterno. Su Windows questo si fa con il comando New-NetNat, non con gli script PostUp e PostDown utilizzati su Linux.

Aprite PowerShell come amministratore sul server ed eseguite quanto segue, utilizzando la sottorete del tunnel assegnata al server:

New-NetNat -Name WireGuardNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/24

Sostituite 10.0.0.0/24 con la vostra sottorete del tunnel e assicuratevi che il prefisso copra ogni indirizzo client assegnato. Un client al di fuori di questo intervallo, per esempio 10.0.1.2, non verrebbe interessato da questa regola. Potete rivedere le regole attive in qualsiasi momento:

Get-NetNat

Per rimuovere la regola NAT in seguito, eseguite:

Remove-NetNat -Name WireGuardNAT

Se i client si connettono e l'handshake va a buon fine, ma il loro traffico Internet continua a non passare attraverso il server, abilitate l'inoltro IP sulle interfacce coinvolte nell'instradamento e riprovate. La forma esatta dipende dalla versione di Windows, per esempio:

Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled

Applicatelo all'interfaccia esterna che trasporta il traffico Internet e all'interfaccia WireGuard, utilizzando i loro nomi reali ottenuti con Get-NetIPInterface.

Info: New-NetNat richiede Windows 10, Windows 11 o Windows Server 2016 e versioni successive e, su alcuni sistemi, richiede l'abilitazione della funzionalità Hyper-V anche se non utilizzate Hyper-V per altro. Su alcuni piani VPS Hyper-V non può essere abilitato, il che blocca questo metodo. Se New-NetNat da solo sia sufficiente o se debba essere abilitato anche l'inoltro IP può dipendere dalla versione di Windows, quindi verificatelo sul vostro server quando il tunneling completo non funziona.

Risoluzione dei problemi

Il tunnel è attivo ma non c'è connessione al server. Verificate che la porta UDP di WireGuard, per esempio 51820, sia aperta nel firewall sul server. Confermate che le chiavi pubbliche siano state copiate correttamente tra la configurazione del server e quella del client. Assicuratevi che l'Endpoint nella configurazione del client punti all'indirizzo IP pubblico reale del server, non all'indirizzo interno del tunnel.

Il DNS non funziona dopo la connessione. Aggiungete un server DNS alla sezione interface del client:

[Interface] PrivateKey = ... Address = ... DNS = 1.1.1.1, 1.0.0.1

I contatori dei pacchetti non aumentano. Il tunnel non sta trasmettendo dati. Verificate che AllowedIPs sia impostato correttamente su entrambi i lati, che gli indirizzi WireGuard interni non siano in conflitto con la rete locale esistente e che il ListenPort non sia già utilizzato da un'altra applicazione.

Servono maggiori dettagli per diagnosticare un problema. Aprite il tunnel nell'applicazione WireGuard e consultate la scheda Log, che registra handshake, errori ed eventi di connessione man mano che si verificano. Da lì potete esportare il registro se dovete condividerlo.

Avvio automatico di WireGuard dopo il riavvio del server

Per mantenere il tunnel in funzione dopo i riavvii, installatelo come servizio di Windows. Quando un tunnel è installato come servizio, si avvia automaticamente dopo un riavvio. Aprite il Prompt dei comandi o PowerShell come amministratore ed eseguite quanto segue, utilizzando il percorso del vostro file di configurazione del server:

wireguard /installtunnelservice "C:\Program Files\WireGuard\wg_server.conf"

Dopo l'installazione, il tunnel compare nell'elenco dei Servizi di Windows come WireGuard Manager, con stato In esecuzione e tipo di avvio Automatico, a conferma che si avvierà da solo dopo un riavvio.

Eseguite questo comando una sola volta, non a ogni avvio. L'attivazione del tunnel dall'applicazione WireGuard di norma installa lo stesso servizio, quindi in molti casi è sufficiente attivarlo una volta. Per rimuovere il servizio in seguito, utilizzate il nome del tunnel, che corrisponde al nome del file di configurazione senza l'estensione .conf:

wireguard /uninstalltunnelservice wg_server

Per riavviare il servizio, per esempio dopo aver modificato la configurazione, eseguite il comando di disinstallazione seguito di nuovo dal comando di installazione.

Info: Poiché il tunnel viene eseguito come servizio, non è necessaria un'attività separata nell'Utilità di pianificazione.

Riavviate il server e confermate che il tunnel si avvia da solo.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA