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
- Installa il pacchetto con apt install wireguard wireguard-tools su Debian/Ubuntu.
- Genera la coppia chiavi server con wg genkey | tee privatekey | wg pubkey > publickey.
- Crea /etc/wireguard/wg0.conf con [Interface] PrivateKey, Address 10.10.0.1/24, ListenPort 51820 e PostUp iptables masquerade.
- Genera chiavi per ogni client e aggiungi una sezione [Peer] in wg0.conf con PublicKey e AllowedIPs 10.10.0.X/32.
- Abilita IP forwarding con sysctl -w net.ipv4.ip_forward=1 e rendi persistente in /etc/sysctl.conf.
- Avvia il tunnel con systemctl enable --now wg-quick@wg0 e verifica con wg show.
- 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.