Zum Hauptinhalt springen
Version: Weekly Build

Ein privates Netzwerk verbinden (VPN)

Ein typisches Szenario für die Nutzung eines VPN ist eine Anwendung, die auf Codesphere läuft und auf Dienste zugreifen muss, die in einem privaten Netzwerk gehostet werden. Ein Beispiel dafür ist die Verbindung zu einer On-Premise-Datenbank im eigenen Rechenzentrum des Unternehmens. Durch das Einrichten einer VPN-Verbindung lässt sich die in Codesphere laufende Anwendung sicher mit dem privaten Netzwerk verbinden, sodass die Anwendungen mit internen Datenbanken, APIs oder anderen Diensten kommunizieren können, als befänden sie sich im selben lokalen Netzwerk.

Diese Anleitung führt durch das Erstellen einer VPN-Konfiguration und das Verbinden von Codesphere Workspaces mit einem VPN-Gateway über IPsec. Nach der Einrichtung baut jede Replica des Workspace-Dienstes eine eigene, individuelle VPN-Verbindung zum VPN-Gateway auf.

Host-to-Site-Architektur

Jeder Server im Workspace agiert als unabhängiger VPN-Host/Client und baut eine eigene sichere Verbindung zum Gateway des privaten Netzwerks auf. Dies ist kein klassisches Site-to-Site-VPN, sondern jede Replica eines Workspace-Dienstes unterhält ihren eigenen VPN-Tunnel. Diese Architektur ist aufgrund der Multi-Tenant-Infrastruktur von Codesphere notwendig und stellt eine korrekte Netzwerkisolierung und Sicherheit zwischen verschiedenen Workspaces sicher.

Diagramm der VPN-Host-to-Site-Architektur

Entsprechende barrierefreie Textbeschreibung

Voraussetzungen & Einschränkungen​

Voraussetzungen:​

  • Das VPN-Gateway muss aus dem öffentlichen Internet erreichbar sein und über eine statische öffentliche IP-Adresse verfügen.
  • Das Gateway muss IPsec mit IKEv1 oder IKEv2 unterstützen.
  • Der Pre-Shared Key (PSK) muss sowohl in der Codesphere-VPN-Konfiguration als auch auf dem Gateway identisch konfiguriert sein.
  • Die IKE- und ESP-Cipher-Suites müssen auf beiden Seiten exakt übereinstimmen.

Einschränkungen:​

  • Jede Workspace-Replica baut einen eigenen, individuellen VPN-Tunnel zum Gateway auf. Das Gateway muss so konfiguriert sein, dass es mehrere gleichzeitige Verbindungen von unterschiedlichen Quell-IPs akzeptiert.
    • Dies ist erforderlich, um das dynamische Hinzufügen und Entfernen von Anwendungsdiensten und deren Replicas zu unterstützen.
  • Es handelt sich um ein Host-to-Site-Setup, nicht um Site-to-Site. Codesphere Workspaces agieren als VPN-Clients, nicht als Netzwerk-Peer.
  • Das Ändern einer VPN-Konfiguration startet den VPN-Dienst auf allen verbundenen Workspaces neu, was zu einer kurzen Netzwerkunterbrechung führt.
    • Es wird empfohlen, eine zweite VPN-Konfiguration mit einem duplizierten Workspace zu verwenden, um Änderungen ohne Ausfallzeit zu ermöglichen.
Beispiel einer Gateway-Konfiguration

Das VPN-Gateway muss so konfiguriert werden, dass es eingehende IPsec-Verbindungen von Codesphere-Workspace-Replicas akzeptiert. Im Folgenden ein Beispiel für eine strongSwan-Konfiguration (ipsec.conf), die mit dem VPN-Setup von Codesphere kompatibel ist.

conn workspaces
keyexchange=ikev1
type=tunnel
authby=psk
forceencaps=yes
ike=aes256-sha256-modp2048
esp=aes256-sha256-modp2048
ikelifetime=1h

leftid=1.2.3.4 # Public IP of the gateway
left=%defaultroute
lifetime=8h
leftsubnet=0.0.0.0/0

right=%any
rightsourceip=10.200.0.0/24 # The internal source IP to use in a tunnel for the remote peer.

auto=add
  • left bezeichnet das Gateway (die eigene Seite). leftsubnet=0.0.0.0/0 erlaubt dem Gateway, den gesamten Traffic durch den Tunnel zu routen. Im privaten Netzwerk ist dies üblicherweise das Subnetz des eigenen privaten Netzwerks.
  • right=%any akzeptiert Verbindungen von jeder Quell-IP, was erforderlich ist, da jede Workspace-Replica von einer anderen IP aus eine Verbindung aufbauen kann.
  • rightsourceip definiert den IP-Pool, der verbundenen Codesphere-Clients zugewiesen wird.

Die Konfiguration erstellen​

Tabelle der VPN-Konfigurationen mit den eingerichteten VPN-Verbindungen für die Resource Group.

  1. Navigiere zum Tab VPNs im Resource-Group-Dashboard.
  2. Klicke auf die Schaltfläche + Create VPN.

VPN-Konfigurationsformular mit Peer-IP, Subnetzen und IPsec-Sicherheitseinstellungen.

  1. Gib einen Namen für die Verbindung ein.
  2. Gib den Pre-Shared Key ein (stelle sicher, dass er mit dem des entfernten Gateways übereinstimmt).
  3. Konfiguriere die IKE- und ESP-Einstellungen (Version, Lifetime, Cipher Suites).
Übereinstimmung der Konfiguration

Die IKE- und ESP-Einstellungen müssen exakt mit der Konfiguration der externen Firewall oder des VPN-Geräts übereinstimmen. Nicht übereinstimmende Sicherheitsphasen sind die häufigste Ursache für Verbindungsfehler.

  1. Suche den Abschnitt „Network Settings“.
  2. Gib die Peer IP ein (die öffentliche IP des VPN-Gateways).
  3. Gib das Peer-Subnetz/die Peer-Subnetze an.
CIDR-Notation

Verwende die Standard-CIDR-Notation (z. B. 10.250.0.0/24) für die privaten IP-Bereiche, auf die über den Tunnel zugegriffen werden soll. Achte darauf, nicht den gesamten Traffic (0.0.0.0/0) über den Tunnel zu routen, da dies interne Codesphere-Funktionalitäten und den Zugriff auf andere Dienste beeinträchtigen würde.

  1. Speichere die Konfiguration.

Workspaces verbinden​

VPN Workspace Connection

  1. Klicke auf den neu erstellten VPN-Namen, um die Details zu öffnen.
  2. Wähle den Tab Connected Workspaces.
  3. Nutze das Dropdown-Menü Add Workspaces, um die Ziel-Landscapes auszuwählen, die mit diesem VPN verbunden werden sollen.
Dienstunterbrechung

Das Ändern der Konfiguration startet den VPN-Dienst auf allen verbundenen Workspaces neu. Dies kann zu einer kurzzeitigen Netzwerkunterbrechung bestehender Verbindungen führen.

Verbindung überprüfen​

Sobald die Workspaces verbunden sind, sollte der Tunnel getestet werden, um sicherzustellen, dass der Traffic korrekt geroutet wird.

  1. Öffne das Terminal in der Codesphere IDE.
  2. Sende einen Ping an eine private IP-Adresse innerhalb des zuvor definierten Peer-Subnetzes.
    • Beispielbefehl: ping 10.250.0.5
  3. Bestätige, dass der Ping erfolgreich ist, um zu verifizieren, dass der Tunnel aktiv ist und Traffic erfolgreich durchleitet.

Preview Deployments über CI/CD​

Preview Deployments lassen sich außerdem über die CI-Integrationen für GitHub, Bitbucket und GitLab mit bestehenden VPN-Verbindungen verknüpfen. So lässt sich komfortabel mit privaten Netzwerken (wie eingeschränkten On-Premise-Datenbanken oder internen APIs) für Entwicklungsumgebungen arbeiten.

Dazu muss lediglich der Name der VPN-Verbindung in der Deploy-YAML des Repositorys referenziert werden.

GitLab und Bitbucket akzeptieren weiterhin die alte Variable TEAM als Alias für RESOURCE_GROUP.

Füge den Parameter vpnConfig im Abschnitt with des Deployment-Schritts hinzu.

- name: Deploy
uses: codesphere-cloud/gh-action-deploy@main
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
email: ${{ secrets.CODESPHERE_EMAIL }}
password: ${{ secrets.CODESPHERE_PASSWORD }}
team: 'My Resource Group' # Change this to your resource group name
plan: 'Boost' # Select the plan for your app
onDemand: 'true'
vpnConfig: 'vpnConfigName' # Replace with your VPN connection name