Hinweis:

VPN mit Oracle Cloud Infrastructure mit einer dynamischen öffentlichen IP-Adresse einrichten

Einführung

Oracle Cloud Infrastructure (OCI) unterstützt nicht die Verwendung von Domain Name System (DNS) zur Konfiguration von Customer Premises Equipment (CPE) als VPN-Tunnelendpunkt. Dieses Tutorial zielt darauf ab, kleinen Unternehmen, die keinen Zugriff auf eine statische öffentliche IP-Adresse haben, die Verwendung des IPSec-Service auch mit einer dynamischen Adresse zu ermöglichen. Die Strategie umfasst das Deployment eines Skripts, das automatisch einen neuen OCI-Tunnel generieren kann, wenn sich die öffentliche IP der Customer Premises Equipment (CPE) ändert.

Hinweis: In diesem Tutorial werden die letzten beiden Zeilen in der Shellskriptdatei verwendet, um die IP-Adresse und das Shared Secret des neuen Endpunkts zu aktualisieren, der auf OCI in meinem Router erstellt wurde (MikroTik). Abhängig von Ihrem Router müssen Sie ihn aktualisieren, um diese beiden Werte widerzuspiegeln.

Zielsetzung

Voraussetzungen

VPN mit Oracle Cloud Infrastructure einrichten

  1. Um eine stabile VPN-IPSec-Verbindung mit OCI für ein CPE-IP-Adressupdate zu erreichen, müssen Sie einen dynamisch aktualisierten DNS-Datensatz einrichten. Es gibt mehrere öffentliche DNS-Anbieter, die diese Funktion unterstützen. Wählen Sie Ihren Favoriten aus und konfigurieren Sie ihn. (Beispiel: Cloudns.net)

    Nachdem Sie einen öffentlichen dynamischen DNS-Datensatz registriert und konfiguriert haben, können Sie Ihre linux-VM einrichten.

  2. Wenn die Linux-VM hochgefahren und gestartet ist, installieren Sie die OCI-CLI, um von diesem Rechner aus auf Ihrem OCI-Mandanten zu arbeiten. Weitere Informationen finden Sie unter OCI-CLI installieren und konfigurieren.

  3. Installieren Sie die Anwendung sshpass, falls Sie sie für die Aktualisierung Ihrer privaten Mikrotik-Routereinstellungen verwenden müssen.

    sudo apt-get install sshpass
    
  4. Erstellen Sie die Datei .sh, kopieren Sie das folgende Skript in die Datei, und erstellen Sie eine ausführbare Datei. Denken Sie daran, das Skript mit Ihren Daten, der Compartment-ID, der DRG-ID und dem DNS-Namen zu ändern, die auf Ihr CPE verweisen.

    Hinweis: Sie finden den OCI-Pfad, der diesen Befehl in Ihrem Terminal ausführt:

    which oci
    

    Hinweis: Der letzte Abschnitt des Skripts, der dem Router MikroTik zugeordnet ist, ist nur erforderlich, wenn Sie einen Router MikroTik verwenden. Andernfalls müssen Sie die Befehle implementieren, um die IP-Adresse des OCI-Tunnelendpunkts und das Shared Secret in Ihrem Router zu aktualisieren.

    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
    

    Hinweis: Das Skript kann die Tunnel erstellen, die alten jedoch nicht beenden. Manchmal müssen Sie sich bei der OCI-Konsole anmelden und die nicht verwendeten alten OCI-Site-to-Site-VPN-Tunnel beenden oder diese Funktion darin implementieren.

  5. Fügen Sie das Skript der crontab hinzu, wenn Sie es automatisch ausführen möchten.

    Crontab -e
    

    Hinweis: Fügen Sie die Häufigkeit und den Skriptpfad in die letzte Zeile der crontab ein. Der folgende Befehl soll alle 15 Minuten ausgeführt werden.

    */15 * * * * YOUR_SCRIPT_PATH/VPN_update.sh
    

Wenn sich die CPE-IP-Adresse das nächste Mal ändert, wird der OCI-Tunnel innerhalb von maximal 15 Minuten mit der neuen IP-Adresse und dem Shared Secret neu erstellt.

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.