VPN-Server erstellen
Erstellen Sie einen VPN-Server, um Clients aus dem Internet die Verbindung zum VPC-Netz unter Beibehaltung einer sicheren Konnektivität zu ermöglichen.
Sie können einen VPN-Server über die Konsole, die Befehlszeilenschnittstelle (CLI), die API oder Terraform erstellen.
Vorbereitende Schritte
Bevor Sie einen VPN-Server bereitstellen, müssen Sie die folgenden Voraussetzungen in der folgenden Reihenfolge erfüllen:
-
Prüfen Sie die Planungshinweise für VPN-Server.
-
Entscheiden Sie, welcher Authentifizierungsmodus für den VPN-Client verwendet werden soll: zertifikatsbasiert, Benutzername und Passwort oder beides. Weitere Informationen finden Sie unter Client-to-Server-Authentifizierung einrichten.
-
Erstellen Sie eine Secrets Manager-Serviceinstanz und verwalten Sie Zertifikate.
Es wird empfohlen, unter Berücksichtigung dieser Aspekte ein privates Zertifikat zu erstellen.
-
Erstellen Sie eine IAM-Dienst-zu-Dienst-Autorisierung für Ihren VPN-Server und IBM Cloud Secrets Manager.
-
Erstellen Sie eine VPC und mindestens ein Teilnetz in Ihrer ausgewählten VPC.
Für Hochverfügbarkeit erstellen Sie eine VPC und zwei Teilnetze in zwei verschiedenen Zonen. Der VPN-Server befindet sich in den beiden Teilnetzen.
Erstellen eines VPN-Servers in der Konsole
Um einen VPN-Server in der Konsole zu erstellen, gehen Sie wie folgt vor:
-
Erfüllen Sie alle unter 'Vorbereitende Schritte' aufgeführten Vorbedingungen.
-
Öffnen Sie in Ihrem Browser die IBM Cloud-Konsole und melden Sie sich bei Ihrem Konto an.
-
Wählen Sie das Navigationsmenü
aus und klicken Sie dann auf
Infrastruktur- VPC > Netzwerk > VPNs.
-
Klicken Sie in der rechten oberen Ecke der Seite auf Erstellen.
-
Klicken Sie im Abschnitt „VPN-Typ“ auf „ Client-to-Site-Server “.
Abschnitt VPN-Typ"" Im Abschnitt „Standorte“ wird die Region angezeigt, in der sich die VPC befindet und in der der VPN-Server bereitgestellt wird.
-
Geben Sie im Abschnitt 'Details' die folgenden Informationen an:
-
Name des VPN-Servers: Geben Sie einen Namen für den VPN-Server ein, z. B.
my-vpn-server. -
Ressourcengruppe: Wählen Sie eine Ressourcengruppe für den VPN-Server aus.
-
Tags – Fügen Sie optional Tags hinzu, um Ihre Ressourcen zu organisieren, die Nutzungskosten zu erfassen oder den Zugriff darauf zu verwalten.
-
Zugriffsmanagementtags-Optional können Sie Zugriffsmanagementtags zu Ressourcen hinzufügen, um die Zugriffssteuerungsbeziehungen zu organisieren. Das einzige unterstützte Format für Zugriffsverwaltungstags ist
key:value. Weitere Informationen finden Sie unter Zugriff auf Ressourcen mithilfe von Tags steuern. -
Virtual Private Cloud: Wählen Sie die VPC für den VPN-Server aus.
-
IPv4-Adresspool für Client: Geben Sie einen CIDR-Bereich ein. Dem Client wird eine IP-Adresse aus diesem Adressenpool für seine Sitzung zugewiesen.
Abschnitt VPN-Details""
-
-
Geben Sie im Abschnitt 'Teilnetze' die folgenden Informationen an:
-
Wählen Sie einen VPN-Servermodus aus:
- Hochverfügbarkeitsmodus: Stellt den VPN-Server über zwei Teilnetze in verschiedenen Zonen. bereit. Dieser Modus eignet sich am besten für Mehrzonenbereitstellungen und Lösungen, in denen der Zugriff auf das Client-VPN extrem wichtig ist.
- Standalone-Modus: Stellt den VPN-Server in einem einzigen Teilnetz und einer einzelnen Zone bereit. Dieser Modus eignet sich am besten für Einzelzonenbereitstellungen, in denen die Verfügbarkeit mehrerer Zonen nicht erforderlich ist.
-
Geben Sie das Teilnetz (Standalone-Modus) oder die Teilnetze (Hochverfügbarkeitsmodus) für die VPC an.
Abschnitt für VPN-Teilnetze
-
-
Geben Sie im Abschnitt 'Authentifizierung' die folgenden Informationen an:
-
VPN-Server-Authentifizierung- Wählen Sie das Zertifikat des Servers SSL aus Secrets Manager. Füllen Sie alle erforderlichen Felder aus.
Abschnitt für die VPN-Serverauthentifizierung -
Clientauthentifizierungsmodi: Wählen Sie diese Option aus, um die Benutzerauthentifizierung über die Verwendung eines Clientzertifikats, einer Benutzer-ID und eines Kenncodes oder beides zu konfigurieren.
-
Clientzertifikat: Sie können ein Clientzertifikat auswählen und eine Benutzer-ID und einen Kenncode für optimale Sicherheit konfigurieren. Eine Benutzer-ID und ein Passwort bieten eine zusätzliche Sicherheitsebene, da für den Zugriff auf das Konto weitere Anmeldedaten erforderlich sind.
Optional können Sie eine Zertifikatswiderrufsliste (Certificate Revocation List, CRL) im PEM-Format hochladen. Nachdem Sie eine CRL hochgeladen haben, wird die PEM-Datei als der Name des VPN-Servers angezeigt.
-
Benutzer-ID und Kenncode-Konfigurieren Sie die hinzugefügte Authentifizierung für VPN-Clientbenutzer. Diese Authentifizierungsmethode bietet eine zusätzliche Sicherheitsebene, die in das IAM von „ IBM Cloud “ integriert ist, um die Client-Authentifizierung abzuschließen. Sobald die Authentifizierung abgeschlossen ist, leitet das System den Code zur Authentifizierung an den „ openVPN “-Client weiter.
Abschnitt zur VPN-Clientauthentifizierung -
-
-
Wählen Sie im Abschnitt 'Sicherheitsgruppen' mindestens eine Sicherheitsgruppe aus.
Um eine oder mehrere Sicherheitsgruppen und ihre Regeln zu konfigurieren oder um optional Zugriffskontrolllisten (ACLs) auf dem Subnetz zu konfigurieren, in dem Sie den VPN-Server und andere VPC-Subnetze, die über den VPN-Tunnel kommunizieren, bereitstellen möchten, lesen Sie den Abschnitt Konfigurieren von ACLs zur Verwendung mit einem VPN-Server.
Abschnitt für VPN-Sicherheitsgruppen Sie können Sicherheitsgruppen nach der Bereitstellung auf der Detailseite des VPN-Servers (Registerkarte "Sicherheitsgruppen") zuordnen.
-
Geben Sie im Abschnitt Zusätzliche Konfiguration die folgenden Informationen an:
-
IP-Adresse des DNS-Servers: Geben Sie optional eine oder zwei IP-Adressen des DNS-Servers für die Auflösung von Domänennamen an.
-
Inaktivitätszeitlimit für Sitzung (Sekunden): Wenn der VPN-Server keinen Datenverkehr verzeichnet, bevor dieses Intervall abläuft, wird die Verbindung automatisch getrennt. Dieser Wert kann zwischen
0und28800Sekunden liegen. Der Standardwert ist600Sekunden. -
Transportprotokoll: Wählen Sie eines der folgenden Protokolle aus und geben Sie einen gültigen VPN-Port ein (
1 - 65535).- UDP ist ein verbindungsunabhängiges Protokoll, das eine Fehlerprüfung durchführt, aber fehlerhafte Pakete verwirft. UDP ist schneller als TCP.
- TCP ist ein verbindungsorientiertes Protokoll mit Fehlerprüfung und Fehlerbehebung. TCP ist zuverlässiger als UDP.
-
Tunnelmodus: Geben Sie eine der folgenden Optionen an:
-
Full-Tunnel: Der gesamte Datenverkehr fließt über die VPN-Schnittstelle zum VPN-Tunnel.
-
Split-Tunnel: Der private Datenverkehr fließt über die VPN-Schnittstelle zum VPN-Tunnel und der öffentliche Datenverkehr fließt über die vorhandene LAN-Schnittstelle.
Abschnitt für zusätzliche VPN-Konfiguration
-
-
Einrichten eines VPN-Servers über die Befehlszeile
Bevor Sie beginnen, richten Sie Ihre CLI-Umgebung ein.
Um einen VPN-Server über die Befehlszeile einzurichten, geben Sie den folgenden Befehl ein:
ibmcloud is vpn-server-create --subnets SUBNETS --client-ip-pool CLIENT_IP_POOL --cert CERT (--client-auth-methods certificate | username | certificate,username | username,certificate) [--client-ca CLIENT_CA] [--client-crl CLIENT_CRL] [--client-dns CLIENT_DNS] [--client-idle-timeout CLIENT_IDLE_TIMEOUT] [--enable-split-tunnel false | true] [--port PORT] [--protocol udp | tcp] [--sg SECURITY_GROUP1 --sg SECURITY_GROUP2 ...] [--name NAME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]
Befehlsoptionen
- --subnets: Durch Kommas getrennte IDs der Teilnetze, in denen dieser VPN-Server bereitgestellt werden soll. Verwenden Sie Teilnetze in verschiedenen Zonen, um eine hohe Verfügbarkeit bereitzustellen. Es können maximal zwei Teilnetze festgelegt werden.
- --client-ip-pool: Der IPv4-Adresspool des VPN-Clients, der im CIDR-Format angegeben ist. Die Anforderung darf sich nicht mit vorhandenen Adresspräfixen in der VPC oder einem der folgenden reservierten Adressbereiche überschneiden: 127.0.0.0/8 (IPv4-Loopback-Adressen), 161.26.0.0/ 16 (IBM Services), 166.8.0.0/ 14 (Cloud-Service-Endpunkte), 169.254.0.0/16 (IPv4-Link-Local-Adressen), 224.0.0.0/4 (IPv4-Multicast-Adressen). Die Präfixlänge des CIDR des Client-IP-Adressenpools muss zwischen /9 (8.388.608 Adressen) und /22 (1024 Adressen) liegen. Es wird ein CIDR-Block empfohlen, der die doppelte Anzahl an IP-Adressen enthält, die für die Aktivierung der maximalen Anzahl gleichzeitiger Verbindungen erforderlich sind.
- --cert: Die Zertifikatsinstanz-CRN für diesen VPN-Server.
- --client-auth-methods: Durch Kommas getrennte Liste der Clientauthentifizierungsmethoden. Folgende Werte sind zulässig: certificate, username, certificate,username, username,certificate.
- --client-ca: Der CRN der Zertifikatsinstanz, der für die VPN-Clientzertifizierungsstelle verwendet werden soll.
- --client-crl: CRL | @CRL-Datei. Der Inhalt der Zertifikatswiderrufsliste, der im PEM-Format codiert ist.
- --client-dns: Durch Kommas getrennte DNS-Serveradressen, die für VPN-Clients bereitgestellt werden, die mit diesem VPN-Server verbunden sind. Es können maximal zwei DNS-Server festgelegt werden.
- --client-idle-timeout: Die Sekunden, die ein VPN-Client inaktiv sein kann, bevor dieser VPN-Server die Verbindung trennt. Geben Sie 0 an, um zu verhindern, dass der Server inaktive Clients trennt (Standardwert: 600).
- --enable-split-tunnel: Gibt an, ob das Split-Tunneling für diesen VPN-Server aktiviert ist. Folgende Werte sind zulässig: false, true (Standardwert: false).
- --port: Die Portnummer, die für diesen VPN-Server verwendet werden soll (Standardwert: 443).
- --protocol: Das Transportprotokoll, das für diesen VPN-Server verwendet werden soll. Folgende Werte sind zulässig: udp, tcp (Standardwert: udp).
- --sg: Durch Kommas getrennte IDs oder Namen von Sicherheitsgruppen für den VPN-Server.
- --name: Neuer Name für den VPN-Server.
- --resource-group-id: ID der Ressourcengruppe. Diese Option und die Option --resource-group-name schließen sich gegenseitig aus.
- --resource-group-name: Name der Ressourcengruppe. Diese Option und die Option --resource-group-id schließen sich gegenseitig aus.
- --output: Gibt das Ausgabeformat an. Nur JSON wird unterstützt. Option: JSON.
- -q, --quiet: Ausführliche Ausgabe unterdrücken.
Befehlsbeispiele
ibmcloud is vpn-server-create --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.165.7.0/20 --client-auth-methods certificate --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc
ibmcloud is vpn-server-create --name myvpnserver --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.166.7.0/20 --client-auth-methods username
ibmcloud is vpn-server-create --name myvpnserver2 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.167.7.0/20 --client-auth-methods username --client-dns 9.9.9.9,8.8.8.8 --protocol tcp --port 8888 --enable-split-tunnel true --client-idle-timeout 1200
ibmcloud is vpn-server-create --name myvpnserver3 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.168.7.0/20 --client-auth-methods username --sg r006-e32f671c-463d-4f93-88e3-2dd0413476b4 --sg r006-3af7a9db-d9bc-43d4-bced-93e0a33fee25
ibmcloud is vpn-server-create --subnets 0736-4b871e22-e819-4f87-bb17-e457a88246a2 --client-ip-pool 192.170.0.0/22 --client-dns 172.34.1.100 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-auth-methods certificate,username --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-crl @./openvpn/crl.pem --name vpnswithcrl --sg r006-5744b689-e5c4-461d-9f9b-ce5e7e8dbed6
Einrichten eines VPN-Servers über die API
Um mit der API einen Client-zu-Standort-VPN-Server einzurichten, führen Sie die folgenden Schritte aus:
-
Richten Sie Ihre API-Umgebung mit den richtigen Variablen ein.
-
Speichern Sie weitere Variablen; die in den API-Befehlen verwendet werden sollen. Zum Beispiel:
ResourceGroupId- Suchen Sie die Ressourcengruppen-ID mithilfe des Befehlsget resource groupsund füllen Sie dann die Variable:
export ResourceGroupId=<your_resourcegroup_id>SubnetId- Suchen Sie die Teilnetz-ID mithilfe des Befehlsget subnetund füllen Sie anschließend die Variable:
export SubnetId=<your_subnet_id> -
Wenn alle Variablen initialisiert sind, erstellen Sie den VPN-Server:
curl -X POST "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "certificate": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" }, "client_ip_pool": "192.168.50.0/22", "name": "my-new-vpn-server", "subnets": [ { "id": "0716-046c3fd3-1cc5-40f6-b0ad-bbc305308f6d" }, { "id": "0717-30ff71ff-3e90-42a9-aa93-96a062081f18" } ], "client_authentication": [ { "method": "certificate", "client_ca": { "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc" } }, { "method": "username", "identity_provider": { "provider_type": "iam" } } ] "resource_group": { "id": "'$ResourceGroupId'" } }'
Den vollständigen Satz von APIs für Client-to-Site-VPN-Server finden Sie in der VPC-API-Referenz.
Erstellen eines VPN-Servers mit Terraform
Um einen VPN-Server mit Terraform einzurichten, folgen Sie diesen Schritten:
-
Erstellen Sie eine Instanz von „ IBM Cloud Secrets Manager “.
-
Erzeugen Sie das Server-Zertifikat/den Schlüssel und das Client-Zertifikat/den Schlüssel lokal und importieren Sie sie in die Instanz Secrets Manager, oder erzeugen Sie die Zertifikate/Schlüssel mithilfe der Funktion für private Zertifikate im Dienst Secrets Manager.
resource "ibm_resource_instance" "sec_mgr" { name = "vpc-secmgr" service = "secrets-manager" plan = var.service_plan location = var.region_name resource_group_id = data.ibm_resource_group.group.id timeouts { create = "30m" update = "30m" delete = "30m" } } resource "ibm_sm_secret_group" "sm_secret_group" { instance_id = ibm_resource_instance.sec_mgr[0].guid region = var.region_name name = "vpc-sec-group" description = "default secret group" } output "import_cert_server_crn" { value = ibm_sm_imported_certificate.sm_imported_certificate_server.crn } output "import_cert_client_crn" { value = ibm_sm_imported_certificate.sm_imported_certificate_client.crn } -
Erstellen Sie eine VPC mit einem Subnetz.
resource "ibm_is_vpc" "vpc" { name = "vpc-vpnserver" } resource "ibm_is_subnet" "subnet" { name = "mysubnet-tf" vpc = ibm_is_vpc.vpc.id zone = var.zone_name total_ipv4_address_count = 256 } -
Erstellen Sie eine Sicherheitsgruppe mit eingehenden und ausgehenden Regeln, um den gesamten Datenverkehr zuzulassen.
resource "ibm_is_security_group" "sg_all" { name = "vpc-sg-all" vpc = ibm_is_vpc.vpc.id } resource "ibm_is_security_group_rule" "sg_rule1" { group = ibm_is_security_group.sg_all.id direction = "inbound" remote = "0.0.0.0/0" } resource "ibm_is_security_group_rule" "sg_rule2" { group = ibm_is_security_group.sg_all.id direction = "outbound" remote = "0.0.0.0/0" } -
Erstellen Sie den VPN-Server innerhalb des Subnetzes, der Sicherheitsgruppe und der Server/Client-Zertifikate in der Instanz Secrets Manager.
resource "ibm_is_vpn_server" "example" { certificate_crn = ibm_sm_imported_certificate.sm_imported_certificate_server.crn client_authentication { method = "certificate" client_ca_crn = ibm_sm_imported_certificate.sm_imported_certificate_client.crn } client_ip_pool = "198.168.0.0/16" enable_split_tunneling = true name = "terry-vpn-server" port = 443 protocol = "tcp" subnets = [ibm_is_subnet.subnet.id] security_groups = [ibm_is_security_group.sg_all.id] } resource "ibm_is_vpn_server_route" "cse1" { vpn_server = ibm_is_vpn_server.example.id destination = "166.8.0.0/14" name = "vpn-server-route-cse1" } resource "ibm_is_vpn_server_route" "cse2" { vpn_server = ibm_is_vpn_server.example.id destination = "161.26.0.0/16" name = "vpn-server-route-cse2" } -
Laden Sie das VPN-Client-Profil herunter und konfigurieren Sie das Client-Zertifikat und den Schlüssel im Client-Profil.
data "ibm_is_vpn_server_client_configuration" "my_vpn_client_conf" { vpn_server = ibm_is_vpn_server.example.id } resource "local_file" "my_vpn_client_conf" { content = "${data.ibm_is_vpn_server_client_configuration.my_vpn_client_conf.vpn_server_client_configuration}\ncert ${path.cwd}/import_certs/client_cert.pem\nkey ${path.cwd}/import_certs/client_key.pem" filename = "my_vpn_server.ovpn" }Anschließend kann ein Benutzer das VPN-Client-Profil mit dem OpenVPN Client verwenden, um sein Client-System mit dem erstellten VPN-Server zu verbinden.
Weitere Informationen finden Sie unter „ IBM Terraform-Registry “.
Nächste Schritte
- Um zu überprüfen, ob der VPN-Server erfolgreich erstellt wurde, warten Sie einige Minuten und rufen Sie anschließend die Tabelle „Client-to-Site-Server“ auf, um sicherzustellen, dass der Status des VPN-Servers „
Stable“ und der Integritätsstatus „Healthy“ lautet. - Erstellen Sie VPN-Routen.
- Konfigurieren Sie eine VPN-Clientumgebung und stellen Sie eine Verbindung zum VPN-Server her.