Création d'un serveur VPN
Créez un serveur VPN pour permettre aux clients d'Internet de se connecter au réseau VPC tout en maintenant une connectivité sécurisée.
Vous pouvez créer un serveur VPN à l'aide de la console, de l'interface de ligne de commande (CLI), de l'API ou de Terraform.
Avant de commencer
Avant de mettre à disposition un serveur VPN, remplissez les prérequis suivants dans l'ordre suivant :
-
Passez en revue la rubrique Remarques relatives à la planification des serveurs VPN.
-
Choisissez le mode d'authentification du client VPN à utiliser : par certificat, par identifiant et mot de passe, ou les deux. Pour plus d'informations, voir Configuration de l'authentification client à site.
-
Créez une instance de service Secrets Manager et gérez les certificats.
Il est recommandé de créer un certificat privé en gardant à l'esprit ces considérations.
-
Créer une autorisation IAM de service à service pour votre serveur VPN et IBM Cloud Secrets Manager.
-
Créez un VPC et au moins un sous-réseau dans votre VPC sélectionné.
Pour la haute disponibilité, créez un VPC et deux sous-réseaux dans deux zones différentes. Le serveur VPN réside dans les deux sous-réseaux.
Créer un serveur VPN dans la console
Pour créer un serveur VPN dans la console, procédez comme suit :
-
Remplissez l'ensemble des prérequis de la section "Avant de commencer".
-
Dans votre navigateur, ouvrez la console IBM Cloud et connectez-vous à votre compte.
-
Sélectionnez l'
menu de navigation, puis cliquez sur l'icône Infrastructure
> Réseau > VPN.
-
Cliquez sur Créer dans l'angle supérieur droit de la page.
-
Dans la section « Type de VPN », cliquez sur « Serveurs client-site ».
Section de type VPN La section « Emplacements » indique la région dans laquelle se trouve le VPC et où le serveur VPN sera déployé.
-
Dans la section Détails, indiquez les informations suivantes :
-
Nom du serveur VPN - Entrez un nom pour le serveur VPN, tel que
my-vpn-server. -
Groupe de ressources - Sélectionnez un groupe de ressources pour le serveur VPN.
-
Balises- Vous pouvez, si vous le souhaitez, ajouter des balises pour organiser vos ressources, suivre leurs coûts d'utilisation ou gérer leur accès.
-
Balises de gestion des accès-Si vous le souhaitez, ajoutez des balises de gestion des accès aux ressources pour faciliter l'organisation des relations de contrôle d'accès.
key:valueest le seul format pris en charge pour les étiquettes de gestion des accès. Pour plus d'informations, voir Contrôle de l'accès aux ressources à l'aide d'étiquettes. -
Cloud privé virtuel - Sélectionnez le VPC pour le serveur VPN.
-
Pool d'adresses IPv4 du client - Entrez une plage CIDR. Une adresse IP est attribuée au client pour sa session à partir de ce pool d'adresses.
Section des détails du VPN
-
-
Dans la section Sous-réseaux, indiquez les informations suivantes :
-
Sélectionnez un mode de serveur VPN :
- Mode haute disponibilité - Déploie le serveur VPN sur deux sous-réseaux dans des zones différentes. Convient aux solutions et déploiements multizones où l'accès au VPN par les clients est critique.
- Mode autonome - Déploie le serveur VPN dans un seul sous-réseau et une seule zone. Convient aux déploiements monozones où la résilience multizone n'est pas requise.
-
Indiquez le sous-réseau (mode autonome) ou les sous-réseaux (mode HA) pour votre VPC.
Section Sous-réseaux VPN
-
-
Dans la section Authentification, indiquez les informations suivantes :
-
Authentification du serveur VPN- Sélectionnez le certificat du serveur SSL à partir de Secrets Manager. Renseignez toutes les zones requises.
Section d'authentification du serveur VPN -
Modes d'authentification du client - Choisissez de configurer l'authentification de l'utilisateur à l'aide d'un certificat client, d'un ID utilisateur et d'un code d'accès, ou des deux.
-
Certificat client - Vous pouvez sélectionner un certificat client et configurer un ID utilisateur et un code d'accès pour une sécurité optimale. Un identifiant utilisateur et un mot de passe constituent un niveau de sécurité supplémentaire qui nécessite des informations d'identification supplémentaires pour accéder au compte.
En option, vous pouvez télécharger une liste de révocation de certificats (CRL) au format PEM. Après le téléchargement d'une CRL, le fichier PEM apparaît comme le nom du serveur VPN.
-
ID utilisateur et code d'accès-Configurez l'authentification ajoutée pour les utilisateurs du client VPN. Cette méthode d'authentification offre un niveau de sécurité supplémentaire qui s'intègre à la gestion des identités et des accès (IAM) d' IBM Cloud pour finaliser l'authentification du client. Une fois l'authentification terminée, le système transmet le code au client « openVPN » à des fins d'authentification.
Section d'authentification du client VPN -
-
-
Dans la section Groupes de sécurité, sélectionnez au moins un groupe de sécurité.
Pour configurer un ou plusieurs groupes de sécurité et leurs règles ou, en option, pour configurer des listes de contrôle d'accès (ACL) sur le sous-réseau où vous prévoyez de déployer le serveur VPN et d'autres sous-réseaux VPC qui communiquent via le tunnel VPN, voir Configuration des ACL à utiliser avec un serveur VPN.
Section Groupes de sécurité VPN Vous pouvez joindre des groupes de sécurité après la mise à disposition à partir de la page des détails du serveur VPN (onglet Groupes de sécurité).
-
Dans la section Additional configuration, indiquez les informations suivantes :
-
DNS server IP address - En option, indiquez une ou deux adresses IP de serveur DNS pour la résolution de noms de domaine.
-
Idle timeout session (seconds) - Si le serveur VPN n'a pas de trafic avant l'expiration de cet intervalle, il est automatiquement déconnecté. Cette valeur peut être comprise entre
0et28800secondes. La valeur par défaut est600secondes. -
Protocole de transport - Sélectionnez l'un des protocoles suivants et entrez un port VPN valide (
1 - 65535).- UDP est un protocole sans connexion qui vérifie les erreurs mais ignore les paquets erronés. Plus rapide que TCP.
- TCP est un protocole orienté connexion doté des fonctions de vérification et de correction des erreurs. Plus fiable que le protocole UDP.
-
Tunnel mode - Indiquez l'une des options suivantes :
-
Tunnel complet - Tout le trafic passe par l'interface VPN vers le tunnel VPN.
-
Tunnel fractionné - Le trafic privé passe par l'interface VPN vers le tunnel VPN, et le trafic public passe par l'interface LAN existante.
Section de configuration supplémentaire VPN
-
-
Création d'un serveur VPN à partir de l'interface en ligne de commande
Avant de commencer, configurez votre environnement d'interface de ligne de commande.
Pour créer un serveur VPN à partir de l'interface de ligne de commande, saisissez la commande suivante :
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]
Options de commande
- --subnets : ID séparés par des virgules des sous-réseaux dans lesquels mettre à disposition ce serveur VPN. Utilisez des sous-réseaux dans des zones différentes pour une haute disponibilité, deux sous-réseaux peuvent être définis au maximum.
- --client-ip-pool : pool d'adresses IPv4 du client VPN, exprimé au format CIDR. La demande ne doit chevaucher aucun préfixe d'adresse existant dans le VPC, ni les plages d'adresses réservées suivantes : 127.0.0.0/8 (adresses de bouclage IPv4), 161.26.0.0/16 (services IBM), 166.8.0.0/14 (points d'extrémité de service cloud), 169.254.0.0/16 (adresses lien-local IPv4), 224.0.0.0/4 (adresses de multidiffusion IPv4). La longueur de préfixe du bloc CIDR du pool d'adresses IP client doit être comprise entre /9 (8 388 608 adresses) et /22 (1 024 adresses). Il est recommandé de définir un bloc CIDR contenant deux fois plus d'adresses IP que le nombre requis pour permettre le maximum de connexions simultanées.
- --cert : CRN de l'instance de certificat pour ce serveur VPN.
- --client-auth-methods : liste des méthodes d'authentification du client, séparée par des virgules. L'un des éléments suivants : certificate, username, certificate,username, username,certificate.
- --client-ca : CRN de l'instance de certificat à utiliser pour l'autorité de certification (CA) du client VPN.
- --client-crl : CRL | @CRL-file. Contenu de la liste de révocation des certificats, encodé au format PEM.
- --client-dns : liste séparée par des virgules des adresses de serveurs DNS qui seront fournies aux clients VPN connectés à ce serveur VPN. Deux serveurs DNS peuvent être définis au maximum.
- --client-idle-timeout : secondes pendant lesquelles un client VPN peut être inactif avant que le serveur VPN ne le déconnecte. Spécifiez 0 pour empêcher le serveur de déconnecter les clients inactifs (par défaut : 600).
- --enable-split-tunnel : indique si la tunnelisation fractionnée est activée sur ce serveur VPN. L'un des éléments suivants : false, true (valeur par défaut : false).
- --port : numéro de port à utiliser pour ce serveur VPN (valeur par défaut : 443).
- --protocol : protocole de transport à utiliser pour ce serveur VPN. L'un des éléments suivants : udp, tcp (valeur par défaut : udp).
- --sg: ID ou noms de groupes de sécurité, séparés par des virgules, pour le serveur VPN.
- --name : nouveau nom pour le serveur vpn.
- --resource-group-id : ID du groupe de ressources. Cette option est mutuellement exclusive avec --resource-group-name.
- --resource-group-name : nom du groupe de ressources. Cette option est mutuellement exclusive avec --resource-group-id.
- --output : spécifiez le format de sortie. Seul le format JSON est pris en charge. Valeur admise : JSON.
- -q, --quiet : supprimer les sorties prolixes.
Exemples de commande
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
Création d'un serveur VPN à l'aide de l'API
Pour créer un serveur VPN client-site à l'aide de l'API, procédez comme suit :
-
Configurez votre environnement d'API avec les variables appropriées.
-
Stockez d'autres variables destinées à être utilisées dans les commandes d'API, par exemple :
ResourceGroupId- Recherchez l'ID groupe de ressources à l'aide de la commandeget resource groups, puis renseignez la variable :
export ResourceGroupId=<your_resourcegroup_id>SubnetId- Recherchez l'ID sous-réseau à l'aide de la commandeget subnet, puis renseignez la variable :
export SubnetId=<your_subnet_id> -
Lorsque toutes les variables sont initialisées, créez le serveur VPN :
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'" } }'
Pour consulter l'ensemble des API pour les serveurs VPN client à site, voir la référence API VPC.
Créer un serveur VPN avec Terraform
Pour configurer un serveur VPN avec Terraform, procédez comme suit :
-
Créer une instance d' IBM Cloud Secrets Manager.
-
Générez le certificat/clé du serveur et le certificat/clé du client localement et importez-les dans l'instance Secrets Manager, ou générez les certificats/clés en utilisant la capacité de certificat privé dans le service 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 } -
Créez un VPC avec un sous-réseau.
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 } -
Créez un groupe de sécurité avec des règles d'entrée et de sortie pour autoriser tout le trafic.
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" } -
Créer le serveur VPN dans le sous-réseau, le groupe de sécurité et les certificats serveur/client dans l'instance 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" } -
Téléchargez le profil client VPN et configurez le certificat et la clé du client dans le profil client.
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" }Ensuite, un utilisateur peut utiliser le profil client VPN avec le client OpenVPN pour connecter son système client au serveur VPN créé.
Pour plus d'informations, consultez le registre Terraform de l' IBM.
Etapes suivantes
- Pour vérifier que le serveur VPN a bien été créé, attendez quelques minutes, puis accédez au tableau « Serveurs client-site » afin de vous
assurer que l'état du serveur VPN est «
Stable» et que l'état de santé est «Healthy». - Créez des routes VPN.
- Configurez un environnement client VPN et connectez-vous au serveur VPN.