Note :

É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

Préalables

Configurer un RPV avec Oracle Cloud Infrastructure

  1. 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.

  2. 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.

  3. 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
    
  4. 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.

  5. 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.

Confirmation

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.