In un precedente articolo, ho descritto come installare pfSense in un tenant vCloud per farne il suo gateway. In questo articolo vi mostrerò come creare una lan tra questo firewall, e un altro installato nel sito di un cliente.
Una stretched LAN è una connessone tra due siti dove potete usare la stessa subnet IP in entrambi i siti, senza dover avere del routing tra di esse. Questa configurazione ha alcuni vantaggi rispetto a una vpn routed (ci sono anche alcuni svantaggi, ma non è scopo di questo articolo descriverli), come il fatto di poter muovere le virtual machines da un sito all’altro senza cambiare il loro indirizzo IP.
Questa configurazione prevede l’uso di OpenVPN e delle sua capacità di bridging. OpenVPN è una delle migliori soluzioni vpn in circolazione (se non la migliore), è inclusa in pfSense, è gratuita e opensource, e se aveste dubbi circa la sua capacità di scalare e gestire VPN di grandi aziende, sappiate che conosco personalmente molte grandi aziende che la usano, in settori come quello bancario dove anche la sicurezza è un aspetto importantissimo.
Configurare pfSense lato cliente
Configuro solitamente la parte server di OpenVPN nel sito cliente. Questo non è obbligatorio, potete scegliere uno due due siti che agisca da server e l’altro come client, per me è solo una semplicità dato che probabilmente il sito cliente gestirà anche le connessioni dei clienti mobili.
Andate in VPN -> OpenVPN, e nel tab Server create una nuova connessione come la seguente:
Vediamo le configurazioni e il loro significato (i valori che non cito possono essere lasciati a default):
– Server Mode “Peer to Peer (Shared Key), questo è necessario per la VPN site to site. I due siti condivideranno la stessa shared key per cifrare il tunnel.
– Device Mode deve essere configurato come TAP (tun è per il routing mode)
– Interfaccia WAN: vogliamo che i due pfSense si connettano tramite la rispettiva interfaccia esterna
– Shared key: potete scegliere di auto-generarla lato server e poi copiarla nell’altro pfSense
– Tunnel Network: impostate una subnet che non sia in uso in nessuno dei due siti, questa verrà usata unicamente all’interno del tunnel di OpenVPN. Ho impostato una subnet /29 subnet dato che questo tunnel avrà unicamente due IP in uso, uno per sito
Non è necessario impostare nessun altro parametro, come local/remote networks etc.
Adesso andate in Interfaces -> assign -> cliccate il simbolo + per aggiungere una nuova interfaccia e scegliete dalla lista a discesa ‘ovpns1’ (questa è l’iinterfaccia tap di openvpn che avete creato prima):
Adesso andate in Interface -> OPT1 e spuntate “enable this interface”. Potete anche rinominarla OVPN o altro per vostra comodità.
Andate in Interfaces -> Assign. Aprite il tab “Bridges” e cliccate su + per aggiungere un nuovo bridge. Un bridge viene realizzato tra due interfacce, quindi scegliete LAN e OPENVPN per creare il nuovo bridge. Non dovete impostare nessun parametro avanzato:
Ora che il bridge è attivo, dobbiamo creare le sue regole firewall per consentire il passaggio del traffico. Questa è un’altra spettacolare funzione di pfSense: potete applicare tutte le regole che volete al bridge, in modo da filtrare il tipo di traffico che volete raggiunga l’altro lato della connesisone:
Questa prima regola deve essere creata nella sezione WAN, dato che consente all’OpenVPN del sito remoto di connettersi a questo sito.
Vi servirà una regola simile anche nella sezione “openvpnbridge” (il device TAP) per farvi transitare tutto il traffico:
Da qui, tutte le regole per gestire il traffico saranno create nell’interfaccia bridge “OpenVPN”. La prima consentirà tutto il traffico:
Come esempio, la seconda regola vieta al traffico DHCP di attraversare il bridge, così che le VM nel tenant vCloud non possano prendere un indirizzo IP dal DHCP in esecuzione nel sito primario (il gateway assegnato sarebbe errato). Potete creare regole complesse a vostro piacimento. Ricordatevi che pfSense legge tutte le regole e applica la più restrittiva, indipendentemente dall’ordine in cui sono registrate.
Adesso configuriamo l’altro lato del bridge!
Configurare pfSense in vCloud
La configurazione e quasi identica a quella del sito primario, dovrete creare la connessione OpenVPN però nella sezione “Client”. Qui la configurazione apparirà simile alla seguente:
Ci sono alcuni parametri che DEVONO essere uguali all’altro sito:
Server Mode: Peer to Peer: Shared Key
Protocol: UDP
Device Mode: tap
Interface: WAN
Server Host or address: inserite l’IP pubblico dell’altro firewall che agisce da server
Server port: 1194
Shared key: incollate la chiave generata nell’altro firewall
Encryption: impostate la stessa dell’altro firewall
Tunnel Network: 10.0.8.0/29 (la stessa dell’altro firewall)
Anche qui, andate in Interfaces -> Assign -> cliccate sul bottone + e scegliete la network port ovpnc1 per la nuova interfaccia OPT1.
Andate in Interfaces -> OPT1, e per prima cosa abilitatela, potrete anche qui rinominarla in modo che sia più facilmente identificabile, tipo OVPN.
Quindi, come avete fatto nell’altro firewall, andate in Interfaces -> assign -> bridges -> cliccate su + e aggiungete LAN e OVPN al BRIDGE0.
spostatevi in Firewall > Rules, e create una nuova regola nel tab WAN che abbia questi parametri:
Action ‘pass’
Interface WAN
protocol UDP
src:any
dst:any
dest port range: OpenVPN (1194)
Andate nelle regole del tab OpenVPN (l’interfaccia Bridge0), dovreste già trovare una regola che permette tutto il traffico: proto * src * dest *.
Come nell’altro firewall, andate nella sezione OVPN (l’interfaccia tap di OpenVPN), e create la regola per permettere tutto il traffico, come questa:
Da qui in poi, come avete fatto nell’altro firewall, potrete creare ulteriori regole per restringere il traffico che non volete attraversi il bridge, come l’esempio del DHCP di prima.
A questo punto, dovreste essere in grado di pingare gli indirizzi di entrambi i lati del bridge. Anche se non avete altre VM nel tenant vCloud, potete pingare l’interfaccia LAN del pfSense installato in vCloud. Nel mio test, il pfSense locale ha indirizzo 192.168.0.10 e le statistiche di ping mostrano velocità tipiche di una LAN:
mentre l’interfaccia LAN del pfSense remoto ha indirizzo 192.168.0.200, ed è connesso tramite una ADSL a 2mbits:
Questo è quanto! Da qui in poi, godetevi la vostra nuova stretched LAN 🙂