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
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
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
undoci-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
- 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.
-
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
-
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.
-
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 mitsudo 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
-
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.
-
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:
Bei Netzwerk-ACLs:
-
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.
-
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.
-
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ü 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ü () für einen einzelnen Tunnel und dann auf Details anzeigen. Klicken Sie neben Shared Secret auf Anzeigen.
-
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.
-
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.
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.
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.
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
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}"
Nachdem Sie die Konfigurations- und Secrets-Dateien eingerichtet haben, müssen Sie den Libreswan-Service mit dem folgenden Befehl neu starten.
Neustart des Libreswan-Service kann sich auf vorhandene Tunnel auswirken.
service ipsec restart
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.
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.