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.

Pour le moment, cette fonctionnalité ne peut être utilisée que via l’API Openstack. Vous pouvez créer et gérer vos réseaux privés en utilisant n’importe quel outil capable d’utiliser cette API.

Cette documentation va utiliser le CLI OpenStack comme exemple, donc 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_port> <nom_ou_id_serveur>

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

Sur 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 eth1) :

ip a

Si vous ne voyez aucune adresse IP pour cette interface, vous devrez initier une requête dhcp manuellement :

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