Accesso ad altri cloud con 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 nella rete in locale o in una rete di provider cloud. Questo argomento mostra come connettere la rete VCN (Virtual Cloud Network) Oracle Cloud Infrastructure a un altro provider cloud utilizzando la VPN da sito a sito con una VM Libreswan come CPE (Customer-premise Equipment).
Nell'esempio qui mostrato, l'altro provider cloud è Amazon Web Services (AWS). La VPN da sito a sito fornisce una connessione IPSec sicura e cifrata tra gli ambienti Oracle e Amazon. Consente alle risorse nei due cloud di comunicare tra loro utilizzando gli indirizzi IP privati come se si trovassero nello stesso segmento di rete.
Per tutti gli altri casi d'uso è disponibile anche la guida per il CPE di 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.
Architettura
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
Le istruzioni di configurazione fornite in questa sezione sono fornite da Oracle Cloud Infrastructure for Libreswan. Per assistenza o ulteriore assistenza, consultare la documentazione di Libreswan.
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. Oracle consiglia di configurare Libreswan con la sintassi di configurazione dell'interfaccia VTI (Virtual Tunnel Interface).
Per ulteriori informazioni sui parametri specifici utilizzati nel presente documento, vedere Parametri IPSec supportati.
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 4 della sezione successiva. In quel file di esempio, c'è un commento che mostra come configurare IKEv1 rispetto a IKEv2.
Processo di configurazione
- Utilizzando la console o le API AWS, creare una VM Libreswan utilizzando il relativo processo di provisioning. Come sistema operativo principale, utilizzare Oracle Linux, CentOS o Red Hat.
-
Dopo l'avvio della nuova istanza, connettersi ad essa con SSH e installare il pacchetto Libreswan:
sudo yum -y install libreswan
-
Nella console AWS, disabilitare i controlli di origine e destinazione sull'istanza VM Libreswan facendo clic con il pulsante destro del mouse sull'istanza, facendo clic su Networking e quindi su Modifica origine/destinazione. Seleziona. Quando richiesto, fare clic su Sì, Disabilita.
-
Nella VM Libreswan, configurare IP_forward per consentire ai client AWS di inviare e ricevere traffico tramite la VM Libreswan. Nel file
/etc/sysctl.conf
, impostare i seguenti valori e applicare gli aggiornamenti consudo sysctl -p
.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
-
Nella console AWS, modificare la tabella di instradamento AWS. Aggiungere una regola con il CIDR VCN (172.0.0.0/16) come destinazione e l'ID istanza AWS Libreswan (i-016ab864b43cb368e in questo esempio) come destinazione.
-
Nella console AWS, abilitare il traffico TCP e UDP in entrata sulle porte 4500 e 500 per consentire una connessione IPSec Oracle Cloud Infrastructure Site-to-Site VPN con la VM AWS Libreswan. Questo task include la modifica sia dei gruppi di sicurezza AWS che delle ACL di rete. È possibile impostare il valore di origine può essere l'IP pubblico Oracle (endpoint tunnel IPSec headend Oracle VPN) anziché 0.0.0.0/0.
Per i gruppi di sicurezza:
Per le ACL di rete:
-
Nella console Oracle, creare un oggetto CPE (Customer-premise Equipment) che punti all'indirizzo IP pubblico dell'istanza AWS Libreswan (34.200.255.174). A tale scopo, è possibile utilizzare l'applicazione di supporto per la configurazione CPE.
-
Se alla VCN non è già collegato un DRG: nella console Oracle, creare un DRG, quindi collegarlo alla VCN (172.0.0.0/16).
-
Nella console Oracle, creare una connessione IPSec e indirizzarla al CIDR VPC AWS (10.0.0.0/16). In altre parole, quando si crea la connessione IPSec, impostare il relativo instradamento statico sul CIDR VPC AWS.
Per ogni connessione IPSec configurata, Oracle crea due tunnel e assegna questi elementi a ciascuno di essi:
- Endpoint tunnel IPSec headend VPN Oracle
- Segreto condiviso tunnel VPN Oracle
È possibile visualizzare lo stato del tunnel IPSec e l'IP headend VPN Oracle facendo clic sul
per la connessione IPSec, quindi su Visualizza dettagli. Inizialmente ogni tunnel è in stato DOWN (offline) perché è ancora disponibile una configurazione aggiuntiva da eseguire in seguito sulla VM Libreswan AWS.Per visualizzare il segreto condiviso, fare clic sul menu Azioni
per un singolo tunnel, quindi fare clic su Visualizza dettagli. Accanto a Segreto condiviso, fare clic su Mostra.
-
Nella console Oracle, modificare le regole di sicurezza della VCN per abilitare il traffico TCP e UDP in entrata sulle porte 4500 e 500 come hai fatto per i gruppi di sicurezza AWS e le ACL di rete. È possibile utilizzare l'indirizzo IP pubblico della VM AWS Libreswan anziché 0.0.0.0/0 se si tratta di un IP pubblico persistente. Aprire anche tutti i protocolli e le porte per il traffico in entrata dal CIDR VPC AWS (10.0.0.0/16). Ricorda: gli elenchi di sicurezza sono associati a una subnet, quindi modifica la lista di sicurezza associata a ogni subnet che deve comunicare con AWS VPC. In alternativa, se si utilizzano i gruppi di sicurezza di rete della VCN, modificare le regole nei gruppi NSG pertinenti.
-
Nella console Oracle, modificare le tabelle di instradamento della VCN per aggiungere una regola con il CIDR VPC AWS (10.0.0.0/16) come blocco CIDR di destinazione e il DRG creato in precedenza come destinazione. Ricorda: le tabelle di instradamento sono associate a una subnet, quindi modifica la tabella di instradamento associata a ogni subnet che deve comunicare con AWS VPC.
La configurazione di Libreswan utilizza le variabili indicate di seguito. Determinare 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 della tua interfaccia esterna. A seconda della topologia di rete, il valore potrebbe 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 oppure fornire una chiave personalizzata 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 oppure fornire una chiave personalizzata quando si imposta la connessione IPSec nella console Oracle.${vcnCidrNetwork}
: intervallo IP VCN.
La configurazione Libreswan usa il concetto di sinistra e destra per definire i parametri di configurazione per il 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: CPE Libreswan locale
- Destro: 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} ${ipAddress1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${sharedSecret2}"
Dopo aver impostato i file di configurazione e i file secret, è necessario riavviare il servizio Libreswan con il comando seguente.
Il riavvio del servizio Libreswan potrebbe influire sui tunnel esistenti.
service ipsec restart
Utilizzare il seguente comando ip
per creare instradamenti statici che inviano traffico alla 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 dopo un reboot. Per determinare come rendere persistenti i tuoi instradamenti, fai riferimento alla documentazione della tua distribuzione Linux preferita.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 sul tunnel Libreswan, includere l'output del comando ipsec status
precedente.
Controllo dello stato dell'interfaccia tunnel
Controllare se le interfacce del tunnel virtuale sono 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 2001:db8::1 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 2001:db8::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.1.2.3 peer 192.168.0.51
10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 10.1.2.3 peer 192.168.0.49
Inoltre, nella console Oracle, ogni tunnel IPSec dovrebbe essere nello stato UP.