WireGuard VPN su server self-hosted

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

  1. Installa WireGuard sul server e generale chiavi.
  2. Crea wg0.conf con Interface e ListenPort.
  3. Abilita IP forwarding nel kernel.
  4. Avvia il servizio: systemctl enable --now wg-quick@wg0.
  5. Apri la porta 51820/UDP nel firewall.
  6. Per ogni client genera chiavi e aggiungi un blocco [Peer] sul server.
  7. Crea il file di configurazione client con peer server e AllowedIPs.
  8. Distribuisci la config (no QR code per app mobile).
  9. Testa la connessione: wg show, ping verso risorse interne.
  10. 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.

Hai trovato utile quest'articolo?