Auf andere Clouds mit Libreswan zugreifen

Libreswan ist eine Open-Source-IPSec-Implementierung, die auf FreeS/WAN und Openswan basiert. Die meisten Linux-Distributionen enthalten Libreswan oder ermöglichen eine einfache Installation. Die Installation kann auf Hosts in einem On-Premise-Netzwerk oder Cloud-Providernetzwerk ausgeführt werden. In diesem Thema wird beschrieben, wie Sie Ihr virtuelles Cloud-Netzwerk (VCN) von Oracle Cloud Infrastructure mit einem anderen Cloud-Provider verbinden, indem Sie ein Site-to-Site-VPN mit einer Libreswan-VM als Customer Premises Equipment (CPE) verwenden.

In dem hier gezeigten Beispiel ist der andere Cloud-Provider Amazon Web Services (AWS). Site-to-Site-VPN stellt eine sichere und verschlüsselte Site-to-Site-IPsec-Verbindung zwischen den Oracle- und Amazon-Umgebungen bereit. Über diese Verbindung können Ressourcen in den beiden Clouds unter Verwendung ihrer privaten IP-Adressen miteinander kommunizieren, als ob sie sich in demselben Netzwerksegment befinden.

Ein Libreswan-CPE-Handbuch ist auch für alle anderen Anwendungsfälle verfügbar.

Für die Unterstützung der virtuellen Tunnelschnittstelle (VTI) für diese routenbasierte Konfiguration sind mindestens Libreswan Version 3.18 und ein aktueller Linux 3.x- oder 4.x-Kernel erforderlich. Diese Konfiguration wurde mit Libreswan Version 3.29. validiert.

Architektur

Das folgende Diagramm zeigt das allgemeine Layout der Verbindung.

Diese Abbildung zeigt das allgemeine Layout zweier Clouds, die mit einem Site-to-Site-VPN und Libreswan-CPE verbunden sind.

Unterstützte IPSec-Parameter

Eine Liste der vom Hersteller unterstützten IPSec-Parameter für alle Regionen finden Sie unter Unterstützte IPSec-Parameter.

Die Oracle BGP-ASN für die kommerzielle Cloud-Realm ist 31898. Wenn Sie Site-to-Site-VPN für die US Government Cloud konfigurieren, finden Sie weitere Informationen unter Erforderliche Site-to-Site-VPN-Parameter für die Government Cloud und BGP-ASN von Oracle. Informationen zur United Kingdom Government Cloud finden Sie unter BGP-ASN von Oracle.

Konfiguration

Wichtig

Die Konfigurationsanweisungen in diesem Abschnitt werden von Oracle Cloud Infrastructure für Libreswan bereitgestellt. Wenn Sie Support oder weitere Unterstützung benötigen, lesen Sie die Libreswan-Dokumentation.

Libreswan unterstützt sowohl routenbasierte als auch policy-basierte Tunnel. Die Tunneltypen können zusammen verwendet werden, ohne einander zu beeinträchtigen. Die VPN-Headends von Oracle verwenden routenbasierte Tunnel. Oracle empfiehlt, dass Sie Libreswan mit der Virtual Tunnel Interface-(VTI-)Konfigurationssyntax konfigurieren.

Weitere Informationen zu den in diesem Dokument verwendeten Parametern finden Sie unter Unterstützte IPSec-Parameter.

Libreswan-Standardkonfigurationsdateien

Bei der standardmäßigen Libreswan-Installation werden die folgenden Dateien erstellt:

  • etc/ipsec.conf: Root der Libreswan-Konfiguration.
  • /etc/ipsec.secrets: Root des Speicherorts, in dem Libreswan nach Secrets (Tunnel-Pre-Shared Keys) sucht.
  • /etc/ipsec.d/: Verzeichnis zum Speichern der Dateien .conf und .secrets für Ihre Oracle Cloud Infrastructure-Tunnel (Beispiel: oci-ipsec.conf und oci-ipsec.secrets). Libreswan empfiehlt, dass Sie diese Dateien in diesem Ordner erstellen.

Die Standarddatei etc/ipsec.conf enthält die folgende Zeile:

include /etc/ipsec.d/*.conf

Die Standarddatei etc/ipsec.secrets enthält die folgende Zeile:

include /etc/ipsec.d/*.secrets

Die vorherigen Zeilen führen automatisch alle .conf- und .secrets-Dateien im Verzeichnis /etc/ipsec.d in den Hauptkonfigurations- und Secrets-Dateien zusammen, die Libreswan verwendet.

IKEv2 verwenden

Oracle unterstützt Internet Key Exchange Version 1 (IKEv1) und Version 2 (IKEv2). Wenn Sie die IPSec-Verbindung in der Konsole für die Verwendung von IKEv2 konfigurieren, müssen Sie das CPE so konfigurieren, dass nur IKEv2 und zugehörige IKEv2-Verschlüsselungsparameter verwendet werden, die Ihr CPE unterstützt. Eine Liste der Parameter, die Oracle für IKEv1 oder IKEv2 unterstützt, finden Sie unter Unterstützte IPSec-Parameter.

Sie geben die IKE-Version an, wenn Sie die IPSec-Konfigurationsdatei in Aufgabe 4 im nächsten Abschnitt einrichten. Diese Beispieldatei enthält einen Kommentar zur Konfiguration von IKEv1 und IKEv2.

Konfigurationsprozess

Aufgabe 1: AWS-Libreswan-Instanz vorbereiten
  1. Erstellen Sie mit der AWS-Konsole oder mit APIs eine Libreswan-VM mithilfe des Provisioning-Prozesses. Verwenden Sie Oracle Linux, CentOS oder Red Hat als Hauptbetriebssystem.
  2. Nachdem die neue Instanz gestartet wurde, melden Sie sich bei der Instanz mit SSH an, und installieren Sie das Libreswan-Package:

    sudo yum -y install libreswan
  3. Deaktivieren Sie in der AWS-Konsole die Quell- und Zielprüfungen in der Libreswan-VM-Instanz, indem Sie mit der rechten Maustaste auf die Instanz und dann auf Networking und auf Quell-/Zielprüfung ändern klicken. Wenn Sie dazu aufgefordert werden, klicken Sie auf Ja, Deaktivieren.

    Diese Abbildung zeigt das Dialogfeld "AWS-Konsole" zum Deaktivieren der Quell-/Zielprüfung in der Libreswan-VM-Instanz.
  4. Konfigurieren Sie IP_forward auf der Libreswan-VM, damit AWS-Clients Traffic über die Libreswan-VM senden und empfangen können. Legen Sie in der Datei /etc/sysctl.conf die folgenden Werte fest, und wenden Sie die Aktualisierungen mit sudo sysctl -p an.

    net.ipv4.ip_forward=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.eth0.accept_redirects = 0
  5. Bearbeiten Sie in der AWS-Konsole Ihre AWS-Routentabelle. Fügen Sie eine Regel mit dem VCN-CIDR (172.0.0.0/16) als Ziel und der AWS-Libreswan-Instanz-ID (in diesem Beispiel i-016ab864b43cb368e) als Ziel hinzu.

    Diese Abbildung zeigt das Dialogfeld "AWS-Konsole" zum Bearbeiten einer Routingregel.
  6. Aktivieren Sie in der AWS-Konsole eingehenden TCP- und UDP-Traffic auf den Ports 4500 und 500, um eine Site-to-Site-VPN-IPsec-Verbindung von Oracle Cloud Infrastructure mit der AWS-Libreswan-VM zuzulassen. Diese Aufgabe umfasst das Bearbeiten der AWS-Sicherheitsgruppen und Netzwerk-ACLs. Sie können den Quellwert als öffentliche Oracle-IP (IPSec-Tunnel-Endpunkte des Oracle -VPN-Headends) anstatt 0.0.0.0/0 festlegen.

    Bei Sicherheitsgruppen:

    Diese Abbildung zeigt das Dialogfeld "AWS-Konsole" zum Bearbeiten von Sicherheitsgruppenregeln.

    Bei Netzwerk-ACLs:

    Diese Abbildung zeigt das Dialogfeld "AWS-Konsole" zum Bearbeiten von Netzwerk-ACLs.
Aufgabe 2: DRG- und CPE-Objekt von Oracle Cloud Infrastructure konfigurieren
  1. Erstellen Sie in der Oracle-Konsole ein Customer Premises Equipment-(CPE-)Objekt, das auf die öffentliche IP-Adresse der Libreswan-AWS-Instanz verweist (34.200.255.174). Dies ist mit dem CPE-Konfigurations-Helper ganz einfach möglich.

  2. Wenn noch kein DRG an Ihr VCN angehängt wurde, erstellen Sie in der Oracle-Konsole ein DRG, und hängen Sie es an das VCN (172.0.0.0/16) an.

  3. Erstellen Sie eine IPsec-Verbindung in der Oracle-Konsole, und verweisen Sie sie auf das AWS-VPC-CIDR (10.0.0.0/16). Anders ausgedrückt, wenn Sie die IPSec-Verbindung erstellen, setzen Sie die zugehörige statische Route auf das AWS-VPC-CIDR.

    Für jede konfigurierte IPSec-Verbindung erstellt Oracle zwei Tunnel und weist jedem die folgenden Elemente zu:

    • IPSec-Tunnel-Endpunkte des Oracle-VPN-Headends
    • Shared Secret des Oracle-VPN-Tunnels

    Sie können den Tunnelstatus IPSec und die Oracle-VPN-Headend-IP anzeigen, indem Sie auf das Menü Aktionen (Aktionsmenü) für die Verbindung IPSec klicken und dann auf Details anzeigen klicken. Anfänglich befindet sich jeder Tunnel im DOWN-Status (offline), da später noch einige zusätzliche Konfigurationen für die AWS-Libreswan-VM vorzunehmen sind.

    Um das Shared Secret anzuzeigen, klicken Sie auf das Aktionsmenü (Aktionsmenü) für einen einzelnen Tunnel und dann auf Details anzeigen. Klicken Sie neben Shared Secret auf Anzeigen.

  4. Bearbeiten Sie in der Oracle-Konsole die Sicherheitsregeln des VCN, um Ingress-TCP- und UDP-Traffic auf den Ports 4500 und 500 zu aktivieren, wie Sie es für die AWS-Sicherheitsgruppen und Netzwerk-ACLs vorgenommen haben. Sie können die öffentliche IP-Adresse der AWS-Libreswan-VM anstelle von 0.0.0.0/0 verwenden, wenn es sich um eine persistente öffentliche IP handelt. Öffnen Sie außerdem alle Protokolle und Ports für Ingress-Traffic aus dem AWS-VPC-CIDR (10.0.0.0/16). Denken Sie daran: Sicherheitslisten sind mit einem Subnetz verknüpft. Bearbeiten Sie daher die Sicherheitsliste für jedes Subnetz, das mit der AWS-VPC kommunizieren muss. Wenn Sie VCN-Netzwerksicherheitsgruppen verwenden, bearbeiten Sie die Regeln in den relevanten NSGs.

  5. Bearbeiten Sie in der Oracle-Konsole die Routentabellen des VCN, um eine Regel mit dem AWS-VPC-CIDR (10.0.0.0/16) als Ziel-CIDR-Block und das DRG hinzuzufügen, das Sie zuvor als Ziel erstellt haben. Denken Sie daran: Routentabellen sind mit einem Subnetz verknüpft. Bearbeiten Sie daher die Routentabelle, die mit jedem Subnetz verknüpft ist, das mit der AWS-VPC kommunizieren muss.

Aufgabe 3: Erforderliche Konfigurationswerte ermitteln

In der Libreswan-Konfiguration werden die folgenden Variablen verwendet. Ermitteln Sie die Werte, bevor Sie mit der Konfiguration fortfahren.

  • ${cpeLocalIP}: IP-Adresse Ihres Libreswan-Geräts.
  • ${cpePublicIpAddress}: Öffentliche IP-Adresse für Libreswan. Dies ist die IP-Adresse Ihrer äußeren Schnittstelle. Je nach Netzwerktopologie kann sich der Wert von ${cpeLocalIP} unterscheiden.
  • ${oracleHeadend1}: Öffentlicher Oracle-IP-Endpunkt für den ersten Tunnel, der aus der Oracle-Konsole abgerufen wird.
  • ${oracleHeadend2}: Öffentlicher Oracle IP-Endpunkt für den zweiten Tunnel, der aus der Oracle-Konsole abgerufen wird.
  • ${vti1}: Name der ersten verwendeten VTI. Beispiel: vti1.
  • ${vti2}: Name der zweiten verwendeten VTI. Beispiel: vti2.
  • ${sharedSecret1}: Pre-Shared Key für den ersten Tunnel. Sie können den standardmäßig von Oracle bereitgestellten Pre-Shared Key verwenden oder Ihren eigenen Schlüssel angeben, wenn Sie die IPSec-Verbindung in der Oracle-Konsole einrichten.
  • ${sharedSecret2}: Pre-Shared Key für den zweiten Tunnel. Sie können den standardmäßig von Oracle bereitgestellten Pre-Shared Key verwenden oder Ihren eigenen Schlüssel angeben, wenn Sie die IPSec-Verbindung in der Oracle-Konsole einrichten.
  • ${vcnCidrNetwork}: VCN-IP-Bereich.
Aufgabe 4: Konfigurationsdatei einrichten: /etc/ipsec.d/oci-ipsec.conf

Bei der Libreswan-Konfiguration wird das Konzept von links und rechts verwendet, um die Konfigurationsparameter für das lokale CPE-Gerät und das Remote-Gateway zu definieren. Beide Seiten der Verbindung (conn in der Libreswan-Konfiguration) können links oder rechts sein, die Konfiguration für diese Verbindung muss jedoch konsistent sein. In diesem Beispiel:

  • Links: Ihr lokales Libreswan-CPE
  • Rechts: Das Oracle-VPN-Headend

Verwenden Sie die folgende Vorlage für die Datei /etc/ipsec.d/oci-ipsec.conf. Die Datei definiert die beiden Tunnel, die Oracle erstellt, wenn Sie die IPSec-Verbindung einrichten.

Wichtig

Wenn sich Ihr CPE hinter einem 1-1-NAT-Gerät befindet, entfernen Sie den Kommentar für den Parameter leftid, und setzen Sie ihn auf den Wert ${cpePublicIpAddress}.
conn oracle-tunnel-1
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend1}
     authby=secret
     leftsubnet=0.0.0.0/0 
     rightsubnet=0.0.0.0/0
     auto=start
     mark=5/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti1}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
conn oracle-tunnel-2
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend2}
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=6/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti2}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
Aufgabe 5: Secrets-Datei einrichten: /etc/ipsec.d/oci-ipsec.secrets

Verwenden Sie die folgende Vorlage für die Datei /etc/ipsec.d/oci-ipsec.secrets. Sie enthält zwei Zeilen pro IPSec-Verbindung (eine Zeile pro Tunnel).

${cpePublicIpAddress} ${ipAddress1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${sharedSecret2}"
Aufgabe 6: Libreswan-Konfiguration neu starten

Nachdem Sie die Konfigurations- und Secrets-Dateien eingerichtet haben, müssen Sie den Libreswan-Service mit dem folgenden Befehl neu starten.

Wichtig

Neustart des Libreswan-Service kann sich auf vorhandene Tunnel auswirken.
service ipsec restart
Aufgabe 7: IP-Routing konfigurieren

Verwenden Sie den folgenden ip-Befehl, um statische Routen zu erstellen, die den Traffic über die IPSec-Tunnel an das VCN senden. Wenn Sie mit einem nicht berechtigten Benutzeraccount angemeldet sind, müssen Sie vor dem Befehl möglicherweise sudo verwenden.

Wichtig

Statische Routen, die mit dem Befehl ip route erstellt werden, werden nicht durch einen Neustart persistiert. In der Dokumentation Ihrer Linux-Distribution finden Sie weitere Informationen dazu, wie Ihre Routen beibehalten werden können.
ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show

Verifizierung

Ein Monitoring-Service ist auch in Oracle Cloud Infrastructure verfügbar, um Ihre Cloud-Ressourcen aktiv und passiv zu überwachen. Informationen zum Monitoring Ihres Site-to-Site-VPN finden Sie unter Site-to-Site-VPN-Metriken.

Bei Problemen finden Sie weitere Informationen unter Site-to-Site-VPN - Fehlerbehebung.

Libreswan-Status prüfen

Prüfen Sie den aktuellen Status der Libreswan-Tunnel mit dem folgenden Befehl.

ipsec status

Der Tunnel wurde eingerichtet, wenn eine Zeile mit folgendem Inhalt angezeigt wird:

STATE_MAIN_I4: ISAKMP SA established

Wenn Sie IKEv2 verwenden, wird Folgendes angezeigt:

STATE_V2_IPSEC_I (IPsec SA established)

Wenn Sie zu einem späteren Zeitpunkt ein Oracle-Supportticket zu Ihrem Libreswan-Tunnel erstellen müssen, fügen Sie dem Ticket die Ausgabe des vorherigen ipsec status-Befehls hinzu.

Status der Tunnelschnittstelle prüfen

Prüfen Sie mit den Befehlen ifconfig oder ip link show, ob die virtuellen Tunnelschnittstellen hochgefahren oder heruntergefahren sind. Sie können auch Anwendungen wie "tcpdump" mit den Schnittstellen verwenden.

Im Folgenden finden Sie ein Beispiel der ifconfig-Ausgabe mit einer Libreswan-Implementierung, in der die verfügbaren VTIs angezeigt werden.

ifconfig
<output trimmed>
                 
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::1 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0
 
vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0

Beispiel für die ip link show-Ausgabe:

ip link show
<output trimmed>
 
9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.51
 
10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.49

Außerdem sollte jeder IPSec-Tunnel in der Oracle-Konsole den Status "UP" aufweisen.