La mascotte orso polare di NordBastion in un laboratorio nordico in pietra con un tunnel cifrato ciano luminoso che forma un arco tra un laptop stilizzato e una torre server, glifi di chiave e lucchetto in orbita intorno al tunnel
Come fare · Self-host·11 min di lettura · 15 min di pratica

Ospiti in autonomia una VPN WireGuard su un VPS.
Quindici minuti per il proprio VPN personale.

Cinque passaggi da «nessun server» a «il mio VPN personale» — KYC-free alla registrazione, pagato in crypto, nessun provider VPN di terze parti nella catena di fiducia. Testato su Debian 12 con WireGuard 1.0+ nel kernel mainline.

I cinque passaggi
  1. 01

    Provisioning

    Un VPS nordico

  2. 02

    Installare

    apt install wireguard

  3. 03

    Configura

    Chiavi + wg0.conf

  4. 04

    Firewall

    UDP 51820 + forwarding

  5. 05

    Connettere

    wg-quick up wg0

Passo 01 · Provisioning

Scegliere un bastione nordico vicino a dove si vive.

Nel pannello: Ordine → VPS → Sentinel ($5.90 al mese, 2 vCPU / 4 GB / 120 GB NVMe). Il Sentinel ha banda illimitata e un uplink da 1 Gbps — più che sufficiente per un VPN personale anche in full streaming. Scegliere il bastione più vicino a dove ci si trova fisicamente, perché ogni byte inviato passa attraverso il VPS prima di raggiungere la destinazione. Un cliente europeo sceglie Stockholm o Helsinki; un cliente Americhe/Asia sceglie Reykjavík (latenza transatlantica più bassa) o Oslo.

Immagine OS: Debian 12 è la raccomandazione. Ubuntu 22.04+ funziona in modo identico. Alpine funziona ma usa nomi di pacchetti diversi (apk add wireguard-tools). FreeBSD funziona anche ma la sintassi di configurazione diverge. Il server si avvia in circa 90 secondi; le credenziali root vengono mostrate una volta nel pannello.

Passo 02 · Installazione

Un pacchetto, già nel kernel.

Acceda via SSH come root. Poi:

apt update
apt install -y wireguard qrencode

Ecco fatto. WireGuard è nel kernel Linux mainline dal 5.6 (marzo 2020), quindi apt installa solo gli strumenti user-space (wg, wg-quick) — nessuna compilazione di moduli, nessun DKMS, nessuna ricompilazione del kernel. Il pacchetto qrencode sarà utile al passo 5 per inviare la configurazione client a un telefono come QR.

Abilitare l'IP forwarding ora per non dimenticarlo al passaggio 4:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
Passo 03 · Configurazione

Generare le chiavi, scrivere wg0.conf. Due minuti.

Generare una coppia di chiavi server:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Ora generare una coppia di chiavi client per dispositivo:

wg genkey | tee laptop_private.key | wg pubkey > laptop_public.key
wg genkey | tee phone_private.key  | wg pubkey > phone_public.key

Creare /etc/wireguard/wg0.conf con le impostazioni del server + un blocco [Peer] per client:

[Interface]
PrivateKey = <contents of server_private.key>
Address    = 10.66.66.1/24, fd00:66::1/64
ListenPort = 51820
PostUp     = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown   = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# laptop
PublicKey  = <contents of laptop_public.key>
AllowedIPs = 10.66.66.2/32

[Peer]
# phone
PublicKey  = <contents of phone_public.key>
AllowedIPs = 10.66.66.3/32
Passo 04 · Firewall

Aprire UDP 51820. Bloccare il resto.

Se si usa UFW (predefinito su Ubuntu):

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp        # SSH (consider port-knocking or VPN-only in production)
ufw allow 51820/udp     # WireGuard
ufw enable

I bastioni NordBastion hanno anche un firewall upstream gestito dal pannello — si possono replicare le stesse regole lì per la difesa in profondità. Il firewall a livello di bastione blocca prima che il pacchetto raggiunga il VPS, il che risparmia CPU sulla scansione volumetrica.

Un consiglio sulla privacy da seguire: cambiare il ListenPort di WireGuard da 51820 (quello predefinito, che gli scanner cercano) a una porta casuale tra 1024 e 65535. Non migliora la sicurezza contro un avversario determinato ma riduce il rumore degli scanner casuali.

Passo 05 · Connessione

Alzare il tunnel. Primo client connesso in pochi secondi.

Sul server:

systemctl enable --now wg-quick@wg0
wg                          # status: should show interface up

Creare una configurazione client (laptop.conf) sul server, poi copiarla sul laptop:

[Interface]
PrivateKey = <contents of laptop_private.key>
Address    = 10.66.66.2/24, fd00:66::2/64
DNS        = 1.1.1.1, 9.9.9.9       # or your favourite privacy resolver

[Peer]
PublicKey         = <contents of server_public.key>
Endpoint          = <server-ip>:51820
AllowedIPs        = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Per mobile, instradare la configurazione attraverso qrencode e scansionare con l'app WireGuard:

qrencode -t ansiutf8 < phone.conf

Ecco fatto. Il client si connette, il tunnel si attiva, e il laptop / telefono ora raggiunge internet attraverso il bastion nordico. Verifichi con: curl https://api.ipify.org — l'IP restituito è quello pubblico del VPS, non il suo IP domestico.

FAQ · WireGuard

Domande, con risposta.

Otto domande che un cliente self-hosted-VPN alla prima esperienza pone.

Perché ospitare in autonomia una VPN WireGuard invece di usare NordVPN / Mullvad / ProtonVPN?

Tre motivi reali. (1) La catena di fiducia si riduce. Una VPN commerciale è «fidati di questa azienda per non registrarti»; una self-hosted è «fidati di questo provider VPS per non registrarti» — una parte in meno. (2) L'endpoint VPN è solo suo. Gli IP di uscita delle VPN commerciali sono condivisi tra migliaia di utenti e bloccati da molti servizi; il suo endpoint self-hosted è un IP fresco e pulito che nessuno ha segnalato. (3) Costo. Un Sentinel NordBastion è $5.90/mese e gestisce una VPN a banda illimitata; le VPN commerciali sono $5-$15/mese per infrastruttura condivisa.

Perché WireGuard invece di OpenVPN?

WireGuard è più piccolo (4.000 righe di codice kernel vs ~100.000 di OpenVPN), più veloce (spesso 3-5× più throughput sullo stesso hardware), più semplice da configurare (un singolo file di configurazione invece della gestione CA/cert/dhparam), e più favorevole all'audit. È nel kernel Linux mainline dal 5.6 (2020) quindi nessun passaggio di compilazione. OpenVPN rimane utile per la compatibilità legacy e il traffico basato su TCP; per tutto il resto WireGuard è il default moderno.

Il mio ISP sa che sto eseguendo un VPN?

Il suo ISP vede traffico UDP cifrato sulla porta 51820 diretto verso un IP NordBastion. Quel pattern è riconoscibile come traffico VPN; ciò che c'è dall'altra parte non lo è. Se «usare una VPN in generale» è sensibile nel suo contesto, esegua WireGuard sulla porta 443 (parla UDP non TCP, ma la porta è la stessa di HTTPS), e consideri un wrapper di offuscamento come udp2raw se l'ISP blocca attivamente gli handshake WireGuard.

Posso usare il VPS come VPN E come server per altre cose?

Sì, pattern comune. Il VPS esegue WireGuard più qualsiasi altra cosa di cui ha bisogno — un sito web personale, un nodo Bitcoin, un'istanza Mastodon. Le regole del firewall mantengono isolati il traffico VPN e i servizi pubblici; iptables/nft può instradare i client VPN verso servizi locali specifici e non verso altri.

E la geolocalizzazione IP — i siti penseranno che sia in Svezia?

Sì — il suo IP di uscita è il bastion NordBastion che ha scelto. I servizi di streaming che usano il geofencing per IP la tratteranno come svedese (bastion Stockholm), finlandese (Helsinki), norvegese (Oslo) o islandese (Reykjavík). I siti bancari che segnalano «accesso da nuovo paese» attiveranno le loro regole antifrode; questo è il comportamento normale, non un problema della VPN.

Quanti client può gestire un server WireGuard?

Praticamente illimitato per uso personale. Ogni peer aggiunge qualche KB di memoria. Il vincolo è la banda e l'uplink del bastione, non il daemon WireGuard stesso. Il livello Sentinel con banda illimitata e un uplink da 1 Gbps si saturerà ben prima che il processo WireGuard se ne accorga.

Devo eseguirlo su un VPS dedicato o condividerlo con altri workload?

Un VPS dedicato è più pulito dal punto di vista dell'OPSEC — l'unica cosa associata all'IP è «il mio VPN personale». Mescolando i carichi di lavoro, il traffico VPN e quello dell'altro carico di lavoro condividono un IP in uscita, e qualsiasi problema reputazionale dell'uno si riversa sull'altro. A $5.90 al mese è ragionevole tenerli separati.

Il WireGuard self-hosted è in grado di fare kill-switch?

Sì, lato client. Le configurazioni WireGuard supportano un blocco PostUp / PostDown dove si aggiungono regole iptables che bloccano il traffico non-VPN quando il tunnel è attivo; si può anche impostare il SO client per rifiutare le connessioni non-VPN di default. Diverse app di gestione open-source (wg-easy, WireGuard-UI, Pi-VPN) lo gestiscono per Lei.

Pronto

Ordinare un Sentinel e avviare il proprio VPN.

Ultima revisione · 2026-05-20 · Testato · Debian 12 · WireGuard 1.0.20210914