Zum Hauptinhalt springen
Version: Weekly Build

Ein privates Netzwerk verbinden (VPN)

Ein typisches Einsatzszenario für ein VPN ist eine Anwendung auf Codesphere, die 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 kann die Anwendung, die in Codesphere läuft, sicher mit dem privaten Netzwerk verbunden werden, 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 fungiert als eigenständiger VPN-Host/Client und baut eine eigene sichere Verbindung zum privaten Netzwerk-Gateway auf. Dabei handelt es sich nicht um ein 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 ordnungsgemäße Netzwerkisolierung und Sicherheit zwischen den 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 eine statische öffentliche IP-Adresse besitzen.
  • Das Gateway muss IPsec mit IKEv1 oder IKEv2 unterstützen.
  • Der Pre-Shared Key (PSK) muss auf der Codesphere-VPN-Konfiguration und dem Gateway identisch konfiguriert sein.
  • Die IKE- und ESP-Cipher-Suites müssen auf beiden Seiten exakt übereinstimmen.

Einschränkungen:

  • Jede Workspace-Replica baut ihren 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 fungieren 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-Gateway-Konfiguration

Das VPN-Gateway muss so konfiguriert werden, dass es eingehende IPsec-Verbindungen von Codesphere-Workspace-Replicas akzeptiert. Nachfolgend 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 # Öffentliche IP des Gateways
left=%defaultroute
lifetime=8h
leftsubnet=0.0.0.0/0

right=%any
rightsourceip=10.200.0.0/24 # Die interne Quell-IP, die im Tunnel für den entfernten Peer verwendet wird.

auto=add
  • left bezieht sich auf das Gateway (die eigene Seite). leftsubnet=0.0.0.0/0 erlaubt dem Gateway, den gesamten Verkehr über 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 verbinden kann.
  • rightsourceip definiert den IP-Pool, der verbindenden Codesphere-Clients zugewiesen wird.

Die Konfiguration erstellen

Tabelle mit VPN-Konfigurationen, die die konfigurierten VPN-Verbindungen des Teams auflistet.

  1. Navigiere zum Tab VPNs im Team-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 (dieser muss mit dem entfernten Gateway übereinstimmen).
  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 bzw. 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/die Peer-Subnetz(e) 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 Verkehr (0.0.0.0/0) über den Tunnel zu routen, da dies interne Codesphere-Funktionen und den Zugriff auf andere Dienste beeinträchtigen würde.

  1. Speichere die Konfiguration.

Workspaces verbinden

VPN-Workspace-Verbindung

  1. Klicke auf den Namen des neu erstellten VPNs, um die Details zu öffnen.
  2. Wähle den Tab Connected Workspaces.
  3. Verwende 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 kurzen Netzwerkunterbrechung bestehender Verbindungen führen.

Verbindung prüfen

Sobald die Workspaces verbunden sind, sollte der Tunnel getestet werden, um sicherzustellen, dass der Datenverkehr 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.
    • Befehlsbeispiel: ping 10.250.0.5
  3. Prüfe, ob der Ping erfolgreich ist, um zu bestätigen, dass der Tunnel aktiv ist und Datenverkehr erfolgreich durchleitet.

Preview Deployments über CI/CD

Preview Deployments können außerdem über die CI-Integrationen für GitHub, Bitbucket und GitLab mit bestehenden VPN-Verbindungen verknüpft werden. So lässt sich in den Entwicklungsumgebungen bequem mit privaten Netzwerken arbeiten (z. B. eingeschränkten On-Premise-Datenbanken oder internen APIs).

Dazu muss lediglich der Name der VPN-Verbindung im Deploy-YAML des Repositories referenziert werden.

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 Team' # Hier den eigenen Team-Namen eintragen
plan: 'Boost' # Plan für die Anwendung auswählen
onDemand: 'true'
vpnConfig: 'vpnConfigName' # Durch den Namen der VPN-Verbindung ersetzen