X

LAD Cloud Experts Spanish Blog

VPN IPSec entre Oracle Cloud y otros proveedores Cloud

Andres Jaramillo
Customer Success Manager

Creando una conexión VPN entre Oracle Cloud Infraestructura y otros proveedores cloud.

En este artículo se explica la manera de crear una conexión VPN IPSec segura y encriptada entre Oracle Cloud Infrastructure y diferentes proveedores de nube como Amazon Web Services (AWS), Google Cloud Platform (GCP), entre otros. El proceso se realizará conectando GCP contra OCI, pero puede ser replicado con otras nubes.

 Se dan los pasos para aprovisionar un compute engine en GCP, definiendo la red, reglas de acceso y enrutamientos, todo esto usando Google SDK CLI. Posteriormente se crearán en la consola de OCI el CPE respectivo, el DRG, las listas de seguridad, tablas de ruta y la conexión IPSec hacia GCP.

 

Arquitectura propuesta

 

Libreswan usa los términos “left” y “right” para describir los endpoints. Para este caso se usará la nube de Oracle como LEFT y la de Google como RIGHT.

 

Oracle Cloud Infraestructure

Google Cloud Platform

VCN 10.0.0.0/16

VPC 172.16.0.0/24

VPN IP Address: 140.204.2.51

                              140.204.2.63

Libreswan Public IP:  34.95.28.231

 

(Nota, las IPs públicas de Oracle se obtienen cuando se esté configurando la conexión IPSec, se incluyen acá para dar una guía general)

De acuerdo a los parámetros anteriores iniciamos con la configuración en GCP y para esto usaremos el SDK de Google Cloud

Configuración del lado derecho (Right side), Google Cloud

  1. Crear la VPC

gcloud compute networks subnets create vpn-subnet --network vpn-network  --region northamerica-northeast1  --range 172.16.0.0/24

 

 

  1. Crear dos instancias una donde se instalará Libreswan y otra para realizar pruebas de conexión

gcloud compute instances create vpn-libreswan --image-family centos-8 --image-project centos-cloud --can-ip-forward  --subnet vpn-subnet --zone northamerica-northeast1-a  --tags vpn-gateway

gcloud compute instances create test-vpn --image-family centos-8 --image-project centos-cloud --subnet vpn-subnet --tags vpn --zone northamerica-northeast1-b

 

 

  1. Crear la ruta dentro de la VPC para que la instancia de libreswan sirva de Gateway cuando el destino es Oracle Cloud

gcloud compute routes create vpnnetwork-to-gateway --destination-range 10.0.0.0/16 --next-hop-address 172.16.0.6 --network vpn-network  --tags vpn

 

 

  1. Crear las diferentes reglas de firewall que permitan la conexión VPN (puertos 4500-500 TCP/UDP), el acceso ssh a la instancia de libreswan, la comunicación interna entre las instancias del rango 172.16.0.0/24 y el acceso desde la VCN de Oracle Cloud (10.0.0.0/16).

gcloud compute firewall-rules create ssh --source-ranges 0.0.0.0/0  --allow tcp:22  --network vpn-network

gcloud compute firewall-rules create allow-internal --source-ranges 172.16.0.0/24 --allow tcp:1-65535,udp:1-65535,icmp  --network vpn-network

gcloud compute firewall-rules create allow-ipsec-nat --source-ranges 0.0.0.0/0  --allow tcp:4500,tcp:500,udp:4500,udp:500 --network vpn-network --target-tags vpn-gateway

gcloud compute firewall-rules create from-onprem --source-ranges  10.0.0.0/16 --allow tcp:1-65535,udp:1-65535,icmp --network vpn-network --target-tags vpn

 

  1. Instalar Libreswan en la instancia vpn-libreswan.

sudo yum install libreswan

 

Antes de seguir con la configuración de libreswan, se debe terminar de aprovisionar el CPE, DRG, tabla de ruta y lista de seguridad en Oracle Cloud Infraestructure. El dato del CPE es la dirección pública de la instancia de libreswan. 34.95.28.231

 

Configuración del lado izquierdo (Left side), Oracle Cloud

 

  1. Configurar DRG y CPE en Oracle Cloud

CPE de GCP

EL DRG está asociado a la VCN 10.0.0.0/16

 

  1. Configurar la conexión IPSEC, con la  información de la red privada de GCP cómo una ruta estática  y los elementos creados anteriormente ( CPE y DRG)

     

Luego de creada la conexión IPSec, se obtienen las ips públicas de parte de Oracle para la configuración de la vpn libreswan. IP 140.204.2.51 y 140.204.2.63

      

Se debe editar cada túnel para usar IKEv2 en la configuración de la VPN.

       

Obtemenos el PSK para la autenticación

 

  1. En la Lista de Seguridad asociada a la subnet, se añaden las reglas de ingreso para los puertos 4500, 500 TCP  / UDP.  El origen puede ser 0.0.0.0/0 pero se filtra específicamente a la IP Publica de la instancia de Libreswan

  1. Actualizar la Tabla de Ruta e incluir la regla hacia la red de GCP (172.16.0.0/24) con tipo de destino al DRG creado anteriormente.

 

Finalizando la configuración de la VPN en Libreswan.

Ahora, en la instancia de Libreswan en Google Cloud Platform se crea un archivo de configuración llamado, oci.conf.  en la ruta /etc/ipsec.d/

conn oci1
     authby=secret
     auto=start
     salifetime=3600s
     leftid=140.204.2.51           #OCI DRG IPSec Public IP
     left=140.204.2.51             #OCI DRG IPSec Public IP
     leftsubnet=0.0.0.0/0          
     right=172.16.0.6              #GCP Libreswan local VPC internal address
     rightid=34.95.28.231          #GCP Libreswan Public IP address
     rightsubnet=0.0.0.0/0         #GCP VPC CIDR
     mark=5/0xffffffff
     vti-interface=vti0
     vti-routing=no
     ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s

conn oci2
     authby=secret
     auto=start
     salifetime=3600s
     leftid=140.204.2.63           #OCI DRG IPSec Public IP
     left=140.204.2.63             #OCI DRG IPSec Public IP
     leftsubnet=0.0.0.0/0          
     right=172.16.0.6              #GCP Libreswan local VPC internal address
     rightid=34.95.28.231          #GCP Libreswan Public IP address
     rightsubnet=0.0.0.0/0         #GCP VPC CIDR
     mark=6/0xffffffff
     vti-interface=vti2
     vti-routing=no
     ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s

 

Y para la autenticación se crea un archivo con el siguiente formato que contenga las llaves secreta de los dos tuneles IPSec de la consola de OCI.

/etc/ipsec.d/oci.secrets

#OCI_-IP-IPSEC-Tunels   GCP_Libreswan-PublicIP   :   PSK    "DRG Secret Key"

 

140.204.2.51                34.95.28.231         :   PSK       "xxxxxxxx"

140.204.2.63                34.95.28.231         :   PSK       "zzzzzzzz"

 

Y dentro de la instancia de libreswan se añade la ruta estática para enviar el tráfico a la VCN a través de los tuneles IPSec

ip route add 10.0.0.0/16 nexthop dev vti0 nexthop dev vti2

 

Se configura el IP Forwarding en la instancia. En el archivo /etc/sysctl.conf se ingresan los siguientes valores y aplican con el comando sudo 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

Se reinicia el servicio IPSec

service ipsec restart

 

Y se verifica el status de la VPN.

ipsec status

 

Y si todo es correcto, al final debemos ver dos líneas que incluye

STATE_V2_IPSEC_I (IPsec SA established)

Y en la consola de OCI

 

Probando conectividad entre nubes

Desde una instancia en GCP se accede a una máquina de Oracle Cloud

 

Y desde una instancia compute de OCI hacia un cliente en GCP, se prueba el acceso por ssh

 

Más Información 

https://blogs.oracle.com/lad-cloud-experts/es/conexión-segura-entre-oci-y-on-prem-a-través-de-vpn-ipsec

https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/libreswan.htm

https://docs.cloud.oracle.com/iaas/Content/Network/Reference/libreswanCPE.htm

https://blogs.oracle.com/cloud-infrastructure/creating-a-secure-connection-between-oracle-cloud-infrastructure-and-other-cloud-providers

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.