# WireGuard VPN: nozioni di base

WireGuard è un protocollo moderno di rete privata virtuale (VPN) che consente connessioni sicure e crittografate tra i dispositivi. Grazie a una base di codice semplice e ad alte prestazioni, si è affermato come alternativa potente e a basso consumo di risorse rispetto ai vecchi protocolli VPN come IPsec e OpenVPN. In questo articolo scoprirai cosa contraddistingue WireGuard, come funziona e come installare questa soluzione VPN sul tuo sistema.

## Che cos’è WireGuard?

WireGuard è un protocollo [VPN](https://www.ionos.it/digitalguide/server/know-how/che-cose-una-vpn-virtual-private-network/) open source utilizzato per **creare tunnel crittografati tra dispositivi**. I flussi di dati vengono instradati attraverso il tunnel e sono quindi protetti da accessi non autorizzati. Oltre a puntare su una crittografia robusta, WireGuard offre ottimizzazioni per i sistemi mobili e l’[Internet delle cose (IoT)](https://www.ionos.it/digitalguide/siti-web/diritto-informatico/internet-of-things/). Il software è concesso in licenza come software libero con la licenza GPLv2 ed è disponibile in modalità multipiattaforma. WireGuard è scritto nei linguaggi C e [Go](https://www.ionos.it/digitalguide/server/know-how/golang/) e funziona su Windows, macOS, BSD, iOS e Android.

Dal 2020 WireGuard è **integrato direttamente nel kernel Linux**. Poiché Linux viene eseguito come sistema operativo standard su miliardi di dispositivi connessi in tutto il mondo, WireGuard può essere utilizzato praticamente ovunque. Grazie alla configurazione semplice e al basso impatto sul sistema, viene utilizzato sempre più spesso da [servizi VPN](https://www.ionos.it/digitalguide/server/tools-o-strumenti/servizi-vpn/) e aziende.

## Quali funzionalità offre WireGuard?

Una caratteristica centrale di WireGuard è il cosiddetto **cryptokey routing**. In questo caso, al codice pubblico di un partner di connessione vengono associati gli intervalli di indirizzi IP consentiti all’interno di un tunnel. I pacchetti in entrata di un partner di connessione vengono decifrati grazie alla chiave pubblica. Un pacchetto in entrata, dopo la decifratura, viene consegnato solo se proviene da un [indirizzo IP](https://www.ionos.it/digitalguide/server/know-how/cose-un-indirizzo-di-ip/) corrispondente alla chiave. In caso contrario, viene scartato.

A differenza dei protocolli VPN più datati come [IPsec](https://www.ionos.it/digitalguide/server/know-how/ipsec-un-sistema-di-sicurezza-per-ipv4-e-ipv6/) e OpenVPN, WireGuard utilizza un set fisso di primitive crittografiche moderne, senza negoziazione. Mentre nei protocolli consolidati le basi crittografiche vengono definite durante l’handshake, WireGuard si affida a una **combinazione di algoritmi** fissa e con cronologia delle versioni. Se in futuro una base crittografica dovesse essere considerata insicura, verrà rilasciata una nuova versione del protocollo, che includerà una selezione di algoritmi aggiornata e sicura.

Il protocollo utilizza **algoritmi di crittografia** moderni e altamente sicuri, tra cui:

- **Noise Protocol Framework** per i processi di handshake e scambio di chiavi
- **Curve25519** per lo scambio di chiavi sicuro
- **ChaCha20** per la crittografia simmetrica
- **Poly1305** per l’autenticazione
- **BLAKE2** per una funzione veloce di hash crittografica
- **SipHash24** per la generazione di [hash](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/hashing/) crittograficamente sicuri
- **HKDF** per il processo sicuro di derivazione delle chiavi

## Quali sono i vantaggi di WireGuard?

WireGuard offre molti vantaggi, che lo rendono una scelta privilegiata per le moderne connessioni VPN. Di seguito una panoramica dei principali vantaggi:

- **Base di codice snella:** WireGuard ha una base di codice significativamente più piccola, con circa 4.000 righe di codice rispetto alle circa 100.000–600.000 di OpenVPN o IPsec. Questa riduzione rende il protocollo più sicuro, perché i bug possono essere individuati più facilmente, e meno esigente in termini di risorse, poiché richiede meno potenza di calcolo.
- **Prestazioni più elevate:** grazie alla minore complessità, WireGuard offre una velocità di trasmissione più alta e una [latenza](https://www.ionos.it/digitalguide/server/know-how/cose-la-latenza/) inferiore rispetto a molti protocolli concorrenti. Ciò lo rende particolarmente adatto ad applicazioni che richiedono una connessione rapida e stabile, come streaming, giochi online e videoconferenze.
- **Efficienza energetica:** WireGuard si attiva solo quando vengono effettivamente trasmessi dei dati. Questo risparmio energetico è particolarmente vantaggioso per i dispositivi mobili, poiché prolunga la durata della batteria.
- **Supporto del roaming:** WireGuard supporta il passaggio senza interruzioni tra Wi-Fi e reti mobili, senza che la connessione venga persa. Se la connessione dovesse comunque interrompersi, la ristabilisce di solito più rapidamente rispetto ad altri protocolli VPN.
- **Configurazione semplice:** rispetto ad altri protocolli VPN, WireGuard non richiede l’impostazione manuale di una moltitudine di opzioni crittografiche. Utilizza una configurazione predefinita, accessibile sia agli utenti esperti sia a chi è agli inizi.

## Come funziona WireGuard?

WireGuard è un protocollo VPN [peer-to-peer](https://www.ionos.it/digitalguide/server/know-how/cose-il-p2p-peer-to-peer/) decentralizzato che **non richiede alcun server centrale**. Al contrario, è possibile creare direttamente un tunnel tra due dispositivi (“peer”). Un “server WireGuard” in questo caso è semplicemente un dispositivo che contiene i dati di configurazione per più peer.

La creazione della connessione funziona in modo simile a [Secure Shell](https://www.ionos.it/digitalguide/server/tools-o-strumenti/ssh/) (SSH): i peer generano coppie di chiavi pubbliche e private, le scambiano e le utilizzano per l’autenticazione e la crittografia dei dati trasmessi. La crittografia si basa su metodi crittografici moderni che garantiscono un livello di sicurezza elevato.

Oltre alla creazione delle chiavi crittografiche, sui peer devono essere configurate **impostazioni di rete e di routing** (vedi la nostra guida più avanti). Questo include la configurazione degli intervalli di indirizzi IP consentiti, che vengono associati alle chiavi pubbliche. Solo i pacchetti provenienti da questi indirizzi IP vengono accettati.

L’invio dei dati avviene tramite lo [User Datagram Protocol](https://www.ionos.it/digitalguide/server/know-how/udp-user-datagram-protocol/) (UDP), che è preferito per la sua velocità ed efficienza. Non richiede un’ampia correzione degli errori come il [Transmission Control Protocol](https://www.ionos.it/digitalguide/server/know-how/presentazione-tcp/) (TCP), il che consente una trasmissione più rapida.

La configurazione avviene di norma tramite lo **strumento da riga di comando di WireGuard** e i comuni strumenti di rete. Per gli utenti meno esperti, i servizi VPN commerciali offrono app intuitive che consentono una configurazione semplificata.

## Primi passi con WireGuard

In linea di massima, WireGuard può essere installato e configurato su un sistema Linux senza grandi sforzi. Sulle **versioni più recenti di Ubuntu (a partire dalla 20.04 LTS)** il protocollo VPN è già integrato come modulo del kernel, quindi non è necessaria l’installazione aggiuntiva di [repository](https://www.ionos.it/digitalguide/server/know-how/repository/) Personal Package Archive (PPA). Esegui semplicemente il seguente comando:

```bash
sudo apt install wireguard
```

## Installare WireGuard sul proprio sistema

L’installazione di WireGuard sul tuo sistema è semplice e può essere eseguita con pochi comandi.

**Per Ubuntu 20.04 LTS o versioni successive:**

WireGuard è già integrato come modulo del kernel, quindi non sono necessari repository PPA aggiuntivi. Esegui semplicemente il seguente comando:

```bash
sudo apt update
sudo apt install wireguard
```

**Per le versioni precedenti di Ubuntu:**

Qui devi aggiungere il PPA di WireGuard per poter effettuare l’installazione:

```bash
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard
```

### Generare le chiavi WireGuard

Come molti altri moderni protocolli VPN, anche WireGuard si basa sull’uso di chiavi crittografiche per stabilire connessioni sicure tra peer. Ogni peer ha bisogno di **una coppia di chiavi, una privata e una pubblica**. La chiave privata resta sempre segreta, mentre la chiave pubblica viene condivisa con gli altri peer.

Esegui i seguenti comandi sulla riga di comando per generare **una chiave privata e una chiave pubblica WireGuard**:

```bash
# Creare la directory per le chiavi e impostare i permessi
sudo mkdir -p /etc/wireguard/keys
sudo chmod 700 /etc/wireguard/keys
cd /etc/wireguard/keys
# Impostare umask in modo che solo l’utente root possa leggere/scrivere
umask 077
# Generare la chiave privata e salvarla in un file
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
# Verificare l’output delle chiavi generate
sudo cat privatekey
sudo cat publickey
```

N.B. Le chiavi devono essere generate e archiviate in un ambiente sicuro. I comandi sopra indicati sono adatti a scopi di test. In un ambiente di produzione è necessario adottare ulteriori misure di sicurezza, come l’uso di directory sicure e controlli di accesso.

### Configurare le impostazioni di rete per WireGuard

Dopo aver generato le chiavi crittografiche, su ogni peer è necessario configurare **impostazioni di rete e di routing** specifiche. Questa configurazione è fondamentale per consentire la comunicazione sicura tra i peer.

In sostanza viene creato un file di configurazione che contiene, tra le altre cose, le seguenti informazioni:

- **Chiavi private e pubbliche** dei peer
- **Indirizzi IP consentiti** (gli intervalli di IP con cui il peer è autorizzato a comunicare)
- **Indirizzi dei peer**, associati alle rispettive chiavi pubbliche

Un esempio della configurazione di base di una connessione WireGuard potrebbe essere il seguente:

```txt
[Interface]
# IP VPN interna del server
Address = 10.0.0.1/24
# Chiave privata (del server)
PrivateKey = <SERVER_PRIVATE_KEY>
# Porta UDP su cui WireGuard accetta le connessioni
ListenPort = 51820
# Client peer
[Peer]
# Chiave pubblica del client
PublicKey = <CLIENT_PUBLIC_KEY>
# IP VPN interna assegnata al client
AllowedIPs = 10.0.0.2/32
```

### Testare la connessione e attivare WireGuard

Dopo aver installato e configurato WireGuard sul tuo sistema, è il momento di testare la connessione e attivare l’interfaccia di rete. Puoi farlo da riga di comando eseguendo i seguenti comandi:

**1. Attivare l’interfaccia di rete**

Per prima cosa devi attivare l’interfaccia WireGuard che hai appena configurato:

```bash
sudo systemctl enable --now wg-quick@wg0
```

Questo comando attiva l’interfaccia WireGuard (`wg0`) che hai creato in precedenza. Se il comando viene eseguito correttamente, la connessione dovrebbe essere pronta per inviare dati.

**2. Testare la connessione**

Per verificare che la connessione funzioni, puoi usare il **comando ping** per controllare se il dispositivo remoto è raggiungibile. Esempio:

```bash
ping 192.168.1.2
```

Sostituisci l’indirizzo IP con quello del peer remoto a cui sei connesso. Se il ping ha esito positivo, significa che la connessione VPN funziona.

**3. Risoluzione dei problemi**

Se la connessione non funziona come previsto, verifica i seguenti punti:

- Assicurati che gli indirizzi IP siano configurati correttamente.
- Verifica che le chiavi pubbliche e private siano state scambiate correttamente tra loro.
- Assicurati che il [firewall](https://www.ionos.it/digitalguide/server/sicurezza/cose-un-firewall/) su entrambi i dispositivi sia configurato in modo da consentire il traffico WireGuard (di norma sulla porta 51820).

Se i problemi persistono, puoi anche **riavviare il servizio WireGuard**:

```bash
sudo systemctl restart wg-quick@wg0
```


This is a markdown version of: [https://www.ionos.it/digitalguide/server/tools-o-strumenti/wireguard-vpn-informazioni-di-base/](https://www.ionos.it/digitalguide/server/tools-o-strumenti/wireguard-vpn-informazioni-di-base/) for AI/LLM consumption.