WireGuard su Linux server: setup completo

WireGuard su Linux server: setup completo

WireGuard è una VPN moderna integrata nel kernel Linux dal 5.6, scritta in poche migliaia di righe di codice e con cifratura curata (Curve25519, ChaCha20-Poly1305, BLAKE2). Installarla su un VPS Linux richiede meno tempo rispetto a OpenVPN e offre throughput nettamente superiore.

Requisiti e architettura

Serve un VPS con kernel 5.6 o superiore (Ubuntu 22.04, Debian 12, Rocky 9), IP pubblico è una porta UDP libera (default 51820). Ogni peer ha una coppia chiave pubblica/privata; il server mantiene una sezione [Peer] per ogni client con la sua AllowedIPs.

Procedura passo-passo

  1. Installa il pacchetto con apt install wireguard wireguard-tools su Debian/Ubuntu.
  2. Genera la coppia chiavi server con wg genkey | tee privatekey | wg pubkey > publickey.
  3. Crea /etc/wireguard/wg0.conf con [Interface] PrivateKey, Address 10.10.0.1/24, ListenPort 51820 e PostUp iptables masquerade.
  4. Genera chiavi per ogni client e aggiungi una sezione [Peer] in wg0.conf con PublicKey e AllowedIPs 10.10.0.X/32.
  5. Abilita IP forwarding con sysctl -w net.ipv4.ip_forward=1 e rendi persistente in /etc/sysctl.conf.
  6. Avvia il tunnel con systemctl enable --now wg-quick@wg0 e verifica con wg show.
  7. Distribuisci ai client il file di config corrispondente (oppure QR code generato con qrencode).

Configurazioni avanzate: Tables, PostUp

Le direttive PostUp e PreDown in wg-quick permettono di eseguire comandi al setup/teardown del tunnel. Esempi: PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE, PostUp = ip route add 192.168.50.0/24 dev wg0. La direttiva Table consente di usare tabelle di routing dedicate (Table = 200) utili per policy-based routing avanzato in scenari multi-tenant.

Monitoraggio e prometheus

Per monitorare WireGuard in produzione esiste wireguard_exporter (prometheus_wireguard_exporter su GitHub) che espone metriche per peer: last handshake, bytes in/out, allowed IPs. Collega Prometheus + Grafana per dashboard di stato tunnel, alert su handshake mancanti oltre N minuti, grafici banda. È essenziale in setup multi-utente per identificare client problematici.

Backup e disaster recovery

La configurazione WireGuard e tutta in file di testo: backupala con la stessa cadenza del resto del sistema. Per disaster recovery rapido tieni offline copia di /etc/wireguard/*.conf e delle chiavi private. In caso di compromissione server, ruota chiavi server e ridistribuisci configurazioni client. Considera Ansible/Salt per provisioning ripetibile di nuovi endpoint.

WireGuard via Docker

Per setup rapido WireGuard può essere eseguito in container: linuxserver/wireguard è l'immagine più popolare, supporta sia server che client. Configurazione via variabili ambiente o volume mount. Vantaggi: isolamento, portabilita, easy update. Svantaggi: leggero overhead di rete (puoi compensare con --network=host). Ideale per chi gestisce molti servizi tramite Docker Compose.

Mesh WireGuard manuale

Per creare una piccola mesh WireGuard manuale senza Tailscale/Headscale: ogni nodo ha un [Interface] con la propria chiave privata, e un [Peer] per ogni altro nodo della mesh con la sua chiave pubblica e allowed-IPs. Endpoint pubblico solo dove serve (i nodi dietro NAT possono usare keepalive verso un nodo gateway). Funziona bene fino a 5-10 nodi; oltre, l'orchestrazione automatica diventa essenziale.

Best practice di sicurezza

Indipendentemente dalla soluzione VPN scelta, alcune regole valgono sempre: usa chiavi e certificati robusti (RSA 2048+ o ECC P-256+, chiavi WireGuard generate con tool ufficiali), aggiorna regolarmente sia il software server sia i client, applica patch security non appena rilasciate, monitora i log per identificare attività anomale, ruota le credenziali periodicamente, segmenta la rete in modo che il tunnel non dia accesso indiscriminato a tutta la LAN aziendale, e formalizza una policy di disaster recovery con backup delle configurazioni. La VPN protegge il tunnel in transito ma non sostituisce hygiene di sicurezza degli endpoint: combina con MFA, EDR, patching aggressivo e formazione utenti per ottenere una postura di sicurezza completa.

Monitoring e osservabilita

Una VPN che non viene monitorata è una VPN che non sai se funziona. Raccogli metriche minime: numero di sessioni attive, latenza media end-to-end, percentuale di handshake riusciti vs falliti, throughput aggregato, geolocazione client. Strumenti come Prometheus + Grafana, Zabbix, PRTG o stack ELK forniscono dashboard utili. Configura alert proattivi su soglie critiche: tunnel down per oltre N minuti, picchi anomali di tentativi di autenticazione falliti, traffico fuori orario. In ambito aziendale integra con SIEM per correlazione cross-system e response automatica. Il monitoring continuo trasforma la VPN da componente passiva a infrastruttura osservabile e tunable nel tempo.

Documentazione e procedure operative

Documenta sempre l'architettura VPN come la documentereresti per un nuovo collega che la prende in carico domani: diagramma di rete, IP scheme, chiavi/certificati e dove sono custoditi, procedure di onboarding e revoca utenti, processi di rotazione chiavi, runbook per incidenti comuni (tunnel giu, latency anomala, certificato scaduto), responsabilità ownership. Conserva la documentazione in un wiki interno (Confluence, BookStack, GitBook) versionato e con backup. Quando un membro del team lascia, basta passare il riferimento alla documentazione: continuita operativa garantita anche con turnover.

Errori comuni e come risolverli

  • Client si connette ma non naviga: manca il MASQUERADE iptables o IP forwarding: ricontrolla PostUp e sysctl.
  • wg show non mostra handshake: il client non riesce a contattare la porta UDP: verifica firewall cloud (es. Security Group AWS) e ufw.
  • Conflitto subnet: scegli un range RFC1918 non in uso, es 10.66.66.0/24, per evitare collisioni con la LAN del client.
  • MTU su 4G/mobile: imposta MTU = 1380 nel client se rilevi pacchetti grandi dropati.

Domande frequenti

D: Posso usare WireGuard per site-to-site?
R: Si, basta aggiungere AllowedIPs con la subnet remota sul peer corrispondente.

D: Quanta banda regge?
R: Su VPS modesti raggiunge facilmente 500 Mbps-1 Gbps grazie al supporto kernel.

D: Come ruoto le chiavi?
R: Genera nuove chiavi, aggiorna client e ricarica wg-quick: la rotazione è una semplice modifica di file di testo.

Hai bisogno di aiuto?

Se vuoi configurare VPN aziendale con G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?