Gestisci la tua VPN su un VPS offshore
Le VPN commerciali ti chiedono di fidarti di una politica no-log scritta dal loro reparto marketing. Il tuo VPS personale non ha nulla da registrare se non ciò che configuri. Ecco la configurazione WireGuard completa — e un elenco onesto dei compromessi.
Perché il self-hosting batte una VPN commerciale
Il "no logs" di una VPN commerciale è una policy. Il no-logs del tuo VPS personale è un' architettura. Questa differenza conta più di qualsiasi badge di audit:
- Un provider VPN vede tutto per progettazione. Il traffico di migliaia di utenti termina su server che l'azienda controlla completamente. Un'ordinanza segreta più una modifica silenziosa alla registrazione dei log è invisibile per te — ed è già successo, presso provider di cui hai sentito parlare.
- Sul tuo VPS personale, controlli l'intero stack. Il tuo sshd, il tuo disco, la tua configurazione WireGuard. Non eseguiamo nulla dentro la tua macchina virtuale e non conserviamo log di attività o connessioni lato rete. Non possiamo vedere dentro il tuo VPS; una società VPN è definita dal vedere dentro il suo tunnel.
- La giurisdizione lavora a tuo favore. La tua uscita vive dove la deployi — fuori dalle alleanze di sorveglianza se scegli, governata dai tribunali della giurisdizione di hosting piuttosto che dal paese d'origine della società VPN.
E il contrappeso onesto: una VPN self-hosted ha un IP dedicato che è solo tuo. I siti web non lo segnaleranno come VPN (un vero miglioramento della qualità della vita), ma tutto il tuo traffico condivide un singolo indirizzo — non ti mescoli in una folla di migliaia. Se l'anonimato di massa è il requisito, usa Tor. Se l'infrastruttura affidabile è il requisito, nulla batte una macchina che controlli.
Cosa stiamo costruendo
Telefono e laptop → tunnel WireGuard → un SV-Pro nella posizione scelta → internet aperto. Inoltro IPv4 con NAT sul server, routing full-tunnel sui client (0.0.0.0/0), DNS tramite 9.9.9.9. IP di esempio del server: 185.220.101.14 — sostituisci con il tuo. Il sistema operativo di base è Debian 13; se non hai ancora indurito la macchina, fai la checklist di 30 minuti prima, poi torna qui.
Configurazione server su Debian 13
Installa e genera le chiavi
apt update && apt install -y wireguard qrencode
cd /etc/wireguard
umask 077
# server keypair
wg genkey | tee server.key | wg pubkey > server.pub
# one keypair per client device (laptop shown; repeat for phone)
wg genkey | tee laptop.key | wg pubkey > laptop.pub
Generare le chiavi client sul server è accettabile per una prima configurazione, dato che trasferisci comunque i config via SSH. Per un'igiene più rigorosa, genera le chiavi su ciascun dispositivo e incolla solo le chiavi pubbliche nel config del server.
Scrivi wg0.conf
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <contents of server.key>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# laptop
[Peer]
PublicKey = <contents of laptop.pub>
AllowedIPs = 10.10.0.2/32
# phone — repeat the block with 10.10.0.3/32
Controlla il nome della tua interfaccia uplink con ip route | grep default — sulle immagini VPSRento è eth0, ma se il tuo è diverso, adatta le righe MASQUERADE.
Abilita l'inoltro e avvia
# turn on IPv4 forwarding, persist across reboots
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf
# firewall: one UDP port, nothing else
ufw allow 51820/udp comment 'WireGuard'
# bring it up, now and on boot
systemctl enable --now wg-quick@wg0
wg show
wg show dovrebbe stampare l'interfaccia, la porta in ascolto e i tuoi peer. Nessuna riga di handshake ancora — quelle appaiono quando un client si connette.
Configurazione client
Sul laptop, laptop.conf:
[Interface]
PrivateKey = <contents of laptop.key>
Address = 10.10.0.2/32
DNS = 9.9.9.9
[Peer]
PublicKey = <contents of server.pub>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 185.220.101.14:51820
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0, ::/0 instrada tutto attraverso il tunnel — passa a un tunnel diviso più tardi se mai ne vorrai uno. PersistentKeepalive mantiene il percorso attivo attraverso il NAT domestico. Per il telefono, non digitare nulla: genera il file di configurazione del telefono sul server e visualizzalo come codice QR nel terminale:
# prints a scannable QR in the terminal — scan it with the WireGuard app
qrencode -t ansiutf8 < phone.conf
Attiva, poi verifica da qualsiasi client: curl ifconfig.me dovrebbe rispondere con l'IP del tuo VPS, e un test di leak DNS dovrebbe mostrare 9.9.9.9l'operatore di — non il tuo ISP.
Note sulle prestazioni
WireGuard vive nel kernel e parla ChaCha20 — sui nodi AMD EPYC, un singolo tunnel sposta realisticamente 600–900 Mbps attraverso il NAT, il che significa che satura la porta molto prima di sforzare la CPU. Il vincolo determinante non è mai il cifrario; sono le condizioni di banda del piano. Una VPN è pura banda: ogni gigabyte che scarichi conta una volta in entrata e una volta in uscita. Sui piani a traffico limitato questo calcolo conta. Sull'SV-Pro — $19.99/mese, senza limiti a 1 Gbps — non conta, ed è per questo che il SV-Pro è il piano che consigliamo a chi costruisce VPN. Un cliente gestisce un setup per tutta la famiglia su un singolo SV-Pro ad Amsterdam e non ha ancora trovato il suo limite.
Multi-hop: entra ad Amsterdam, esci a Reykjavik
Per un secondo livello, collega due VPS in giurisdizioni diverse. Nodo di ingresso in i Paesi Bassi (latenza bassa per te), tunnel WireGuard tra i due server, nodo di uscita in Islanda (la giurisdizione da cui vuoi realmente che parta il tuo traffico). I tuoi dispositivi vedono un endpoint ad Amsterdam; internet vede un IP a Reykjavik; il nodo di ingresso vede solo testo cifrato che passa. Meccanicamente sono le stesse configurazioni che hai appena scritto, due volte — una seconda wg interfaccia sul nodo di ingresso la cui rotta predefinita punta al tunnel di uscita. Il costo è circa 40–60ms di latenza aggiunta e un altro $5.99–6.89 VPS. Vale la pena quando il tuo modello di minaccia ha un budget; decorazione quando non ce l'ha.
Limiti onesti
- Ora sei tu l'operatore. Aggiornamenti, rotazione delle chiavi e uptime sono affari tuoi. unattended-upgrades e la checklist di hardening coprono la maggior parte; il resto è un occasionale apt upgrade di domenica.
- Un IP è un'identità. Gli osservatori possono correlare tutto ciò che esce dal tuo indirizzo. Quando conta, ridistribuisci in un'altra posizione — 55 secondi dopo hai un nuovo exit e un nuovo IP verificato contro oltre 40 blacklist.
- Un VPS non è Tor. Questa configurazione ti protegge dal tuo ISP, da Wi-Fi ostili e dalle società VPN. Contro un avversario a livello statale che osserva entrambe le estremità del tunnel, esiste la correlazione temporale. Sappi in quale battaglia ti trovi.