Libreswan
Libreswan è un'implementazione IPSec open source basata su FreeS/WAN e Openswan. La maggior parte delle distribuzioni Linux includono Libreswan o lo rendono facile da installare. È possibile installarlo sugli host in una rete in locale o in una rete di provider cloud. Per un esempio di impostazione di un host Libreswan in un altro provider cloud per la connessione a una rete cloud virtuale (VCN) Oracle Cloud Infrastructure, vedere Accesso ad altri cloud con Libreswan.
Questo argomento fornisce informazioni sulla configurazione per un CPE che esegue Libreswan. Il supporto dell'interfaccia VTI (Virtual Tunnel Interface) per questa configurazione basata su instradamento richiede il minimo Libreswan versione 3.18 e un recente kernel Linux 3.x o 4.x. La configurazione è stata convalidata utilizzando Libreswan versione 3.29.
Oracle fornisce istruzioni di configurazione per un set testato di fornitori e dispositivi. Utilizzare la configurazione corretta per il fornitore e la versione software.
Se la versione del dispositivo o del software utilizzata da Oracle per verificare la configurazione non corrisponde esattamente al dispositivo o al software, è comunque possibile creare la configurazione necessaria sul dispositivo. Consultare la documentazione del fornitore ed apportare le modifiche necessarie.
Se il dispositivo proviene da un fornitore non incluso nell'elenco dei fornitori e dei dispositivi verificati o se si ha già familiarità con la configurazione del dispositivo per IPSec, vedere l'elenco di parametri IPSec supportati e consultare la documentazione del fornitore per assistenza.
Oracle Cloud Infrastructure offre una VPN da sito a sito, una connessione IPSec sicura tra una rete on-premise e una rete cloud virtuale (VCN).
Il diagramma riportato di seguito mostra una connessione IPSec di base a Oracle Cloud Infrastructure con tunnel ridondanti. Gli indirizzi IP utilizzati in questo diagramma sono solo un esempio.
Procedure ottimali
Questa sezione descrive le best practice generali e le considerazioni da tenere presenti per l'utilizzo della VPN da sito a sito.
Configura tutti i tunnel per ogni connessione IPSec
Oracle distribuisce due headend IPSec per le connessioni per fornire alta disponibilità per i carichi di lavoro mission-critical. Per quanto riguarda Oracle, questi due headend si trovano su router diversi a scopo di ridondanza. Si consiglia di configurare tutti i tunnel disponibili per la massima ridondanza. Questa è una parte fondamentale della filosofia "Design for Failure".
Disporre di CPE ridondanti nelle posizioni di rete in locale
Consigliamo a ogni sito che si connette con IPSec a Oracle Cloud Infrastructure di disporre di dispositivi edge ridondanti (noti anche come customer-premise equipment (CPE)). Ogni CPE viene aggiunto alla console Oracle e viene creata una connessione IPSec separata tra un gateway di instradamento dinamico (DRG) e ogni CPE. Per ogni connessione IPSec, Oracle esegue il provisioning di due tunnel in headend IPSec ridondanti a livello geografico. Per ulteriori informazioni, consulta la Guida alla ridondanza della connettività (PDF).
Considerazioni sul protocollo di instradamento
Quando si crea una connessione VPN da sito a sito IPSec, sono disponibili due tunnel IPSec ridondanti. Oracle ti consiglia di configurare il CPE in modo che utilizzi entrambi i tunnel (se il CPE lo supporta). In passato, Oracle ha creato connessioni IPSec con un massimo di quattro tunnel IPSec.
Sono disponibili i tre tipi di instradamento seguenti e si seleziona il tipo di instradamento separatamente per ogni tunnel nella VPN da sito a sito:
- Instradamento dinamico BGP: gli instradamenti disponibili vengono acquisiti in modo dinamico tramite BGP. Il DRG apprende in modo dinamico gli instradamenti dalla rete in locale. Sul lato Oracle, il gateway DRG pubblica le subnet della VCN.
- Instradamento statico: quando si imposta la connessione IPSec al DRG, si specificano gli instradamenti specifici alla rete in locale di cui si desidera che la VCN sia a conoscenza. Inoltre, devi configurare il dispositivo CPE con instradamenti statici alle subnet della VCN. Questi percorsi non vengono appresi in modo dinamico.
- Instradamento basato su criteri: quando si imposta la connessione IPSec al DRG, si specificano gli instradamenti specifici alla rete in locale di cui si desidera che la VCN sia a conoscenza. Inoltre, devi configurare il dispositivo CPE con instradamenti statici alle subnet della VCN. Questi percorsi non vengono appresi in modo dinamico.
Per ulteriori informazioni sull'instradamento con VPN da sito a sito, inclusi i suggerimenti Oracle su come manipolare l'algoritmo di selezione del percorso migliore BGP, vedere Instradamento per VPN da sito a sito.
Altre importanti configurazioni CPE
Assicurarsi che le liste di accesso nel CPE siano configurate correttamente per non bloccare il traffico necessario da o verso Oracle Cloud Infrastructure.
Se si dispone di più tunnel contemporaneamente, si potrebbe verificare l'instradamento asimmetrico. Per tenere conto dell'instradamento asimmetrico, assicurarsi che il CPE sia configurato per gestire il traffico proveniente dalla VCN in uno qualsiasi dei tunnel. Ad esempio, è necessario disabilitare l'ispezione ICMP, configurare il bypass dello stato TCP. Per ulteriori dettagli sulla configurazione appropriata, contattare il supporto del fornitore CPE. Per configurare l'instradamento in modo che sia simmetrico, vedere Instradamento per VPN da sito a sito.
Grotte e limitazioni
Questa sezione copre le caratteristiche e le limitazioni importanti generali di Site-to-Site VPN di cui essere a conoscenza. Per esaminare un elenco dei limiti applicabili e le istruzioni per richiedere un incremento del limite, consulta i limiti del servizio.
Instradamento asimmetrico
Oracle utilizza il routing asimmetrico tra i tunnel che compongono la connessione IPSec. Configurare i firewall tenendo presente questo aspetto. In caso contrario, i test di ping o il traffico dell'applicazione attraverso la connessione non funzionano in modo affidabile.
Quando utilizzi diversi tunnel per Oracle Cloud Infrastructure, ti consigliamo di configurare l'instradamento per instradare il traffico in modo deterministico attraverso il tunnel preferito. Per utilizzare un tunnel IPSec come primario e un altro come backup, configurare instradamenti più specifici per il tunnel primario (BGP) e instradamenti meno specifici (instradamento sintetico o predefinito) per il tunnel di backup (BGP/statico). In caso contrario, se si pubblica lo stesso instradamento (ad esempio, un instradamento predefinito) attraverso tutti i tunnel, restituire il traffico da una VCN a un instradamento di rete in locale a uno qualsiasi dei tunnel disponibili. Questo perché Oracle utilizza l'instradamento asimmetrico.
Per suggerimenti di instradamento Oracle specifici su come forzare l'instradamento simmetrico, vedere Instradamento per VPN da sito a sito.
VPN da sito a sito basata su instradamento o criteri
Il protocollo IPSec utilizza le associazioni di sicurezza (SA) per decidere come cifrare i pacchetti. All'interno di ogni SA, è possibile definire i domini di cifratura per mappare l'indirizzo IP di origine e destinazione di un pacchetto e il tipo di protocollo a una voce nel database SA per definire come cifrare o decifrare un pacchetto.
Altri fornitori o la documentazione del settore possono utilizzare il termine ID proxy, indice dei parametri di sicurezza (SPI) o selettore del traffico quando si fa riferimento a SA o domini di cifratura.
Esistono due metodi generali per l'implementazione dei tunnel IPSec:
- Tunnel basati su instradamento: chiamato anche tunnel basati sul prossimo hop. La ricerca della tabella di instradamento viene eseguita sull'indirizzo IP di destinazione di un pacchetto. Se l'interfaccia di uscita di tale instradamento è un tunnel IPSec, il pacchetto viene cifrato e inviato all'altra estremità del tunnel.
- Tunnel basati su criteri: l'indirizzo IP e il protocollo di origine e destinazione del pacchetto corrispondono a una lista di istruzioni dei criteri. Se viene trovata una corrispondenza, il pacchetto viene cifrato in base alle regole in tale istruzione di criterio.
I backend VPN da sito a sito Oracle utilizzano tunnel basati su instradamento, ma possono funzionare con tunnel basati su criteri con alcune avvertenze elencate nelle sezioni riportate di seguito.
Grotta di Libreswan 3.25
Se un dispositivo CPE utilizza Libreswan 3.25 o versione precedente e si tenta di impostare una connessione IKEv1 con un CPE come rispondente, è necessario impostare in modo esplicito il parametro di fase 2 in una configurazione CPE affinché venga attivato il tunnel IPSec. Ad esempio, utilizzando l'algoritmo di cifratura consigliato corrente AES-256-gcm e PFS group5, è necessario configurare il parametro di fase 2 phase2alg="aes_gcm256;modp1536"
sul dispositivo CPE.
Questo problema non si verifica nelle release successive di Libreswan.
Se il CPE supporta tunnel basati su instradamento, utilizzare tale metodo per configurare il tunnel. Questa è la configurazione più semplice con la massima interoperabilità con l'headend VPN di Oracle.
IPSec basato su instradamento utilizza un dominio di cifratura con i valori riportati di seguito.
- Indirizzo IP di origine: qualsiasi (0.0.0.0/0)
- Indirizzo IP di destinazione: qualsiasi (0.0.0.0/0)
- Protocollo: IPv4
Se è necessario essere più specifici, è possibile utilizzare un unico instradamento di riepilogo per i valori del dominio di cifratura anziché un instradamento predefinito.
Quando si utilizzano i tunnel basati su criteri, ogni voce di criterio (un blocco CIDR su un lato della connessione IPSec) definita genera un'associazione di sicurezza (SA) IPSec con ogni voce idonea sull'altra estremità del tunnel. Questa coppia viene definita dominio di cifratura.
In questo diagramma, l'estremità DRG Oracle del tunnel IPSec contiene voci dei criteri per tre blocchi CIDRIPv4 CIDR IPv4 e un blocco CIDR IPv6. La fine CPE in locale del tunnel contiene le voci dei criteri due blocchi CIDRIPv4 CIDR IPv4 e due blocchi CIDR IPv6. Ogni voce genera un dominio di cifratura con tutte le voci possibili sull'altra estremità del tunnel. Entrambi i lati di una coppia SA devono utilizzare la stessa versione di IP. Il risultato è un totale di otto domini di cifratura.
Se il CPE supporta solo tunnel basati su criteri, tenere presenti le limitazioni riportate di seguito.
- La VPN da sito a sito supporta più domini di cifratura, ma ha un limite massimo di 50 domini di cifratura.
- Se si è verificata una situazione simile all'esempio precedente e sono stati configurati solo tre dei sei possibili domini di cifratura IPv4 sul lato CPE, il collegamento verrà elencato in uno stato "Partial UP" poiché tutti i possibili domini di cifratura vengono sempre creati sul lato DRG.
- A seconda di quando è stato creato un tunnel, potrebbe non essere possibile modificare un tunnel esistente per utilizzare l'instradamento basato su criteri e potrebbe essere necessario sostituire il tunnel con un nuovo tunnel IPSec.
- I blocchi CIDR utilizzati all'estremità del tunnel del DRG Oracle non possono sovrapporsi ai blocchi CIDR utilizzati all'estremità CPE in locale del tunnel.
- Un dominio di cifratura deve sempre trovarsi tra due blocchi CIDR della stessa versione IP.
Se il CPE si trova dietro un dispositivo NAT
In generale, l'identificativo CPE IKE configurato all'estremità in locale della connessione deve corrispondere all'identificativo CPE IKE utilizzato da Oracle. Per impostazione predefinita, Oracle utilizza l'indirizzo IP pubblico del CPE, fornito quando si crea l'oggetto CPE nella console Oracle. Tuttavia, se un CPE si trova dietro un dispositivo NAT, l'identificativo CPE IKE configurato all'interno dell'ambiente on premise potrebbe essere l'indirizzo IP privato del CPE, come mostrato nel diagramma seguente.
Alcune piattaforme CPE non consentono di modificare l'identificativo IKE locale. In caso contrario, è necessario modificare l'ID IKE remoto nella console Oracle per trovare la corrispondenza con l'ID IKE locale del CPE. È possibile fornire il valore quando si imposta la connessione IPSec o in un secondo momento modificando la connessione IPSec. Oracle prevede che il valore sia un indirizzo IP o un nome dominio completamente qualificato (FQDN), ad esempio cpe.example.com. Per istruzioni, consulta la sezione relativa alla modifica dell'identificativo CPE IKE utilizzato da Oracle.
Parametri IPSec supportati
Per un elenco dei parametri IPSec supportati indipendentemente dal fornitore per tutte le aree, vedere Parametri IPSec supportati.
L'ASN BGP Oracle per il realm del cloud commerciale è 31898. Se si sta configurando una VPN da sito a sito per il cloud del governo degli Stati Uniti, vedere Parametri VPN da sito a sito obbligatori per Government Cloud e anche ASN BGP di Oracle. Per il cloud del governo del Regno Unito, consulta la sezione relativa alle aree.
Configurazione CPE
Le istruzioni di configurazione in questa sezione sono fornite da Oracle Cloud Infrastructure per questo CPE. Se hai bisogno di supporto o ulteriore assistenza, contatta direttamente il supporto del fornitore CPE.
La figura seguente mostra il layout di base della connessione IPSec.
File di configurazione predefiniti di Libreswan
L'installazione predefinita di Libreswan crea i seguenti file:
etc/ipsec.conf
: la root della configurazione Libreswan./etc/ipsec.secrets
: la radice della posizione in cui Libreswan cerca i segreti (le chiavi precondivise del tunnel)./etc/ipsec.d/
: directory per la memorizzazione dei file.conf
e.secrets
per i tunnel di Oracle Cloud Infrastructure (ad esempio:oci-ipsec.conf
eoci-ipsec.secrets
). Libreswan ti incoraggia a creare questi file in questa cartella.
Il file etc/ipsec.conf
predefinito include la riga seguente:
include /etc/ipsec.d/*.conf
Il file etc/ipsec.secrets
predefinito include la riga seguente:
include /etc/ipsec.d/*.secrets
Le righe precedenti uniscono automaticamente tutti i file .conf
e .secrets
nella directory /etc/ipsec.d
ai file di configurazione e segreti principali utilizzati da Libreswan.
Informazioni sull'utilizzo di IKEv2
Oracle supporta Internet Key Exchange versione 1 (IKEv1) e versione 2 (IKEv2). Se si configura la connessione IPSec nella console per utilizzare IKEv2, è necessario configurare il CPE in modo che utilizzi solo i parametri di cifratura IKEv2 e IKEv2 correlati supportati dal CPE. Per un elenco dei parametri supportati da Oracle per IKEv1 o IKEv2, vedere Parametri IPSec supportati.
La versione IKE viene specificata durante la configurazione del file di configurazione IPSec nel task 3 della sezione successiva. Questo file di esempio mostra un commento che mostra come configurare IKEv1 rispetto a IKEv2.
Processo di configurazione
Libreswan supporta sia i tunnel basati su instradamento che quelli basati su criteri. I tipi di tunnel possono coesistere senza interferire tra loro. I backend VPN Oracle utilizzano tunnel basati su instradamento. Si consiglia di configurare Libreswan con la sintassi di configurazione dell'interfaccia VTI (Virtual Tunnel Interface).
Per informazioni dettagliate sui parametri specifici utilizzati nel presente documento, vedere Parametri IPSec supportati.
A seconda della distribuzione Linux in uso, potrebbe essere necessario abilitare l'inoltro IP su un'interfaccia per consentire ai client di inviare e ricevere traffico tramite Libreswan. Nel file /etc/sysctl.conf
, impostare i seguenti valori e applicare gli aggiornamenti con sudo sysctl -p
.
Se si utilizza un'interfaccia diversa da eth0, modificare eth0
nell'esempio seguente nell'interfaccia (righe 5 e 7).
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
La configurazione di Libreswan utilizza le variabili indicate di seguito. Decidere i valori prima di procedere con la configurazione.
${cpeLocalIP}
: l'indirizzo IP del dispositivo Libreswan.${cpePublicIpAddress}
: l'indirizzo IP pubblico per Libreswan. Questo è l'indirizzo IP dell'interfaccia esterna. A seconda della topologia di rete, il valore può essere diverso da${cpeLocalIP}
.${oracleHeadend1}
: per il primo tunnel, l'endpoint IP pubblico Oracle ottenuto dalla console Oracle.${oracleHeadend2}
: per il secondo tunnel, l'endpoint IP pubblico Oracle ottenuto dalla console Oracle.${vti1}
: il nome del primo VTI utilizzato. Ad esempio, vti1.${vti2}
: il nome del secondo VTI utilizzato. Ad esempio, vti2.${sharedSecret1}
: la chiave precondivisa per il primo tunnel. È possibile utilizzare la chiave predefinita precondivisa fornita da Oracle o fornirne una quando si imposta la connessione IPSec nella console Oracle.${sharedSecret2}
: la chiave precondivisa per il secondo tunnel. È possibile utilizzare la chiave predefinita precondivisa fornita da Oracle o fornirne una quando si imposta la connessione IPSec nella console Oracle.${vcnCidrNetwork}
: intervallo IP VCN.
La configurazione di Libreswan utilizza il concetto di sinistra e destra per definire i parametri di configurazione per un dispositivo CPE locale e per il gateway remoto. Entrambi i lati della connessione (la connessione nella configurazione di Libreswan) possono essere a sinistra o a destra, ma la configurazione di tale connessione deve essere coerente. In questo esempio:
- sinistra: il CPE Libreswan locale
- a destra: il headend Oracle VPN
Utilizzare il seguente modello per il file /etc/ipsec.d/oci-ipsec.conf
. Il file definisce i due tunnel creati da Oracle quando si imposta la connessione IPSec.
Se il CPE si trova dietro un dispositivo NAT da 1 a 1, annullare il pagamento del parametro leftid
e impostarlo su ${cpePublicIpAddress}
.
conn oracle-tunnel-1
left=${cpeLocalIP}
# leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
right=${oracleHeadend1}
authby=secret
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
auto=start
mark=5/0xffffffff # Needs to be unique across all tunnels
vti-interface=${vti1}
vti-routing=no
ikev2=no # To use IKEv2, change to ikev2=insist
ike=aes_cbc256-sha2_384;modp1536
phase2alg=aes_gcm256;modp1536
encapsulation=yes
ikelifetime=28800s
salifetime=3600s
conn oracle-tunnel-2
left=${cpeLocalIP}
# leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
right=${oracleHeadend2}
authby=secret
leftsubnet=0.0.0.0/0
rightsubnet=0.0.0.0/0
auto=start
mark=6/0xffffffff # Needs to be unique across all tunnels
vti-interface=${vti2}
vti-routing=no
ikev2=no # To use IKEv2, change to ikev2=insist
ike=aes_cbc256-sha2_384;modp1536
phase2alg=aes_gcm256;modp1536
encapsulation=yes
ikelifetime=28800s
salifetime=3600s
Utilizzare il seguente modello per il file /etc/ipsec.d/oci-ipsec.secrets
. Contiene due righe per connessione IPSec (una riga per tunnel).
${cpePublicIpAddress} ${oracleHeadend1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${oracleHeadend2}: PSK "${sharedSecret2}"
Dopo aver configurato i file di configurazione e i file secret, è necessario riavviare il servizio Libreswan.
Il riavvio del servizio Libreswan potrebbe influire sui tunnel esistenti.
Il comando seguente rilegge il file di configurazione e riavvia il servizio Libreswan.
service ipsec restart
Utilizzare il seguente comando ip
per creare instradamenti statici che inviano traffico a una VCN tramite i tunnel IPSec. Se è stato eseguito il login con un account utente senza privilegi, potrebbe essere necessario utilizzare sudo
prima del comando.
Gli instradamenti statici creati con il comando
ip route
non persistono durante un reboot. Per decidere come rendere persistenti gli instradamenti, consultare la documentazione della distribuzione Linux scelta.ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show
Verifica
Un servizio di monitoraggio è disponibile anche da Oracle Cloud Infrastructure per monitorare attivamente e passivamente le risorse cloud. Per informazioni sul monitoraggio di una VPN da sito a sito, vedere Metriche VPN da sito a sito.
In caso di problemi, vedere Risoluzione dei problemi delle VPN da sito a sito.
Verifica dello stato di Libreswan
Verificare lo stato corrente dei tunnel Libreswan utilizzando il comando seguente.
ipsec status
Il tunnel viene stabilito se viene visualizzata una linea che include quanto segue:
STATE_MAIN_I4: ISAKMP SA established
Se si utilizza IKEv2, è possibile visualizzare quanto segue:
STATE_V2_IPSEC_I (IPsec SA established)
In futuro, se è necessario aprire un ticket di supporto con Oracle per un tunnel Libreswan, includere l'output del comando ipsec status
precedente.
Verifica dello stato dell'interfaccia tunnel
Verificare che le interfacce del tunnel virtuale siano attive o inattive utilizzando il comando ifconfig
o ip link show
. È anche possibile utilizzare applicazioni quali tcpdump con le interfacce.
Di seguito è riportato un esempio dell'output ifconfig
con un'implementazione Libreswan funzionante che mostra i VTI disponibili.
ifconfig
<output trimmed>
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
tunnel txqueuelen 1000 (IPIP Tunnel)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0
vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
tunnel txqueuelen 1000 (IPIP Tunnel)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0
Di seguito è riportato un esempio dell'output ip link show
.
ip link show
<output trimmed>
9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 10.0.0.2 peer 129.213.240.52
10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 10.0.0.2 peer 129.213.240.51
Inoltre, nella console Oracle, ogni tunnel IPSec dovrebbe essere nello stato UP.