Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Establecimiento de una VPN con Oracle Cloud Infrastructure mediante una dirección IP pública dinámica
Introducción
Oracle Cloud Infrastructure (OCI) no soporta el uso del sistema de nombres de dominio (DNS) para configurar el equipo local de cliente (CPE) como punto final de túnel VPN. Este tutorial tiene como objetivo permitir que las pequeñas empresas que no tienen acceso a una dirección IP pública estática utilicen el servicio IPSec incluso con una dirección dinámica. La estrategia implica desplegar un script capaz de generar automáticamente un nuevo túnel de OCI siempre que cambie la IP pública del equipo local de cliente (CPE).
Nota: En este tutorial, las dos últimas líneas del archivo de script de shell se utilizan para actualizar la dirección IP y el secreto compartido del nuevo punto final creado en OCI dentro de mi enrutador (MikroTik). Dependiendo de su router, necesita actualizarlo para reflejar estos dos valores.
Objetivo
- Cree un nuevo túnel VPN de sitio a sitio de Oracle Cloud Infrastructure con la nueva dirección IP de CPE actualizada.
Requisitos
-
Registro DNS actualizado dinámicamente que apunta a su dirección IP CPE pública.
-
Una máquina virtual (VM) de Linux.
-
Instale
sshpass
en la máquina virtual de Linux. En este tutorial, se utilizará para enviar comandos al enrutador MikroTik. -
Instalación y configuración de la interfaz de línea de comandos de Oracle Cloud Infrastructure (CLI de OCI).
-
Genere una clave de API. Para obtener más información, consulte Cómo generar una clave de firma de API.
Configuración de una VPN con Oracle Cloud Infrastructure
-
Para lograr una conexión VPN IPSec estable con OCI para una actualización de dirección IP de CPE, debe configurar un registro DNS actualizado dinámicamente. Hay varios proveedores de DNS públicos que admiten esta función. Seleccione su favorito y configúrelo. (Ejemplo: Cloudns.net)
Después de registrar y configurar un registro de DNS dinámico público, puede configurar la VM de linux.
-
Una vez que la máquina virtual de Linux esté activa y en ejecución, instale la CLI de OCI para que funcione en su arrendamiento de OCI desde esta máquina. Para obtener más información, consulte instalación y configuración de la CLI de OCI.
-
Instale la aplicación
sshpass
en caso de que necesite utilizarla para actualizar la configuración del enrutador Mikrotik privado.sudo apt-get install sshpass
-
Cree el archivo
.sh
, copie el siguiente script en el archivo y hágalo ejecutable. Recuerde modificar el script con los datos, el ID de compartimento, el ID de DRG y el nombre de DNS que apunta a su CPE.Nota: Puede encontrar la ruta de oci que ejecuta este comando en el terminal:
which oci
Nota: La última sección de la secuencia de comandos, dedicada al enrutador MikroTik, solo es necesaria si utiliza un enrutador MikroTik. De lo contrario, debe implantar los comandos para actualizar la dirección IP del punto final del túnel de OCI y el secreto compartido en el enrutador.
nano VPN_update.sh
#!/bin/bash #OCI variables export compartment_id=ocid1.compartment.oc1… #your OCI compartment ID export drg_id=ocid1.drg.oc1.eu-frankfurt-1… #your DRG ID export DNS_cpe=YOUR_DYNAMIC_DNS_RECORD_POINT_TO_YOUR_CPE #(example: your-domain.com) #Mikrotik variables export static_routes=192.168.1.0/24 #(YOUR PRIVATE SUBNET) export router_ip=192.168.1.1 #(YOUR ROUTER PRIVATE IP ADDRESS) export router_user=USER #(YOUR ROUTER USER) export router_password=PWD #(YOUR ROUTER PASSWORD) #oci command path (to find the path of oci command type 'which oci' into the terminal) export oci_path=PATH #(YOUR oci COMMAND PATH. example: /home/ubuntu/bin/oci) export ip_address=$(ping -c 1 $DNS_cpe | gawk -F'[()]' '/PING/{print $2}') check_out=$($oci_path network ip-sec-connection list --compartment-id $compartment_id --all --query "data[?\"cpe-local-identifier\"=='$ip_address']" | sed 's|[[]]||g') if [[ -n $check_out ]] then printf -- "%s\n" "IP of the CPE is not changed - EXIT" exit else printf -- "%s\n" "create new IPSEC tunnel" cpe_id=$($oci_path network cpe create --compartment-id $compartment_id --ip-address $ip_address --query data.id --raw-output) $oci_path network cpe update --cpe-id $cpe_id ipsc_id=$($oci_path network ip-sec-connection create --compartment-id $compartment_id --cpe-id $cpe_id --drg-id $drg_id --static-routes '["$static_routes"]' --query data.id --raw-output) $oci_path network ip-sec-connection update --ipsc-id $ipsc_id tunnel_id1=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[0].id' --raw-output) tunnel_id2=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[1].id' --raw-output) ip_sec_psk1=$($oci_path network ip-sec-psk get --ipsc-id=$ipsc_id --tunnel-id=$tunnel_id1 | grep -oP '(?<="shared-secret": ").*(?=")') ip_sec_psk2=$($oci_path network ip-sec-psk get --ipsc-id=$ipsc_id --tunnel-id=$tunnel_id2 | grep -oP '(?<="shared-secret": ").*(?=")') vpn_ip1=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[0]."vpn-ip"' --raw-output) vpn_ip2=$($oci_path network ip-sec-tunnel list --ipsc-id=$ipsc_id --all --query 'data[1]."vpn-ip"' --raw-output) echo OCI TUNNEL 1 IP and SHARED SECRET echo $vpn_ip1 echo $ip_sec_psk1 echo OCI TUNNEL 2 IP and SHARED SECRET echo $vpn_ip2 echo $ip_sec_psk2 #Mikrotik router update section. (Execute the sshpass command before run this script). Avoid and delete these two rows if you don't need it. sshpass -p '$router_password' ssh $router_user@$router_ip "/ip ipsec/ identity/ set number=0 secret=$ip_sec_psk1" sshpass -p '$router_password' ssh $router_user@$router_ip "/ip ipsec/ peer/ set number=0 address=$vpn_ip1"
chmod +x VPN_update.sh
Nota: La secuencia de comandos puede crear los túneles pero no puede terminar los antiguos. En ocasiones, debe conectarse a la consola de OCI y terminar los túneles VPN de sitio a sitio antiguos de OCI no utilizados o implantar esta función en ella.
-
Agregue el script a
crontab
si desea ejecutarlo automáticamente.Crontab -e
Nota: Agregue la frecuencia y la ruta del script a la última línea de
crontab
. El siguiente comando se debe ejecutar cada 15 minutos.*/15 * * * * YOUR_SCRIPT_PATH/VPN_update.sh
La próxima vez que cambie su dirección IP de CPE, el túnel de OCI se volverá a crear con la nueva dirección IP y el secreto compartido en un máximo de 15 minutos.
Enlaces relacionados
Agradecimientos
- Autor: Marco Santucci (Arquitecto de soluciones en la nube empresarial de EMEA)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Establish a VPN with Oracle Cloud Infrastructure using a Dynamic Public IP Address
F96559-01
April 2024