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.
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/24sulla 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
0
Cancella like
0
Amore
0
Buffo
0
arrabbiato
0
Sad
0
Wow
0