Come configurare WireGuard su Ubuntu 24.04 per l’accesso remoto
Installa WireGuard su Ubuntu 24.04 e configura un client split tunnel con chiavi protette, inoltro IP, UFW e accesso alla LAN.
Questa guida usa Ubuntu 24.04 come gateway VPN: wg0 ha 10.20.30.1/24, il client 10.20.30.2, la LAN remota è 192.168.1.0/24 e WireGuard ascolta su UDP 51820. Negli esempi ens18 è l’interfaccia verso la LAN. Sostituisci nomi, indirizzi e DNS secondo la tua rete; la VPN richiede un endpoint pubblico raggiungibile e, se il server è dietro NAT, l’inoltro UDP 51820 sul router.
Installazione e interfaccia
Installa i pacchetti e identifica la vera interfaccia verso la LAN. Se amministri il server via SSH, prima di abilitare UFW verifica e autorizza la porta SSH effettiva; l’esempio successivo presume la porta 22.
sudo apt update
sudo apt install wireguard ufw
ip -br address
Chiavi del server
Crea le chiavi come root in /etc/wireguard, con umask 077. La vecchia procedura tentava di entrare in una directory accessibile soltanto a root tramite una shell non privilegiata. Copia sul client soltanto server.pub; non inviare server.key o configurazioni complete tramite canali pubblici.
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
sudo cat /etc/wireguard/server.pub
Inoltro IPv4
Scrivi la prima riga mostrata in /etc/sysctl.d/99-wireguard-forward.conf, quindi esegui i due comandi successivi. Il valore finale deve essere 1. L’inoltro permette il traffico verso la LAN ma non crea da solo le regole firewall né la rotta di ritorno.
net.ipv4.ip_forward=1
sudo sysctl --system
sysctl net.ipv4.ip_forward
Configurazione del server
Salva il blocco in /etc/wireguard/wg0.conf, sostituendo SERVER_PRIVATE_KEY con il contenuto di server.key e CLIENT_PUBLIC_KEY con la chiave pubblica generata sul client. Mantieni AllowedIPs = 10.20.30.2/32 sul server: ogni client deve avere una chiave e un indirizzo univoci. Non includere commenti o spazi aggiuntivi nella riga della chiave.
[Interface]
Address = 10.20.30.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.20.30.2/32
UFW e raggiungibilità della LAN
Aggiungi le regole prima di abilitare UFW. La regola route consente il traffico dal tunnel verso la LAN specifica. Gli host della LAN devono avere una rotta verso 10.20.30.0/24 tramite l’indirizzo LAN del server Ubuntu; configurala sul router. Se non puoi aggiungere la rotta, valuta un NAT verso la LAN gestito e documentato dal firewall: con NAT gli host vedono l’IP del gateway, non quello del client. Non aprire indiscriminatamente il forwarding verso Internet.
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on ens18 from 10.20.30.0/24 to 192.168.1.0/24
sudo ufw status verbose
sudo ufw enable
Chiavi del client
Su un client Linux genera la coppia in una directory privata. Trasferisci sul server soltanto client1.pub. Su smartphone usa l’app WireGuard per creare le chiavi sul dispositivo; un codice QR della configurazione contiene la chiave privata e va trattato come un segreto.
umask 077
wg genkey > client1.key
wg pubkey < client1.key > client1.pub
Profilo del client
Inserisci il blocco nell’app WireGuard del client, sostituendo chiavi ed endpoint. Le AllowedIPs indicate realizzano uno split tunnel: solo VPN e LAN remota passano nel tunnel. L’eventuale DNS della LAN va configurato soltanto se esiste e se è raggiungibile via VPN. PersistentKeepalive = 25 è utile dietro NAT, ma non è obbligatorio per ogni peer.
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.20.30.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.net:51820
AllowedIPs = 10.20.30.0/24, 192.168.1.0/24
PersistentKeepalive = 25
Avvio e verifica
Proteggi wg0.conf, avvia il servizio e controlla handshake e contatori con wg show. Dopo l’attivazione sul client prova 10.20.30.1 e poi un host autorizzato nella LAN. Se manca l’handshake controlla endpoint, UDP, port forwarding e chiavi; se c’è ma la LAN non risponde controlla IP forwarding, UFW, firewall degli host e rotta di ritorno. Un ping bloccato non esclude che il servizio applicativo sia raggiungibile.
sudo chmod 600 /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
sudo wg show
sudo ufw status numbered
Altri client e fonti
Per ogni nuovo peer usa chiave e indirizzo diversi, per esempio 10.20.30.3/32 sul server; il reload aggiorna i peer senza ricreare l’interfaccia. Modifiche a Address, PostUp o alle rotte gestite da wg-quick possono richiedere un riavvio del servizio. Guide ufficiali: https://documentation.ubuntu.com/server/how-to/wireguard-vpn/peer-to-site/index.html e https://documentation.ubuntu.com/server/how-to/wireguard-vpn/common-tasks/index.html .
sudo systemctl reload wg-quick@wg0
Share
What's Your Reaction?
Like
0
Cancella like
0
Amore
0
Buffo
0
arrabbiato
0
Sad
0
Wow
0