Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Établir un RPV avec Oracle Cloud Infrastructure à l'aide d'une adresse IP publique dynamique
Présentation
Oracle Cloud Infrastructure (OCI) ne prend pas en charge l'utilisation du système de noms de domaine (DNS) pour configurer l'équipement local d'abonné (CPE) en tant que point d'extrémité de tunnel RPV. Ce tutoriel vise à permettre aux petites entreprises qui n'ont pas accès à une adresse IP publique statique d'utiliser le service IPSec, même avec une adresse dynamique. La stratégie consiste à déployer un script capable de générer automatiquement un nouveau tunnel OCI lorsque l'adresse IP publique de l'équipement local d'abonné (CPE) change.
Note : Dans ce tutoriel, les deux dernières lignes du fichier de script d'interpréteur de commandes sont utilisées pour mettre à jour l'adresse IP et la clé secrète partagée du nouveau point d'extrémité créé sur OCI dans mon routeur (MikroTik). Selon votre routeur, vous devez le mettre à jour pour refléter ces deux valeurs.
Objectif
- Créez un tunnel RPV site-à-site Oracle Cloud Infrastructure avec la nouvelle adresse IP de l'équipement local d'abonné mise à jour.
Préalables
-
Enregistrement DNS mis à jour dynamiquement qui pointe vers votre adresse IP d'équipement local d'abonné public.
-
Une machine virtuelle Linux.
-
Installez
sshpass
dans la machine virtuelle Linux. Dans ce tutoriel, vous allez l'utiliser pour envoyer des commandes au routeur MikroTik. -
Installez et configurez l'interface de ligne de commande d'Oracle Cloud Infrastructure.
-
Générez une clé d'API. Pour plus d'informations, voir Comment générer une clé de signature d'API.
Configurer un RPV avec Oracle Cloud Infrastructure
-
Pour obtenir une connexion RPV IPSec stable avec OCI pour une mise à jour d'adresse IP d'équipement local d'abonné, vous devez configurer un enregistrement DNS mis à jour dynamiquement. Plusieurs fournisseurs de DNS publics prennent en charge cette fonction. Sélectionnez votre favori et configurez-le. (Exemple : Cloudns.net)
Après avoir enregistré et configuré un enregistrement DNS dynamique public, vous pouvez configurer votre machine virtuelle linux.
-
Une fois la machine virtuelle Linux en cours d'exécution, installez l'interface de ligne de commande OCI pour l'exécuter sur votre location OCI à partir de cet ordinateur. Pour plus d'informations, voir installer et configurer l'interface de ligne de commande OCI.
-
Installez l'application
sshpass
si vous devez l'utiliser pour mettre à jour les paramètres de votre routeur Mikrotik privé.sudo apt-get install sshpass
-
Créez le fichier
.sh
et copiez le script suivant dans le fichier et rendez-le exécutable. N'oubliez pas de modifier le script avec vos données, l'ID compartiment, l'ID passerelle de routage dynamique et le nom DNS qui pointe vers votre équipement local d'abonné.Note : Vous pouvez trouver le chemin oci exécutant cette commande dans votre terminal :
which oci
Note : La dernière section du script, dédiée au routeur MikroTik, n'est nécessaire que si vous utilisez un routeur MikroTik. Sinon, vous devez mettre en oeuvre les commandes pour mettre à jour l'adresse IP du point d'extrémité du tunnel OCI et la clé secrète partagée dans votre routeur.
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
Note : Le script peut créer les tunnels, mais ne peut pas mettre fin aux anciens. Vous devez parfois vous connecter à la console OCI et mettre fin aux anciens tunnels RPV site-à-site OCI inutilisés ou y mettre en oeuvre cette fonction.
-
Ajoutez le script à
crontab
si vous voulez l'exécuter automatiquement.Crontab -e
Note : Ajoutez la fréquence et le chemin du script à la dernière ligne de
crontab
. La commande suivante est destinée à être exécutée toutes les 15 minutes.*/15 * * * * YOUR_SCRIPT_PATH/VPN_update.sh
La prochaine fois que votre adresse IP d'équipement local d'abonné changera, le tunnel OCI sera recréé avec la nouvelle adresse IP et la clé secrète partagée dans un délai maximal de 15 minutes.
Liens connexes
Confirmation
- Auteur - Marco Santucci (architecte de la solution en nuage d'entreprise EMEA)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Establish a VPN with Oracle Cloud Infrastructure using a Dynamic Public IP Address
F96560-01
April 2024