La risorsa Italiana per pfSense

20 luglio 2018

Creare una vpn layer2 con pfSense ed OpenVPN

Con la progressiva diffusione del cloud ibrido, è cresciuta anche la necessità di collegare tramite vpn layer2, due o più siti aziendali mantenendo un unica subnet. Detto in maniera più sintetica creare una stretched LAN tra i siti.

La caratteristica principale di questo tipo di connessione è quella di sostituire il routing (Layer 3) con il bridging (Layer 2). Entrambe le soluzioni hanno pro e contro, ma lo scopo di quest'articolo non è analizzare quale e quando sia meglio una o l'altra.

Giusto per fare un esempio dei vantaggi di avere una stretched LAN è la possibilità di muovere VM tra un sito e l'altro senza dover cambiare IP, questo si dimostra molto utile quando si vuole fare DR tra siti distinti.

In questa configurazione per creare la nostra stretched lan utilizzeremo due siti: Site A e Site B. Sul Site A  configureremo OpenVPN in modalità server e sul Site B configureremo OpenVPN in modalità Client.
Il tunnel OpenVPN verrà messo in bridge con l'interfaccia Lan di ogni sito in modo che la subnet della Lan del Site B diventi estensione della subnet della Lan del Site A.

Per la nostra configurazione supporremo che:

LAN subnet = 192.168.0.0/24
WAN address Site A = sitea.miosito.ext

Site A

CONFIGURAZIONE DEL SERVER OPENVPN

Selezioniamo VPN > OpenVPN > Servers e clicchiamo su Add;
Impostiamo la VPN come segue
Server mode: Peer to Peer (Shared Key)
Protocol: UDP on IPv4 only
Device mode: tap - Layer 2 Tap Mode
Interface: WAN
Local port: 1194
Description: VPN SiteA to SiteB


Shared Key: Chiave generata
Encryption Algorithm: AES-128-CBC (potete scegliere quello che preferite)
Enable NCP: yes
NCP Algorithms: Elencate gli algoritmi tra cui scegliere
Auth digest algorithm: SHA1 (potete scegliere quello che preferite)


IPv4 Tunnel Network: 10.0.8.0/30 (se le sedi sono due basta una rete di 2 soli IP)


Clicchiamo su Save 

CONFIGURAZIONE DELL'INTERFACCIA OPENVPN

Ora selezioniamo Interfaces > Interfaces Assignments e clicchiamo su Add
Per la rete appena creata selezioniamo come Network port la vpn appena creata es: ovpns1 (VPN SiteA to SiteB)
Ora clicchiamo sul nome dell'interfaccia es: OPT1 
Spuntiamo l'opzione Enable interface
Modifichiamo la description in VPN_BRIDGE
Lasciamo il resto invariato e clicchiamo su Save

 

 

CONFIGURAZIONE DEL BRIDGE

Selezioniamo Interfaces > Assignments > Bridges e clicchiamo su Add
Selezioniamo le interfacce da metter ein bridge
Member Interfaces: LAN, VPN_BRIDGE
Description: SITES_BRIDGE
Clicchiamo su Save

Selezioniamo Firewall > Rules > VPN_BRIDGE e clicchiamo su Add
Aggiungiamo una regola che permetta il tranito di tutto il traffico IPv4

 

In questo punto potrebbe essere utile inserire prima della regola appena creata, delle regole di blocco del traffico che non si vuole far transitare sulla VPN
Es: DHCP (Protocol: udp Port: 67 e 68)

CONFIGURAZIONE DELLE RULES

Selezioniamo Firewall > Rules > WAN e clicchiamo su Add
Aggiungiamo una regola che permetta la pubblicazione del server OpenVPN con protocollo UDP e porta 1194


Per rendere più sicura la connessione possiamo indicare come source l'IP pubblico del Site B

Site B

Ora ripetiamo le stesse operazioni effettuate sul Site B partendo dalla creazione del client OpenVPN

CONFIGURAZIONE DEL CLIENT OPENVPN

Selezioniamo VPN > OpenVPN > Clients e clicchiamo su Add;
Impostiamo la VPN come segue
Server mode: Peer to Peer (Shared Key)
Protocol: UDP on IPv4 only
Device mode: tap - Layer 2 Tap Mode
Interface: WAN
Server host or address: sitea.miosito.ext
Server port: 1194
Description: VPN SiteA to SiteB

Shared Key: Chiave generata del server
Encryption Algorithm: AES-128-CBC (Algoritmo impostato sul server)
Enable NCP: yes
NCP Algorithms: Elencate gli algoritmi tra cui scegliere
Auth digest algorithm: SHA1 (Algoritmo impostato sul server)

Clicchiamo su Save

CONFIGURAZIONE DELL'INTERFACCIA OPENVPN

Ora selezioniamo Interfaces > Interfaces Assignments e clicchiamo su Add
Per la rete appena creata selezioniamo come Network port la vpn appena creata es: ovpnc1 (VPN SiteA to SiteB)
Ora clicchiamo sul nome dell'interfaccia es: OPT1 
Spuntiamo l'opzione Enable interface
Modifichiamo la description in VPN_BRIDGE
Lasciamo il resto invariato e clicchiamo su Save

CONFIGURAZIONE DEL BRIDGE

Selezioniamo Interfaces > Assignments > Bridges e clicchiamo su Add
Selezioniamo le interfacce da metter ein bridge
Member Interfaces: LAN, VPN_BRIDGE
Description: SITES_BRIDGE
Clicchiamo su Save

CONFIGURAZIONE DELLE RULES

Selezioniamo Firewall > Rules > VPN_BRIDGE e clicchiamo su Add
Aggiungiamo una regola che permetta il tranito di tutto il traffico IPv4

In questo punto potrebbe essere utile inserire prima della regola appena creata, delle regole di blocco del traffico che non si vuole far transitare sulla VPN
Es: DHCP (Protocol: udp Port: 67 e 68)

TEST FINALE

A questo punto la configurazione è conclusa e se tutto è stato fatto correttamente dovrà essere possibile effettuare un ping da una sede verso l'altra.

5 commenti:

Giuseppe ha detto...

ciaoo. Ho provato a seguire la tua guida ma non funziona: se faccio il ping dal webconfigurator di un firewall verso l'altro si vedono, ma i rispettivi client in rete no. è come se non funzionasse il bridging.

Anonimo ha detto...

Ciao,
Anch'io ho lo stesso problema.
La vpn va su ma non c'è ping tranne tra firewall e firewall
Cercato su google ma non ho trovato risoluzione.

Fabio Viganò ha detto...

Dopo molto tempo sono riuscito a riprodurre il problema segnalato da molti, o almeno credo di averlo scovato. Se i test sono stati fatti con un pfsense virtualizzato su vmware occorre attivare la modalità promiscua sul vSwitch a cui è connessa la lan di pfsense.
In caso contrario i due firewall instaurano la VPN, si vedono tra di loro, ma i devices non riescono a comunicare.

Gius ha detto...

Ottimo tutorial , avevo la necessità di costruire un bridge L2TP ta due reti durante la migrazione di un sito ed il setup ha funzionato ottimamente.

Anonimo ha detto...

Bel tutorial e soprattutto funzionante!
Domanda: ho implementato la configurazione di cui sopra, nella stazione pfsense locale (lan1 + wan1 + wan2) - ho dedicato la wan1 al bridging, vorrei dedicare la wan2 al traffico internet per tutti i dispositivi presenti sulla lan, instradando il traffico lan sul bridge e quello verso internet sulla wan2, ma non sono riuscito a fare in modo che funzioni correttamente.
Avresti mica indicazioni su come impostare correttamente le regole del firewall e del nat per riuscire nell'intento? Grazie

Nome

Email *

Messaggio *