Una VPN site-to-site è una connessione sicura che collega due o più subnet geograficamente separate attraverso una rete pubblica, come Internet. A differenza di una VPN remote access, che consente a un singolo utente di accedere a una rete privata, una VPN site-to-site mette in comunicazione intere reti, permettendo ai dispositivi presenti in ciascuna sede di raggiungere le risorse dell’altra come se appartenessero alla stessa infrastruttura di rete.
Dal punto di vista del routing, ciascun gateway VPN conosce le sottoreti raggiungibili attraverso il tunnel e instrada esclusivamente il traffico destinato a tali reti. Tutto il restante traffico continua a utilizzare il gateway predefinito, salvo configurazioni specifiche di tipo full tunnel.
Nel caso illustrato in questa guida, l’obiettivo consiste nel realizzare una VPN site-to-site tra un server VPS e l’infrastruttura del proprio homelab, così da consentire al VPS di comunicare direttamente con Proxmox Backup Server (PBS) attraverso il tunnel WireGuard. In questo modo, le operazioni di backup avvengono su un canale privato e cifrato, senza esporre il servizio PBS su Internet.
Prerequisiti
Prima di intervenire su OPNsense, assicurarsi di disporre dei seguenti elementi:
- Un VPS con server WireGuard già configurato e testato, come descritto nell’articolo specifico
- L’IP pubblico del VPS e la porta WireGuard (solitamente
51820/UDP) - La chiave pubblica WireGuard del VPS
- La subnet del tunnel VPN, ad esempio
10.8.0.0/24 - Gli indirizzi IP del tunnel scelti:
10.8.0.1per il VPS,10.8.10.2per OPNsense
Si raccomanda di eseguire un backup della configurazione di OPNsense prima di apportare modifiche.
Nelle versioni 25.x e successive di OPNsense, WireGuard è integrato nativamente in OPNsense e non richiede l’installazione di componenti aggiuntivi. Nelle versioni precedenti, il supporto a WireGuard è fornito tramite il plugin os-wireguard, che deve essere installato da System > Firmware > Plugin, prima di poter configurare il servizio.
OPNsense
Abilitare WireGuard
Dal percorso VPN > WireGuard > Instances, abilitare WireGuard.
Creazione dell’istanza WireGuard
Da VPN > WireGuard > Instance > Add configurare i seguenti parametri:
- Enabled: Yes
- Name:
VPS-WG - Generare una nuova coppia di chiavi utilizzando l’icona dell’ingranaggio
- Tunnel Address:
10.8.0.2/24(indica l’indirizzo IP di OPNsense nel tunnel) - MTU:
1420per installazioni bare metal,1380se OPNsense è eseguito in ambiente virtualizzato (QEMU/KVM),1412se la connessione WAN utilizza PPPoE - Disable Routes: lasciare l’opzione disabilitata
Configurazione del peer WireGuard
Spostarsi al percorso VPN > WireGuard > Peer > Add:
- Enabled: Yes
- Name:
VPS - Public Key: chiave pubblica del server VPS
- Tunnel Address (AllowedIPs):
10.8.0.0/24,10.0.10.0/24,10.0.5.0/24 - Endpoint Address: indirizzo IP pubblico del VPS
- Endpoint Port:
51820 - Instances:
VPS-WG - Persistent Keepalive (in secondi):
25
Dopo aver salvato il peer, tornare nella configurazione dell’istanza VPS-WG e, nella sezione Peers, selezionare il peer VPS appena creato. Salvare la configurazione e applicare le modifiche.
L’obiettivo di questa configurazione non è instradare il traffico Internet della LAN attraverso il VPS, ma esclusivamente consentire a OPNsense di raggiungere il VPS attraverso il tunnel WireGuard. Il parametro AllowedIPs definisce infatti le subnet consentite attraverso il tunnel WireGuard.
Con questa configurazione:
- Il traffico destinato alla rete
10.8.0.0/24viene instradato attraverso l’interfaccia WireGuard - All’interno del tunnel, é consentito anche il traffico proveniente dalle reti
10.0.10.0/24(LAN) e10.0.5.0/24(MNG) - Tutto il restante traffico continua a utilizzare l’interfaccia WAN secondo la normale tabella di routing
L’utilizzo di 0.0.0.0/0 è invece previsto per configurazioni full tunnel, nelle quali tutto il traffico della LAN viene instradato attraverso il VPS, che diventa il gateway di uscita per il traffico proveniente dalla rete locale. Tale configurazione richiede ulteriori impostazioni e presenta una complessità significativamente maggiore.
Assegnazione dell’interfaccia WireGuard
Una volta completata la configurazione del tunnel, la comunicazione tra OPNsense e il VPS risulta già funzionante. Tuttavia, senza l’assegnazione di un’interfaccia dedicata, non è possibile applicare regole di firewall al traffico proveniente dal tunnel: in assenza di tale assegnazione, qualsiasi traffico inviato dal VPS verso la LAN viene bloccato automaticamente.
Da Interfaces > Assignments selezionare e assegnare l’interfaccia wg0.
Successivamente, abilitare la nuova interfaccia:
- Enable: Yes
- Description:
VPS_WG - IPv4 Configuration Type:
None
Salvare la configurazione e applicare le modifiche.
L’indirizzo IP del tunnel (10.8.0.2/24) è già configurato all’interno dell’istanza. Configurare nuovamente lo stesso indirizzo come Static IPv4 sull’interfaccia può generare conflitti o comportamenti anomali. L’assegnazione dell’interfaccia ha il solo scopo di consentire l’applicazione di regole firewall dedicate al traffico WireGuard.
Regole di firewall
Per consentire al VPS di accedere a un servizio presente nella LAN è necessario creare una regola dedicata. Nel nostro caso, l’obiettivo è consentire al VPS di raggiungere Proxmox Backup Server (10.0.5.5), così da permettere l’esecuzione dei backup mediante Proxmox Backup Client, secondo la procedura illustrata nel precedente articolo.
Da Firewall > Rules > VPS_WG
Creare una nuova regola con i seguenti parametri:
- Enabled: Yes
- Description:
Allow to PBS01 for BACKUP - Action: Pass
- Direction: In
- Protocol: TCP
- Sources:
wg0_VPSoppure10.8.0.1 - Destination:
PBS01oppure10.0.5.5
Salvare la configurazione e applicare le modifiche. Questa regola consente esclusivamente l’accesso a PBS. Qualsiasi altro dispositivo, rimane inaccessibile dal tunnel WireGuard.
Di seguito alcune utili regole:
VPS
Una volta completata la configurazione di OPNsense, il VPS deve essere configurato affinché possa raggiungere PBS attraverso il tunnel WireGuard.
Il server VPS deve conoscere la posizione della subnet 10.0.5.0/24: la modalità più semplice consiste nell’aggiungere la rete tra gli AllowedIPs del peer OPNsense all’interno del file /etc/wireguard/wg0.conf.
L’inclusione dell’host 10.0.5.5/32 negli AllowedIPs indica a WireGuard che PBS è raggiungibile attraverso il peer OPNsense. In assenza di questa configurazione, il VPS non inoltrerà il traffico destinato al PBS nel tunnel.
Dopo aver modificato il file, riavviare WireGuard col comando systemctl restart wg-quick@wg0. Riavviare Wireguard anche da OPNsense:
Semplicemente, disabilitare l’istanza, applicare, riattivare l’istanza e riapplicare nuovamente le modifiche.
Verificare quindi la correttezza delle rotte:
Dal VPS eseguire:
|
|
per verificare la raggiungibilità di OPNsense. E quindi:
|
|
per assicurasi che PBS sia correttamente raggiungibile. Una volta rimosse da PBS le vecchie configurazioni, disinstallato il pacchetto wireguard-tools e rimosso l’interfaccia wg0 (tramite il comando ip link delete wg0), il backup del VPS dovrebbe avviarsi correttamente.
Per completezza, nel file /etc/default/proxmox-backup , l’indirizzo di PBS deve essere corretto: