Come configurare WireGuard su Ubuntu 24.04 con accesso remoto sicuro

Guida pratica per installare e configurare un server WireGuard su Ubuntu 24.04, collegare un client remoto e limitare l’accesso alla rete privata.

Come configurare WireGuard su Ubuntu 24.04 con accesso remoto sicuro

WireGuard permette di creare una VPN moderna e leggera con cui raggiungere in sicurezza server e dispositivi della propria rete da un computer o uno smartphone remoto. In questa guida configureremo Ubuntu 24.04 come gateway VPN e assegneremo al primo client l’indirizzo 10.20.30.2.

L’esempio usa la porta UDP 51820, la rete VPN 10.20.30.0/24 e una rete privata di esempio 192.168.1.0/24. Prima di copiare i comandi, sostituisci interfacce, indirizzi e rete LAN con quelli del tuo ambiente.

Schema della configurazione

  • Server Ubuntu: 10.20.30.1/24 sulla VPN
  • Primo client: 10.20.30.2/32
  • Porta WireGuard: 51820/UDP
  • Rete privata raggiungibile: 192.168.1.0/24
  • Interfaccia del server verso la LAN o Internet: ens18

1. Aggiornare Ubuntu e installare WireGuard

sudo apt update
sudo apt upgrade
sudo apt install wireguard

Controlla il nome dell’interfaccia di rete del server:

ip -br address

Negli esempi successivi useremo ens18. Su altri sistemi potresti trovare nomi come eth0, enp1s0 o ens3.

2. Generare le chiavi del server

WireGuard usa una coppia di chiavi per ogni peer. Impostiamo una maschera restrittiva prima di crearle:

sudo install -d -m 700 /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | sudo tee server-private.key | wg pubkey | sudo tee server-public.key

Visualizza la chiave pubblica, che dovrà essere copiata nella configurazione del client:

sudo cat /etc/wireguard/server-public.key

Non condividere mai la chiave privata. La chiave pubblica, invece, serve proprio per identificare il peer.

3. Abilitare l’inoltro IPv4

Il server deve poter inoltrare i pacchetti tra l’interfaccia WireGuard e la rete di destinazione:

sudo nano /etc/sysctl.d/99-wireguard-forward.conf

Inserisci:

net.ipv4.ip_forward=1

Applica la modifica senza riavviare:

sudo sysctl --system
sysctl net.ipv4.ip_forward

Il secondo comando deve restituire il valore 1.

4. Creare la configurazione del server

Recupera la chiave privata:

sudo cat /etc/wireguard/server-private.key

Crea quindi il file dell’interfaccia:

sudo nano /etc/wireguard/wg0.conf

Configura la sezione iniziale sostituendo il segnaposto con la chiave privata reale:

[Interface]
Address = 10.20.30.1/24
ListenPort = 51820
PrivateKey = CHIAVE_PRIVATA_SERVER
PostUp = iptables -t nat -A POSTROUTING -s 10.20.30.0/24 -o ens18 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.20.30.0/24 -o ens18 -j MASQUERADE

Proteggi il file:

sudo chmod 600 /etc/wireguard/wg0.conf
sudo chown root:root /etc/wireguard/wg0.conf

Il NAT è utile quando la rete LAN non possiede una rotta di ritorno verso 10.20.30.0/24. In una rete amministrata è preferibile aggiungere quella rotta sul router e rimuovere le righe PostUp e PostDown, così gli host vedranno l’indirizzo VPN reale del client.

5. Aprire la porta e autorizzare l’inoltro con UFW

Se utilizzi UFW, consenti la porta UDP di WireGuard, il traffico inoltrato dalla VPN alla LAN e assicurati che SSH rimanga raggiungibile prima di attivare il firewall:

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 to 192.168.1.0/24
sudo ufw enable
sudo ufw status verbose

Questa regola di routing è limitata alla sola LAN indicata. Se non usi UFW, crea l’equivalente nel firewall effettivamente installato. Se il server si trova dietro un router NAT, configura anche l’inoltro della porta 51820/UDP dal router all’indirizzo LAN del server Ubuntu.

6. Generare le chiavi del client

Le chiavi possono essere generate sul client, evitando che la chiave privata lasci il dispositivo. Su un client Linux:

umask 077
wg genkey | tee client1-private.key | wg pubkey > client1-public.key

Copia soltanto il contenuto di client1-public.key sul server.

7. Aggiungere il client al server

Alla fine di /etc/wireguard/wg0.conf aggiungi:

[Peer]
# Client 1
PublicKey = CHIAVE_PUBBLICA_CLIENT
AllowedIPs = 10.20.30.2/32

L’indirizzo /32 identifica un solo peer e impedisce sovrapposizioni con gli indirizzi assegnati agli altri client.

8. Creare la configurazione del client

Nel client crea un tunnel con questa configurazione:

[Interface]
PrivateKey = CHIAVE_PRIVATA_CLIENT
Address = 10.20.30.2/24
DNS = 192.168.1.1

[Peer]
PublicKey = CHIAVE_PUBBLICA_SERVER
Endpoint = vpn.esempio.it:51820
AllowedIPs = 10.20.30.0/24, 192.168.1.0/24
PersistentKeepalive = 25

Con queste AllowedIPs solo il traffico diretto alla VPN e alla LAN remota attraversa il tunnel: è una configurazione split tunnel. Se vuoi instradare anche la navigazione Internet attraverso Ubuntu, usa AllowedIPs = 0.0.0.0/0; occorrono però regole firewall e DNS coerenti con il full tunnel.

PersistentKeepalive = 25 è utile per un client dietro NAT o firewall perché mantiene attiva la mappatura. Se il collegamento funziona stabilmente senza questa opzione, puoi ometterla.

9. Avviare WireGuard automaticamente

Abilita e avvia l’interfaccia:

sudo systemctl enable --now wg-quick@wg0

Controlla servizio e tunnel:

sudo systemctl status wg-quick@wg0
sudo wg show
sudo ss -lunp | grep 51820

10. Verificare il collegamento

Attiva il tunnel sul client e prova nell’ordine:

ping 10.20.30.1
ping 192.168.1.1
ssh utente@192.168.1.10

Sul server, sudo wg show deve indicare un latest handshake recente e contatori di traffico crescenti. Se l’handshake manca, controlla porta UDP, port forwarding, endpoint e chiavi. Se l’handshake è presente ma la LAN non risponde, verifica inoltro IP, firewall, NAT e rotta di ritorno.

Come aggiungere altri client

Ogni dispositivo deve avere una coppia di chiavi distinta e un indirizzo univoco. Per esempio, il secondo client potrà usare 10.20.30.3. Dopo aver aggiunto il nuovo blocco [Peer], puoi ricaricare la configurazione:

sudo systemctl reload wg-quick@wg0

Una modifica alle opzioni gestite da wg-quick, come Address o PostUp, richiede invece un riavvio completo del servizio.

Raccomandazioni di sicurezza

  • Usa una coppia di chiavi diversa per ogni dispositivo.
  • Proteggi configurazioni e chiavi private con permessi restrittivi.
  • Assegna a ogni peer soltanto le reti realmente necessarie.
  • Revoca immediatamente il peer di un dispositivo perso o dismesso.
  • Mantieni Ubuntu aggiornato e limita i servizi esposti sulla VPN.
  • Non pubblicare configurazioni complete o codici QR: contengono chiavi private.

Fonti ufficiali

Share

What's Your Reaction?

Like Like 0
Cancella like Cancella like 0
Amore Amore 0
Buffo Buffo 0
arrabbiato arrabbiato 0
Sad Sad 0
Wow Wow 0