WireGuard VPN su server self-hosted
WireGuard e la VPN moderna che ha rivoluzionato il settore: codice minimo (meno di 4000 righe), performance superiori a OpenVPN, integrazione kernel Linux nativa, configurazione dichiarativa. Self-hostare WireGuard offre privacy, controllo completo e accesso sicuro a risorse interne.
Concetti chiave
WireGuard si basa su coppie di chiavi pubblica/privata: ogni peer (server o client) ha la propria. Le connessioni avvengono via UDP (default porta 51820) usando crittografia ChaCha20, autenticazione Poly1305 e key exchange Curve25519. Non ci sono concetti di "client" e "server": tutti i peer sono pari, anche se in pratica uno funge da hub.
Installazione
Su Debian/Ubuntu moderni: apt install wireguard. Genera la coppia: wg genkey | tee privatekey | wg pubkey > publickey. Il file di configurazione e /etc/wireguard/wg0.conf. Il servizio si gestisce con systemctl start wg-quick@wg0.
Configurazione server
Nel blocco [Interface] definisci PrivateKey, Address (subnet VPN, es. 10.0.0.1/24), ListenPort 51820. Aggiungi PostUp e PostDown per regole NAT e forwarding: iptables -A FORWARD -i wg0 -j ACCEPT, iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Abilita IP forwarding con sysctl -w net.ipv4.ip_forward=1 e persisti in /etc/sysctl.d/.
Procedura passo-passo
- Installa WireGuard sul server e generale chiavi.
- Crea wg0.conf con Interface e ListenPort.
- Abilita IP forwarding nel kernel.
- Avvia il servizio:
systemctl enable --now wg-quick@wg0. - Apri la porta 51820/UDP nel firewall.
- Per ogni client genera chiavi e aggiungi un blocco [Peer] sul server.
- Crea il file di configurazione client con peer server e AllowedIPs.
- Distribuisci la config (no QR code per app mobile).
- Testa la connessione:
wg show,pingverso risorse interne. - Configura un monitoring del tunnel e una procedura di revoca chiavi.
Configurazione client
Il file client ha [Interface] con PrivateKey e Address (es. 10.0.0.2/32), DNS opzionale (per resolver interno), e [Peer] con PublicKey del server, Endpoint pubblico, AllowedIPs (0.0.0.0/0 per tutto il traffico, oppure solo subnet interne per split tunnel).
Errori comuni e come risolverli
- IP forwarding disabilitato: i peer si connettono ma non instradano; abilita con sysctl.
- NAT MASQUERADE mancante: i peer non escono in Internet; aggiungi regola iptables.
- AllowedIPs sbagliato: subnet incoerenti causano routing che non funziona.
- Chiavi private non protette: file con permessi 600 e di un'utente dedicato.
Domande frequenti
D: WireGuard e più sicuro di OpenVPN?
R: Codice ridotto significa meno bug; crypto moderno e default sicuri lo rendono molto solido.
D: Posso usare WireGuard su Windows e mobile?
R: Si, esistono client ufficiali per Windows, macOS, iOS, Android.
D: WireGuard supporta autenticazione utenti?
R: No nativamente; richiede gestione chiavi o overlay come Tailscale/NetBird.
Approfondimento tecnico: NAT traversal e roaming
WireGuard usa UDP, il che pone sfide di NAT traversal. Per peer dietro NAT simmetrico la connessione richiede che entrambi escano e il NAT rimappi la stessa porta sorgente; la direttiva PersistentKeepalive = 25 invia un pacchetto vuoto ogni 25 secondi per tenere aperta la sessione NAT. Per scenari più complessi (CGNAT, NAT simmetrici) servono soluzioni come STUN/TURN; overlay come Tailscale o Netbird automatizzano il problema.
WireGuard supporta nativamente roaming: se l'indirizzo IP esterno di un peer cambia (cambio rete WiFi, 4G a casa), il server aggiorna automaticamente l'endpoint quando arriva un pacchetto autenticato dal nuovo indirizzo. Comodo per laptop in mobilita.
Scenari d'uso reali
Un team remoto di 30 persone usa WireGuard self-hosted per accedere a risorse interne: setup in un weekend, costo VPS 10 euro/mese.
Un amministratore di sistema usa WireGuard come kill switch: tutto il traffico passa via VPN aziendale anche da reti pubbliche.
Una azienda con 5 sedi collega router OpenWrt via WireGuard mesh, sostituendo costosi MPLS.
Checklist operativa WireGuard
- Chiavi private con permessi 600 e ownership corretto.
- PersistentKeepalive per peer dietro NAT.
- IP forwarding abilitato e persistito.
- Regole NAT/iptables coerenti.
- Monitoring del tunnel con wg show.
- Procedura di revoca chiavi documentata.
- Backup della configurazione e degli AllowedIPs.
Risorse e riferimenti
wireguard.com/quickstart, kernel.org per integrazione kernel. Overlay basati su WireGuard: Tailscale, Netbird, Headscale (Tailscale self-hosted). Per Windows: WireGuard for Windows ufficiale. Per troubleshooting: wg show, tcpdump, journalctl.
Considerazioni economiche e organizzative
Implementare correttamente quanto descritto in questo articolo su wireguard vpn su server self-hosted richiede tempo, formazione e talvolta investimenti hardware o software. La buona notizia e che il ritorno e quasi sempre positivo: meno incidenti, meno tempo speso in troubleshooting reattivo, maggiore predicibilita dei servizi. Stima sempre il costo del downtime per il tuo business: anche poche ore l'anno di indisponibilita possono giustificare investimenti che a prima vista sembrano sovradimensionati.
Sul piano organizzativo, la documentazione e il fattore decisivo. Un sistema brillantemente configurato ma non documentato e una bomba a orologeria: il giorno in cui il sysadmin originale lascia l'azienda, ogni intervento diventa archeologia. Mantieni runbook aggiornati, versionali in git, fai pratica di lettura nei momenti di calma e non solo durante gli incidenti.
Glossario rapido dei termini chiave
RTO (Recovery Time Objective): tempo massimo entro cui un servizio deve tornare operativo dopo un'incidente. RPO (Recovery Point Objective): perdita massima accettabile di dati misurata nel tempo (es. 1 ora di transazioni). SLA (Service Level Agreement): contratto formale che definisce livelli di servizio e penali. SLO/SLI (Service Level Objective/Indicator): metriche interne di qualità usate per misurare e mantenere lo SLA. MTBF/MTTR: tempo medio tra guasti e tempo medio di ripristino, indicatori di affidabilità. Idempotenza: proprietà di un'operazione che, applicata più volte, produce lo stesso risultato della singola applicazione (fondamentale per automazione).
Hai bisogno di aiuto?
Se hai dubbi sulla gestione server, il team di G Tech Group puo aiutarti. Contattaci tramite il modulo di contatto.