VPNSmith
self-host-vpnINFO

VPN site-to-site con WireGuard: unire due reti (guida 2026)

Unisci due LAN intere con WireGuard — ufficio e casa, due data center, o filiale e sede. Routing di sottorete, AllowedIPs, NAT e firewall, passo dopo passo su un VPS.

Di Eric Gerard · Fondatore · VPNSmith — Specialista in VPN autogestite e VPS GDPR9 min letturaFoto via Pixabay

Avviso di affiliazione — Questo articolo contiene link di affiliazione Contabo. Se ordini un VPS tramite essi, guadagniamo una commissione senza costi aggiuntivi per te. Tutti i comandi e le configurazioni qui sotto sono documentati dalle fonti ufficiali WireGuard e scritti per essere riproducibili sulle tue macchine.

Una VPN site-to-site unisce due intere reti perché si comportino come una sola. Ogni host della LAN dell'ufficio può raggiungere ogni host della LAN di casa — il tuo NAS, una stampante, un hypervisor, un database — senza installare un client VPN su ciascun dispositivo. WireGuard lo rende leggero e veloce: una sola porta UDP, poche righe di configurazione, crittografia in spazio kernel. Questa guida costruisce un tunnel WireGuard site-to-site funzionante da zero, poi spiega le tre cose che si sbagliano sempre: AllowedIPs, l'inoltro IP e il routing degli host.

Useremo una topologia concreta e comune: il Sito A è una LAN domestica o d'ufficio dietro NAT (nessun IP pubblico utilizzabile), e il Sito B è un VPS con IPv4 pubblico che fa da hub sempre attivo. La stessa configurazione unisce anche due case, due uffici o due data center — cambiano solo le sottoreti.

Site-to-site vs road-warrior: cosa cambia davvero

Se hai già configurato WireGuard per un portatile, il 90 % di tutto questo ti è familiare. Il cambio di mentalità è piccolo ma cruciale:

  • Road-warrior (accesso remoto): un dispositivo entra nella rete. Il suo peer annuncia un singolo indirizzo di tunnel — AllowedIPs = 10.66.66.2/32.
  • Site-to-site: un'intera rete entra. Il peer annuncia la sottorete LAN che ha dietroAllowedIPs = 10.66.66.2/32, 192.168.10.0/24 — e la box WireGuard inoltra per ogni host di quella LAN.

Tutto il resto — chiavi, handshake, porta UDP — è identico. Se l'handshake non si completa mai, le cause sono le stesse di qualsiasi tunnel; segui la lista di soluzioni per l'handshake WireGuard prima di incolpare la parte site-to-site.

Un fascio fitto di cavi Ethernet blu, verdi, gialli e rossi collegati a uno switch di rete in un rack
Un fascio fitto di cavi Ethernet blu, verdi, gialli e rossi collegati a uno switch di rete in un rack

Pianifica prima lo spazio di indirizzamento (5 minuti che fanno risparmiare ore)

Prima di toccare una configurazione, scrivi tre intervalli. Sbagliare qui è la causa numero uno di un tunnel che si connette ma non trasporta traffico degli host.

IntervalloEsempioRegola
Sottorete del tunnel10.66.66.0/24Propria della VPN, non deve collidere con nessuna LAN
LAN Sito A192.168.10.0/24La rete di casa/ufficio
LAN Sito B192.168.20.0/24La rete remota — deve differire dal Sito A

La regola ferrea: le due LAN non devono sovrapporsi. Se entrambi i lati usano oggi 192.168.1.0/24, rinumera uno adesso. Un host non può instradare verso una sottorete remota identica alla propria — tratterà l'indirizzo come locale e non consegnerà mai il pacchetto a WireGuard. Se la matematica delle sottoreti ti sfugge, la nostra spiegazione di cos'è una subnet copre il CIDR in modo semplice.

Passo 1 — Predisporre l'hub (Sito B, il VPS)

Il Sito B ha bisogno di un IPv4 pubblico e di una porta UDP aperta. Usiamo un Contabo Cloud VPS 10 (4 vCPU, 8 GB RAM, 75 GB NVMe) a 5,50 €/mese sul piano da 12 mesi — sovradimensionato per un tunnel, comodo se esegue anche altri servizi. Se non hai ancora un VPS, prendi il Contabo Cloud VPS 10; scegli una regione vicina al sito che invia più traffico. Per un'installazione pulita di WireGuard, segui la guida passo passo Contabo + WireGuard, poi torna qui per il routing site-to-site.

Installa WireGuard e genera le chiavi sul VPS:

sudo apt update && sudo apt install -y wireguard
umask 077
wg genkey | tee siteB.key | wg pubkey > siteB.pub

Passo 2 — Predisporre il router WireGuard al Sito A

La box WireGuard del Sito A è una qualsiasi macchina Linux sempre accesa della LAN — un Raspberry Pi, una piccola VM, un vecchio portatile. Non serve un IP pubblico; compone verso il VPS. Genera le sue chiavi allo stesso modo:

wg genkey | tee siteA.key | wg pubkey > siteA.pub

Questa macchina diventa il gateway della sottorete remota, quindi deve inoltrare i pacchetti tra la sua interfaccia LAN e l'interfaccia WireGuard.

Passo 3 — Le due configurazioni

Ecco l'intero tunnel. Nota come l'AllowedIPs di ciascun lato elenca la LAN dell'altro sito — è quella riga a trasformare un collegamento punto-punto in un collegamento rete-rete.

Sito B — l'hub VPS (/etc/wireguard/wg0.conf):

[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <siteB.key>
# forward + masquerade perché anche gli host del Sito A raggiungano internet tramite il VPS
PostUp = sysctl -w net.ipv4.ip_forward=1
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

[Peer]
# Sito A
PublicKey = <siteA.pub>
AllowedIPs = 10.66.66.2/32, 192.168.10.0/24

Sito A — il router LAN (/etc/wireguard/wg0.conf):

[Interface]
Address = 10.66.66.2/24
PrivateKey = <siteA.key>
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT

[Peer]
# Sito B (l'hub VPS)
PublicKey = <siteB.pub>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.66.66.0/24, 192.168.20.0/24
PersistentKeepalive = 25

Due dettagli che contano:

  • PersistentKeepalive = 25 va sul lato dietro NAT (Sito A). Invia un pacchetto minuscolo ogni 25 secondi affinché il router domestico tenga aperto il percorso UDP e il VPS possa sempre rispondere.
  • Endpoint compare solo nel blocco peer del Sito A — è il Sito A a chiamare il VPS. Il VPS apprende l'indirizzo del Sito A all'arrivo del primo pacchetto, quindi il suo blocco peer non ha Endpoint.

Avvia entrambi i tunnel con sudo wg-quick up wg0 e controlla sudo wg show. Un latest handshake di meno di due minuti su entrambi i lati significa che il collegamento è vivo.

Passo 4 — Il passo che tutti dimenticano: il routing degli host

È qui che la maggior parte dei tunnel site-to-site si blocca. I router si fanno ping su 10.66.66.x, ma un portatile del Sito A continua a non raggiungere un NAS del Sito B. Perché? Perché gli altri host di ogni LAN non sanno che la box WireGuard è la porta verso la sottorete remota. Inviano il pacchetto al loro gateway predefinito, che non ha rotta per 192.168.20.0/24, e muore.

Hai due modi puliti per risolvere:

  1. Rotta statica sul gateway della LAN (il migliore). Sul router principale del Sito A, aggiungi una rotta statica: destinazione 192.168.20.0/24, gateway = l'IP LAN della box WireGuard del Sito A (es. 192.168.10.5). Specchia lo stesso al Sito B. Ora ogni host eredita la rotta automaticamente. La maggior parte dei router domestici e professionali supporta le rotte statiche nel pannello di amministrazione.
  2. Rotte statiche per host. Se non puoi toccare il router, aggiungi una rotta su ogni macchina che deve accedere all'altro sito:
# su un host del Sito A, raggiungere la LAN del Sito B tramite la box WireGuard locale
sudo ip route add 192.168.20.0/24 via 192.168.10.5

Se la box WireGuard è il gateway predefinito della tua LAN, puoi saltare del tutto questo passo — inoltra già. Concettualmente è un problema di routing, non di VPN; la stessa logica del port forwarding ma applicata a un'intera sottorete invece che a una sola porta.

Passo 5 — Firewall sul percorso di inoltro

Inoltrare senza regola di firewall significa lasciar passare o niente o tutto. Sii esplicito. Sull'hub VPS, il PostUp qui sopra accetta già il traffico inoltrato da wg0; stringilo se vuoi che parlino solo certe sottoreti:

# permetti solo LAN Sito A <-> LAN Sito B, scarta il resto
iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.20.0/24 -i wg0 -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -d 192.168.10.0/24 -o wg0 -j ACCEPT

Rendi le regole persistenti (iptables-save, o netfilter-persistent save su Debian/Ubuntu) perché sopravvivano a un riavvio. Anche la singola porta UDP deve essere aperta davanti al VPS — vedi quale porta usa WireGuard e come aprirla se l'handshake non parte mai.

Verificare l'intero percorso

Esegui questi in ordine e fermati al primo fallimento:

  1. Tunnel attivo? sudo wg show a entrambe le estremità → latest handshake recente, transfer diverso da zero.
  2. Router a router? Dalla box WireGuard del Sito A: ping 10.66.66.1. Fallisce → è un problema di tunnel, non di site-to-site.
  3. Router verso LAN remota? Dalla box del Sito A: ping 192.168.20.1. Fallisce → AllowedIPs o ip_forward sul Sito B.
  4. Host verso host remoto? Da un portatile del Sito A: ping 192.168.20.50. Fallisce qui ma il passo 3 funzionava → routing degli host (passo 4).

Questa scala in quattro righe isola in meno di un minuto il livello esatto che è rotto.

Quando aggiungere altri siti — hub-and-spoke

Per unire tre reti o più, mantieni il VPS come hub centrale e aggiungi ogni nuova LAN come peer spoke su di esso. Ogni spoke elenca tutte le altre sottoreti LAN nel suo AllowedIPs (instradate via hub), e l'hub elenca la LAN di ogni spoke. Questo resta semplice fino a una manciata di siti. Oltre — o se vuoi rotazione automatica delle chiavi, ACL e attraversamento del NAT senza IP pubblico da nessun lato — un piano di controllo a mesh come Tailscale o Headscale è meno lavoro che modificare i peer a mano; valutalo nel nostro confronto Tailscale vs WireGuard self-host.

Perché auto-ospitare l'hub invece di un servizio gestito

Un collegamento site-to-site è esattamente il punto in cui possedere la box ripaga: niente prezzo per postazione, niente limiti di dati, nessun terzo nel percorso tra le tue due reti. Un Contabo Cloud VPS 10 a 5,50 €/mese offre IPv4 pubblico, root completo, traffico illimitato (fair-use) e la libertà di aprire l'unica porta UDP che ti serve — l'hub sempre attivo ideale per legare i tuoi siti. Costruiscilo una volta e gira per anni.

Per approfondire

Fonti e riferimenti:


Pubblicato il 2026-06-26. Topologia validata su Debian 12 e Ubuntu 24.04 con un hub Contabo Cloud VPS 10 e un router LAN Raspberry Pi. Le tue sottoreti, i modelli di router e il comportamento NAT del tuo ISP saranno diversi — conferma sempre ogni livello con wg show, ping e ip route prima di considerare finale una configurazione.

Promemoria: eseguire WireGuard e auto-ospitare una VPN è legale nell'UE, negli USA, in Canada e nella maggior parte dei paesi democratici. VPNSmith pubblica questo contenuto a scopo educativo.

★ Datacenter GDPR di Norimberga · ✓ IPv4 dedicato incluso · 200+ Mbps garantiti

Ospita la tua VPN sul tuo VPS → ContaboAccesso root completo · IPv4 pubblico · scegli la tua regione

Domande frequenti

Qual è la differenza tra una configurazione site-to-site e una road-warrior?
Una configurazione road-warrior (accesso remoto) collega un singolo dispositivo — il tuo portatile, il tuo telefono — a una rete. Una configurazione site-to-site collega due intere reti: ogni macchina della LAN A può raggiungere ogni macchina della LAN B, in modo trasparente, senza installare WireGuard su ciascun dispositivo. Tutta la differenza sta in AllowedIPs e nel routing: un peer road-warrior annuncia un singolo IP di tunnel /32, un peer site-to-site annuncia la sottorete LAN remota (es. 192.168.20.0/24) e i router inoltrano per gli host dietro di loro.
Entrambi i siti hanno bisogno di un IP pubblico?
No — serve un IP pubblico raggiungibile e una porta UDP aperta solo da un lato. WireGuard è peer-to-peer: il lato dietro NAT (una connessione domestica, un link mobile in CGNAT) avvia il tunnel e lo tiene aperto con PersistentKeepalive. Lo schema classico: un VPS economico con IPv4 pubblico che fa da hub sempre attivo, e una o più LAN che vi si connettono. Se nessun sito ha un IP pubblico, fai transitare entrambi attraverso un hub VPS invece di collegarli direttamente.
Come faccio a far raggiungere la LAN locale dalla LAN remota tramite WireGuard?
Tre cose devono allinearsi. (1) AllowedIPs su ogni peer deve elencare la sottorete LAN remota, non solo il /32 del tunnel. (2) L'inoltro IP deve essere attivo: net.ipv4.ip_forward=1. (3) Gli host di ogni LAN devono sapere di inviare il traffico della sottorete remota al loro router WireGuard locale — tramite una rotta statica su ciascun host, o una rotta statica sul gateway predefinito della LAN che punta la sottorete remota alla box WireGuard. Saltare il passo 3 è la causa numero uno di un tunnel site-to-site che «funziona» tra router ma in cui nessun host si fa ping.
Le sottoreti sovrapposte rompono una VPN site-to-site?
Sì, e gravemente. Se entrambe le LAN usano 192.168.1.0/24, un host non può sapere se 192.168.1.50 è locale o remoto, quindi non invia mai il pacchetto nel tunnel. Devi rinumerare un lato (es. spostare una LAN su 192.168.20.0/24) o usare un NAT 1:1 per mappare la sottorete remota su un intervallo non sovrapposto. Pianifica lo spazio di indirizzamento prima di costruire — rinumerare una rete in produzione dopo è doloroso.
WireGuard site-to-site è più veloce di OpenVPN site-to-site?
WireGuard ha in genere meno carico di CPU e minore latenza di OpenVPN perché gira in spazio kernel e usa crittografia moderna e fissa, il che conta su VPS piccoli e su link che saturi. Il throughput esatto dipende da CPU, MTU e qualità del percorso tra i due siti — misura sempre la tua configurazione. Per un confronto funzione per funzione, vedi il nostro approfondimento OpenVPN vs WireGuard.