Réseaux privés VPS

Cette page vous explique comment utiliser les Réseaux Privés sur les VPS GandiCloud.

Les Réseaux Privés sur GandiCloud

Un réseau privé vous permet de connecter plusieurs VPS GandiCloud entre eux, pour qu’ils puissent communiquer à travers des IPs privées sans que leur trafic passe par internet.

Un exemple de cas courant est de connecter une application avec sa base de données, tout en ayant ces services hébergés sur 2 serveurs séparés pour une meilleure gestion des ressources. Un réseau privé aide à s’assurer que les services peuvent communiquer sans que la base de données soit accessible depuis internet.

Comme toutes les opérations sur vos ressources GandiCloud, vous avez plusieurs moyens de gérer vos réseaux privés:

  1. Via l’interface d’administration de Gandi

  2. Via la CLI OpenStack ou tout autre outils qui sait utiliser l’API OpenStack, comme terraform.

Via l’interface d’administration

L’interface d’administration Gandi cherche à être la plus simple possible d’utilisation.

Commencez par vous rendre sur la page de création en choisissant [Créer une ressource] sur la page d’administration principale de GandiCloud VPS. Dans le menu déroulant, choisissez [Nouveau réseau]. Sur la page suivante, indiquez :

  • un nom pour identifier votre réseau

  • La plage d’adresses IPs à fournir à vos serveurs, par exemple : 192.168.0.0/24

Après cette étape, vous êtes redirigé(e) sur la page de vue d’ensemble de votre réseau. Celle-ci contient les information de votre réseau et les IPs qui seront par la suite assignées à vos serveurs.

Depuis cet écran, vous pouvez cliquer sur le bouton [Créer] à côté du tableau des adresses IPs pour rattacher vos serveurs. Vous pourrez alors remplir un formulaire pour indiquer :

  • Quelle IP doit être créée. Vous pouvez l’indiquer manuellement (dans la plage de ce réseau) ou celle-ci peut être automatiquement sélectionnée pour vous.

  • Le serveur auquel rattacher cette IP

Une fois le formulaire confirmé, vous devriez voir une nouvelle interface réseau apparaitre dans votre serveur. Pour la configurer, voir Dans votre serveur.

Pour détacher un serveur de votre réseau privé, cliquez simplement sur l’icône de poubelle à coté de son IP privée dans l’écran de vue d’ensemble du réseau. L’interface réseau sera alors retirée de votre serveur.

Via la CLI OpenStack

Assurez-vous d’avoir déjà configuré votre accès au CLI

Créer un réseau privé et un sous-réseau

Pour avoir un réseau privé fonctionnel, vous devez, en premier, créer un réseau et son sous-réseau.

openstack network create <nom_reseau>
openstack subnet create --network <nom_reseau> --subnet-range <CIDR_prive> --dhcp --gateway None --dns-nameserver 0.0.0.0 <nom_sous-reseau>

Assurez-vous d’inclure les paramètres suivants :

  • <nom_reseau>: Le nom que vous voulez donner à votre réseau

  • <CDIR_privee>: La plage d’adresses IPs à fournir à vos serveurs, par exemple : 192.168.0.0/24

  • –dhcp: Assure que vos serveurs obtiennent leur propre adresse IP privée via DHCP

  • –gateway None: Si vos serveurs on aussi une IP publqiue, ce paramètre les empêche d’avoir une route par défaut vers leurs interfaces privées, car vous souhaiterez surement que cette route par défaut passe par l’interface publique.

  • –dns-nameserver 0.0.0.0: Ce paramètre désactive OpenStack de ce déclarer lui-même comme serveur de nom via DHCP sur son réseau, afin d’éviter des problèmes dans la résolution de nom si vous utilisez aussi le réseau public.

  • <nom_sous-reseau>: Le nom que vous voulez donner à votre sous-réseau

Lister vos ressources privées

Vous pouvez lister tous vos réseaux privés et obtenir facilement leurs informations avec le CLI OpenStack :

openstack network list
+--------------------------------------+--------------------+------------------------------------------------------------------------------------------------------------------+
| ID                                   | Nom                | Sous-réseaux                                                                                                     |
+--------------------------------------+--------------------+------------------------------------------------------------------------------------------------------------------+
| 4f60516f-5f84-4383-9eb7-3315a997e3fa | public             | 85f96b71-ad3e-4c87-93f8-3dc0e5b5fa0a, aa800dcf-1dc0-4654-8404-d2b5642525ea, b6476bbd-6c43-400c-9880-9724ce572afa |
| 86dee42f-2e13-4527-ab48-fb8824170c1b | my-private-network | 58badf76-6eb0-47de-ad06-8628c2a56bef                                                                             |
+--------------------------------------+--------------------+------------------------------------------------------------------------------------------------------------------+

openstack network show my-private-network                       # Récupérer les détails du réseau

openstack subnet show 58badf76-6eb0-47de-ad06-8628c2a56bef      # Récupérer les détails du sous-réseau

openstack port list --network my-private-network                # Lister les ports existants sur ce réseau

openstack server list | grep my-private-network                 # Lister les serveurs ayant un port sur ce réseau

Connecter un serveur existant à votre réseau privé

Une fois votre réseau privé prêt, vous pouvez commencer à créer des ports sur ce réseau et ajouter ces ports à vos serveurs.

Note

Les commandes ci-dessous considèrent que vous avez déjà vos serveurs et que vous voulez les connecter entre eux via un réseau privé. Vous pouvez aussi créer de nouveaux serveurs directement liés à votre réseau privé en ajoutant un paramètre --network <nom_ou_id_reseau> à votre commande openstack server create (avec ou sans --network public). Voir Créer un nouveau serveur connecté à votre réseau privé.

Option 1 : Sélectionner l’IP automatiquement

Vous pouvez choisir la solution de facilité et laisser OpenStack sélectionner une adresse IP dans votre réseau privé pour vous, la première option est de lancez les commandes suivantes :

openstack server add network <nom_ou_id_serveur> <nom_ou_id_reseau>

Assurez-vous d’inclure les paramètres suivants :

  • <nom_ou_id_serveur>: Le nom ou l’ID (identification) du serveur que vous voulez connecter à ce réseau

  • nom_ou_id_reseau>: Le nom ou l’ID du réseau privé

Sous le capot, OpenStack va créer un pot, choisir une IP dans le sous-réseau que vous avez créé auparavant et attacher ce port à votre serveur.

Option 2 : choisir votre IP manuellement

Si vous voulez spécifier l’IP privée que vous voulez assigner à un serveur, vous devrez créer un port et l’attacher à votre serveur.

openstack port create --network <nom_ou_id_reseau> --fixed-ip ip-address=<adresse_ip> <nom_port>
openstack server add port <nom_ou_id_serveur> <nom_ou_id_port>

Assurez-vous d’inclure :

  • <nom_ou_id_reseau>: Le nom ou l’ID du réseau privé

  • <adresse_ip>: L’adresse IP a assigné. Cette IP doit appartenir à la plage du sous-réseau créé précédemment dans le réseau

  • <nom_port>: Un nom pour le port

  • <nom_ou_id_port>: L’ID retournée par la commande de création de port, ou le nom choisi pour le port

  • <nom_ou_id_serveur>: Le nom ou l’ID du serveur que vous voulez connecter au réseau

Dans votre serveur

Une fois que vous avez attaché un port à votre serveur, vous verrez une nouvelle interface apparaitre sur votre serveur (généralement appelée enX1 ou eth1) :

ip a

Si vous ne voyez aucune adresse IP pour cette interface, vous devrez configurer le DHCP (selon les logiciels que vous utilisez pour gérer le réseau de votre serveur), ou initier une requête dhcp manuellement.

Par exemple, notre image de base Debian 12 (Bookworm) s’appuie sur netplan pour piloter la configuration réseau de manière déclarative.

Vous devriez voir l’interface enX1 avec le statut « unmanaged » en lançant la commande suivante :

sudo netplan status --all

L’interface peut avoir un autre nom si vous avez d’autres interfaces réseau configurées.

Cette configuration est gérée via des fichiers YAML localisés dans /etc/netplan/. Pour gérer votre nouvelle interface enX1 via netplan et activer le DHCP, vous pouvez utiliser les commandes suivantes :

sudo netplan set --origin-hint second-interface ethernets.enX1.dhcp4=true
sudo netplan apply

La 1ère commande va écrire la configuration souhaitée de l’interface dans un nouveau fichier /etc/netplan/second-interface.yaml et la seconde va appliquer la configuration netplan.

Par la suite, vous devriez voir l’IP privée configurée en lançant ip a ou sudo netplan status et vous devriez pouvoir joindre les autres serveurs de votre réseau.

Si vous utilisez d’autres logiciels pour la gestion du réseau, vous pouvez essayer de lancer manuellement une requête DHCP pour vérifier la connectivité :

sudo dhclient <nom_interface>

Créer un nouveau serveur connecté à votre réseau privé

En utilisant l’API OpenStack, vous pouvez créer des serveurs connectés directement à votre réseau privé. Cela vous permet de créer des serveurs sans interface donnant sur le réseau public, et donc injoignable par internet.

Important

Avec les commandes ci-dessous, votre serveur n’obtiendra qu’une adresse IP de votre réseau privé. Cela signifie, par exemple, que vous ne serez pas en mesure de vous connecter à ce dernier via la commande ssh, directement depuis votre ordinateur. Pour accéder à votre serveur et le configurer, plusieurs solutions existent qui ne seront pas détaillées ici.

  • Ajouter un paramètre --network public à votre commande openstack server create, pour que votre serveur obtienne une adresse IP publique joignable sur internet (le paramètre --network peut être défini plusieurs fois)

  • Utiliser un autre serveur qui a une adresse IP publique et une adresse IP privée dans votre réseau, comme bastion pour joindre votre serveur.

  • Compter sur cloud-init pour configurer votre serveur (ajouter un paramètre --user-data dans la commande ``openstack server create)

Important

Les commandes ci-dessous signifient aussi que votre serveur ne sera pas en mesure de se connecter à internet, sauf si vous utilisez un autre serveur comme passerelle (en utilisant NAT par exemple).

En premier, récupérez l’ID ou le nom de votre réseau privé :

openstack network list

De là, vous avez 2 options :

Option 1 : sélectionner l’IP automatiquement

Créez votre serveur en utilisatn le paramètre --network :

openstack server create \
    --flavor <flavor> \
    --boot-from-volume <taille_volume> \
    --image '<nom_ou_id_image>' \
    --key-name <votre_cle> \
    --network <nom_ou_id_reseau> \
    <nom_serveur>

Avec les paramètres suivants :

  • <flavor>: Le nom ou l’ID de la “flavor” voulue (voir openstack flavor list, ex. V-R1)

  • <taille_volume>: Taille du volume d’amorçage du serveur, en Go

  • <nom_ou_id_image>: Le nom ou l’ID de l’image d’amorçage (voir openstack image list, ex. Debian 12 Bookworm)

  • <votre_cle>: Le nom ou l’ID de la clé SSH à insérer dans l’amorçage (voir openstack keypair list)

  • <nom_ou_id_reseau>: Le nom ou l’ID de votre réseau privé

  • <nom_serveur>: Le nom de votre nouveau serveur

Votre serveur sera créé avec une adresse IP choisie aléatoirement dans le sous-réseau de votre réseau privé.

Option 2: choisir votre IP manuellement

Créer votre serveur en utilisant le paramètre --nic :

openstack server create \
  --flavor <flavor> \
  --boot-from-volume <taille_volume> \
  --image '<nom_ou_id_image>' \
  --key-name <votre_cle> \
  --nic net-id=<id_reseau>,v4-fixed-ip=<adresse_ip> \
      <server_name>

Avec les paramètres suivants :

  • <flavor>: Le nom ou l’ID de la “flavor” voulue (voir openstack flavor list, ex. V-R1)

  • <taille_volume>: Taille du volume d’amorçage du serveur, en Go

  • <nom_ou_id_image>: Le nom ou l’ID de l’image d’amorçage (voir openstack image list, ex. Debian 12 Bookworm)

  • <votre_cle>: Le nom ou l’ID de la clé SSH à insérer dans l’amorçage (voir openstack keypair list)

  • <id_reseau>: L’ID de votre réseau privé

  • <adresse_ip>: L’adresse IP dans votre sous-réseau du réseau privé

  • <nom_serveur>: Le nom de votre nouveau serveur