WireGuard è un moderno protocollo VPN veloce, piccolo e facile da configurare. Eseguire il tuo su un VPS ti dà un tunnel cifrato verso un server nel paese che scegli, senza alcuna società VPN di terze parti nel mezzo. Questa guida usa Ubuntu 24.04 o Debian 12/13 e presume che tu abbia già messo in sicurezza il server.
1. Installa WireGuard
sudo apt update
sudo apt install -y wireguard
2. Genera le chiavi del server
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
umask 077 fa sì che i file delle chiavi siano leggibili solo da root. Tieni privato server.key.
3. Crea le chiavi del client
Genera sul server una coppia di chiavi per il tuo laptop o telefono e copia poi la configurazione del client:
wg genkey | tee client1.key | wg pubkey > client1.pub
4. Scrivi la configurazione del server
Per prima cosa trova il nome della tua interfaccia di rete pubblica:
ip route get 1.1.1.1 | awk '{print $5; exit}'
Spesso è eth0 o ens3. Crea /etc/wireguard/wg0.conf e sostituisci i valori in maiuscolo con i tuoi:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ETH_IF -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ETH_IF -j MASQUERADE
[Peer]
# client1
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Incolla il contenuto di server.key e client1.pub dove indicato e sostituisci ETH_IF con il nome della tua interfaccia.
5. Attiva l'IP forwarding
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
6. Apri il firewall
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0
sudo ufw reload
7. Avvia il tunnel
sudo systemctl enable --now wg-quick@wg0
sudo wg show
Dovresti vedere l'interfaccia e, quando un client si connette, il suo ultimo handshake.
8. Configura il client
Sul tuo dispositivo, crea una configurazione come questa (le app ufficiali WireGuard per Windows, macOS, Linux, iOS e Android possono importarla da un file o da un codice QR):
[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT1_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Usare AllowedIPs = 0.0.0.0/0, ::/0 fa passare tutto il traffico attraverso il tunnel. Per raggiungere solo la tua rete privata, usa invece 10.8.0.0/24.
9. Provalo
- Attiva il tunnel sul client.
- Esegui
sudo wg showsul server e verifica che ci sia un handshake recente. - Visita dal client una pagina "qual è il mio IP". Dovrebbe mostrare l'indirizzo del tuo server.
- Controlla le perdite DNS se l'obiettivo è la privacy e aggiungi regole IPv6 se il tuo server ha IPv6.
Aggiungere altri dispositivi
Per ogni nuovo dispositivo, genera una coppia di chiavi, aggiungi un altro blocco [Peer] con un nuovo indirizzo come 10.8.0.3/32 ed esegui sudo wg syncconf wg0 <(wg-quick strip wg0) per applicarlo senza interrompere le connessioni esistenti.
Scegliere una sede
Un server WireGuard funziona da qualsiasi nostra località. Scegline una vicina a te per la velocità, oppure nel paese di cui vuoi l'indirizzo IP per il tuo traffico. Vedi come scegliere una località per il VPS. Un piccolo VPS è più che sufficiente per un tunnel personale.