Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
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
- Erstellen Sie einen neuen Oracle Cloud Infrastructure-Site-to-Site-VPN-Tunnel mit der neuen aktualisierten CPE-IP-Adresse.
Voraussetzungen
-
Ein dynamisch aktualisierter DNS-Datensatz, der auf Ihre öffentliche CPE-IP-Adresse verweist.
-
Eine virtuelle Linux-Maschine (VM).
-
Installieren Sie
sshpass
auf der Linux-VM. In diesem Tutorial werden Befehle an den MikroTik-Router gesendet. -
Installieren und konfigurieren Sie die Oracle Cloud Infrastructure-Befehlszeilenschnittstelle (OCI-CLI).
-
Generieren Sie einen API-Schlüssel. Weitere Informationen finden Sie unter API-Signaturschlüssel generieren.
VPN mit Oracle Cloud Infrastructure einrichten
-
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.
-
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.
-
Installieren Sie die Anwendung
sshpass
, falls Sie sie für die Aktualisierung Ihrer privaten Mikrotik-Routereinstellungen verwenden müssen.sudo apt-get install sshpass
-
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.
-
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.
Verwandte Links
Danksagungen
- Autor - Marco Santucci (EMEA Enterprise Cloud Solution Architect)
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.
Establish a VPN with Oracle Cloud Infrastructure using a Dynamic Public IP Address
F96558-01
April 2024