Réserver une adresse IP interne statique

Si une instance de machine virtuelle (VM) nécessite une adresse IP interne fixe qui ne change pas, vous pouvez obtenir une adresse IP interne statique de l'une des façons suivantes :

Pour savoir comment gérer les adresses IP internes secondaires, consultez la documentation sur les plages d'adresses IP d'alias.

Dans Compute Engine, chaque instance de VM peut avoir plusieurs interfaces réseau. Chaque interface peut avoir une adresse IP externe, une adresse IP interne principale et une ou plusieurs adresses IP internes secondaires. Les règles de transfert peuvent disposer d'adresses IP externes pour l'équilibrage de charge externe ou d'adresses internes pour l'équilibrage de charge interne. Pour en savoir plus sur les adresses IP, consultez la documentation sur les adresses IP.

Les adresses IP internes statiques permettent de réserver des adresses IP internes dans la plage d'adresses IP configurée dans le sous-réseau, puis d'attribuer ces adresses internes réservées aux ressources selon vos besoins. Le fait de réserver une adresse IP interne exclut celle-ci du pool d'allocation dynamique et évite qu'elle ne soit utilisée pour des allocations automatiques. La réservation d'adresses IP internes statiques nécessite des autorisations IAM spécifiques, de sorte que seuls les utilisateurs autorisés peuvent réserver ces adresses.

Vous pouvez réserver des adresses IP internes statiques, de manière à toujours utiliser la même adresse IP pour la même ressource, même si vous devez supprimer et recréer cette ressource.

Pour réserver une adresse IP externe statique à la place d'une adresse IP interne, consultez la page Réserver une adresse IP externe statique.

Avant de commencer

Autorisations

Pour réserver et gérer des adresses IP internes statiques, vous devez disposer du rôle compute.networkAdmin ou d'une ou plusieurs des autorisations suivantes :

  • compute.addresses.create sur l'adresse IP
  • compute.addresses.createInternal sur l'adresse IP
  • compute.instances.update sur l'instance de VM
  • compute.subnetworks.use sur le sous-réseau

Restrictions

  • Vous ne pouvez pas modifier l'adresse IP interne d'une ressource existante. Par exemple, vous ne pouvez pas attribuer une nouvelle adresse IP interne statique à une instance de VM en cours d'exécution. Cependant, vous pouvez convertir l'adresse IP interne éphémère d'une ressource en adresse IP interne statique afin que l'adresse reste réservée, même après la suppression de la ressource.

  • Le nombre d'adresses IP internes statiques que vous pouvez réserver ne peut pas dépasser le quota de votre projet. Pour plus d'informations, vérifiez quels sont les quotas par projet dans la documentation VPC.

  • Une adresse IP interne statique peut être utilisée par une seule ressource à la fois.

  • Il n'y a aucun moyen de savoir si une adresse IP est statique ou éphémère après son attribution à une ressource, si ce n'est en comparant l'adresse IP à la liste des adresses IP internes statiques réservées pour ce projet. Exécutez la sous-commande addresses list pour afficher la liste des adresses IP internes statiques disponibles pour le projet.

  • La réservation d'une adresse IP interne statique est uniquement disponible pour les réseaux VPC. Elle n'est pas compatible avec les anciens réseaux.

  • La suppression d'une ressource ne libère pas automatiquement une adresse IP interne statique. Vous devez libérer manuellement les adresses IP internes statiques lorsque vous n'en avez plus besoin.

  • Vous ne pouvez pas modifier le nom d'une adresse IP statique.

Réserver une adresse IP interne statique

Vous pouvez réserver une adresse IP interne statique avant de créer la ressource associée. Vous avez également la possibilité de créer la ressource avec une adresse IP interne éphémère que vous convertissez ensuite en adresse IP interne statique.

Pour utiliser une adresse IP interne statique, vous devez disposer d'un réseau VPC pour votre projet. Consultez la page Utiliser les réseaux VPC pour apprendre à créer votre réseau VPC.

Réserver une adresse spécifique et l'associer à une ressource particulière

Dans ce scénario, vous réservez séparément une adresse IP interne statique, puis vous l'attribuez à une ressource. En résumé :

  1. Créez un sous-réseau dans votre réseau VPC.

  2. Réservez une adresse IP interne dans la plage d'adresses IP principales du sous-réseau. Cette étape permet de créer une ressource qui contient cette adresse IP interne spécifique. Cette étape empêche également Google Cloud d'attribuer automatiquement cette adresse en tant qu'adresse éphémère.

  3. Utilisez l'adresse IP interne réservée en l'associant à une instance de VM ou à un équilibreur de charge interne lorsque vous créez la VM ou la ressource d'équilibreur de charge.

Spécifier une adresse IP interne éphémère pour une ressource et convertir l'adresse

Dans ce scénario, vous convertissez une adresse IP interne éphémère qui est toujours associée à une ressource en une adresse IP interne statique.

  1. Créez un sous-réseau.

  2. Créez une instance de VM ou un équilibreur de charge interne avec une adresse IP éphémère attribuée automatiquement ou une adresse IP spécifique.

  3. Convertissez l'adresse IP interne en adresse IP interne statique.

Les deux méthodes sont décrites dans le diagramme ci-dessous.

Réservation d'adresses IP internes

Réserver une nouvelle adresse IP statique interne

Avant de pouvoir réserver une nouvelle adresse IP interne statique, vous devez créer un réseau VPC avec un sous-réseau.

Console

Vous pouvez réserver une adresse IP interne autonome à l'aide de Cloud Console.

  1. Accédez à la page des réseaux VPC.

    Accéder aux réseaux VPC

  2. Cliquez sur le réseau VPC dans lequel vous souhaitez réserver la nouvelle adresse IP statique.
  3. Cliquez sur Adresses IP internes statiques, puis sur Réserver une adresse statique.
  4. Saisissez un nom pour cette adresse IP.
  5. Sélectionnez un sous-réseau.
  6. Si vous souhaitez spécifier l'adresse IP à réserver, sous Adresse IP statique, sélectionnez Laissez-moi choisir, puis indiquez une adresse IP personnalisée. Sinon, le système attribue automatiquement une adresse IP dans le sous-réseau.
  7. Si vous souhaitez partager cette adresse IP dans différents interfaces, sélectionnez Partagée sous Usage.
  8. Cliquez sur Réserver pour terminer le processus.

gcloud

À l'aide de l'outil gcloud, exécutez la commande compute addresses create :

gcloud compute addresses create ADDRESS_NAME [ADDRESS_NAME..] \
    --region REGION --subnet SUBNETWORK \
    --addresses IP_ADDRESS

Remplacez l'élément suivant :

  • ADDRESS_NAME : nom d'une ou de plusieurs adresses à créer.
  • REGION : région de la requête.
  • SUBNETWORK : sous-réseau de l'adresse IP interne.
  • IP_ADDRESS : adresse IP à réserver, qui doit être comprise dans la plage d'adresses IP principales du sous-réseau. Si aucune valeur n'est spécifiée, une adresse sera automatiquement attribuée depuis le sous-réseau.

Par exemple, pour réserver une adresse IP interne attribuée automatiquement dans un sous-réseau, procédez comme suit :

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1

Pour réserver une adresse IP interne spécifique dans un sous-réseau :

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1 --addresses 10.128.0.12

Vous pouvez créer plusieurs adresses en renseignant plusieurs noms d'adresses. Cependant, toutes les adresses seront réservées dans le même sous-réseau. Exemple :

gcloud compute addresses create example-address-1 example-address-2 \
    --region us-central1 --subnet subnet-1 \
    --addresses 10.128.0.12,10.128.0.13

API

Appelez la méthode addresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Le corps de la requête doit inclure le type d'adresse (addressType) avec la valeur INTERNAL, le nom de l'adresse (name) et le sous-réseau (subnetwork) auquel appartient l'adresse IP. Vous pouvez laisser le système attribuer automatiquement une adresse IP ou spécifier le paramètre address pour une adresse IP spécifique. L'adresse IP doit appartenir à la plage d'adresses IP principales du sous-réseau.

{
  "addressType": "INTERNAL",
  "name": "ADDRESS_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "address": "IP_ADDRESS"
}

Exemple :

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
}

Terraform

Vous pouvez utiliser un module Terraform pour créer une adresse IP interne.

Dans l'exemple suivant, les arguments Terraform contiennent des exemples de valeurs que vous pouvez modifier. L'exemple crée deux adresses IP internes spécifiques :

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "3.0.0"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
  addresses  = ["10.0.0.3", "10.0.0.4"]
}

L'exemple suivant permet de créer deux adresses IP internes allouées de manière dynamique :

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "3.0.0"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
}

Convertir une adresse IP interne éphémère utilisée en adresse statique

Si vous avez des adresses IP éphémères qui sont actuellement utilisées, vous pouvez les convertir en adresses IP internes statiques afin que les adresses restent disponibles dans votre projet jusqu'à ce que vous les supprimiez activement.

Avant de réserver une adresse IP existante, vous aurez besoin de la valeur de l'adresse IP que vous souhaitez convertir. Pour l'obtenir, envoyez une requête describe à la ressource. Par exemple, si vous convertissez une adresse IP actuellement utilisée par une instance de VM, exécutez la commande suivante :

gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"

L'outil gcloud renvoie la valeur networkIP, qui correspond à l'adresse IP interne utilisée par la ressource. Exemple :

networkIP: 10.240.0.2

Convertissez ensuite l'adresse.

Console

Pour convertir une adresse IP interne éphémère en adresse IP statique dans la console :

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Sélectionnez votre projet.

  3. Cliquez sur le nom de la VM que vous souhaitez modifier.

  4. Sur la page des détails, cliquez sur Modifier, puis procédez comme suit :

    1. Dans la section Interfaces réseau, cliquez sur l'interface réseau pour la modifier.
    2. Sous Type d'adresse IP interne, sélectionnez Statique.
    3. Fournissez les informations relatives à l'adresse IP statique.
    4. Pour enregistrer vos modifications, cliquez sur OK.
  5. Pour mettre à jour votre instance, cliquez sur Enregistrer.

gcloud

Pour convertir une ou plusieurs adresses IP existantes, exécutez la commande compute addresses create et définissez l'option --addresses avec les adresses IP internes explicites à convertir :

gcloud compute addresses create ADDRESS_NAME_1 [ADDRESS_NAME_2..] \
    --addresses IP_ADDRESS_1,[IP_ADDRESS_2,..] \
    --region REGION \
    --subnet SUBNETWORK

Remplacez l'élément suivant :

  • ADDRESS_NAME : noms que vous souhaitez donner à l'adresse. Déclarez les noms dans le même ordre que les adresses IP. Dans ce cas, ADDRESS_NAME_1 correspond à IP_ADDRESS_1 et ADDRESS_NAME_2 correspond à IP_ADDRESS_2.
  • IP_ADDRESS_1,[IP_ADDRESS_2,...] : adresses IP à promouvoir. Exemple :10.128.1.9
  • REGION : la région dans laquelle sera réservée cette adresse.
  • SUBNETWORK : le sous-réseau de cette requête.

Exemple :

gcloud compute addresses create example-address-1 example-address-2 \
    --addresses 10.128.4.90,10.128.0.232 \
    --region us-central1 \
    --subnet subnet-1

API

Appelez la méthode addresses.insert :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Le corps de la requête doit inclure le type d'adresse (addressType) avec la valeur INTERNAL, le nom de l'adresse (name), l'adresse à convertir (address) et le sous-réseau (subnetwork) auquel appartient l'adresse IP.

{
  "addressType": "INTERNAL",
  "address": "IP_ADDRESS",
  "name": "ADDRESS_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
}

Exemple :

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "address": "10.128.0.2",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
}

Créer une instance de VM avec une adresse IP interne spécifique

Vous pouvez choisir une adresse IP interne spécifique à attribuer à une instance lorsque vous créez l'instance. Il doit s'agir d'une adresse IP valide du sous-réseau de l'instance, et elle ne doit pas être déjà utilisée. L'adresse IP reste associée à l'instance jusqu'à ce que vous supprimiez cette dernière, ce qui libère l'adresse IP dans le pool. Si vous arrêtez et redémarrez l'instance, celle-ci conserve la même adresse IP interne.

Si vous n'indiquez pas d'adresse IP, Compute Engine en alloue une automatiquement depuis le sous-réseau ou le réseau. Vous pouvez spécifier une adresse IP interne à l'aide de Google Cloud Console, de l'outil gcloud ou de l'API Compute Engine.

Console

  1. Accéder à la page Créer une instance.

    Accéder à la page Créer une instance

  2. Développez la section Mise en réseau, disques, sécurité, gestion et location unique.

  3. Développez Mise en réseau, puis procédez comme suit: 

    1. Dans la section Interfaces réseau, développez une interface réseau pour la modifier.
    2. Sous Réseau et Sous-réseau, vous pouvez sélectionner le réseau et le sous-réseau que vous souhaitez utiliser.
    3. Dans la liste Adresse IP interne principale, sélectionnez une adresse IP interne.
    4. Pour terminer la modification de l'interface réseau, cliquez sur OK.
  4. Poursuivez le processus de création de la VM.

gcloud

Spécifiez une adresse IP valide lors de la création de l'instance :

gcloud compute instances create VM_NAME
     --private-network-ip IP_ADDRESS

Remplacez l'élément suivant :

  • VM_NAME : nom de l'instance que vous souhaitez créer.
  • IP_ADDRESS : adresse IP que vous souhaitez attribuer.

Si vous utilisez un réseau en mode sous-réseau personnalisé, vous devez également spécifier le sous-réseau à l'aide du paramètre --subnet SUBNET.

API

Pour créer une instance de VM avec une adresse IP interne statique, appelez la méthode instances.insert et indiquez explicitement la propriété networkInterfaces[].networkIP. avec l'adresse IP interne que vous souhaitez attribuer à la VM.

Exemple :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/us-central1-f/machineTypes/e2-micro",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
     }],
    "network": "global/networks/default",
    "networkIP": "IP_ADDRESS"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/v20150818"
     }
   }]
 }

Remplacez l'élément suivant :

  • PROJECT_ID : ID du projet dans lequel créer la VM
  • ZONE : zone dans laquelle créer la VM
  • VM_NAME : nom de la machine virtuelle.
  • IP_ADDRESS : adresse IP à attribuer à l'instance.

Si vous supprimez une instance pour laquelle une adresse IP est spécifiée, celle-ci retourne dans le pool d'adresses non allouées. Si l'adresse IP interne doit persister au-delà de la durée de vie de l'instance, vous pouvez réserver une adresse IP interne statique.

Créer un équilibreur de charge interne avec une adresse IP interne statique

Pour créer un équilibreur de charge interne utilisant une adresse IP interne statique, suivez les instructions indiquées dans les liens suivants :

Utiliser une adresse IP interne statique pour une interface réseau secondaire

Lorsque vous créez une instance de VM avec plusieurs interfaces réseau, vous pouvez utiliser une adresse IP interne statique réservée pour les interfaces réseau principales et secondaires.

Pour attribuer une adresse IP interne statique à une interface réseau secondaire, procédez comme suit :

  1. Vous devez d'abord réserver une adresse IP interne statique. Par exemple, l'exemple suivant réserve une adresse appelée my-second-ip-address dans la région us-central1. Étant donné que la commande omet l'option --addresses, Compute Engine réserve une adresse IP aléatoire :

    gcloud compute addresses create my-second-ip-address \
        --region us-central1 --subnet subnet-b
  2. Utilisez l'adresse comme adresse IP de l'interface secondaire lorsque vous créez une instance de VM. Exemple :

    gcloud compute instances create my-instance \
        --image-family IMAGE_FAMILY \
        --image-project IMAGE_PROJECT \
        --network-interface subnet=subnet-a,no-address \
        --network-interface \
          subnet=subnet-b,private-network-ip=my-second-ip-address,no-address

Utiliser une adresse IP interne statique avec le VPC partagé

Vous pouvez créer une adresse IP interne statique réservée dans un sous-réseau partagé d'un réseau VPC partagé. L'objet de l'adresse IP est créé dans le même projet de service que la ressource qui l'utilise, même si sa valeur provient de la plage d'adresses IP disponibles dans le sous-réseau partagé sélectionné du réseau VPC partagé. Reportez-vous aux pages suivantes pour en savoir plus sur ce cas d'utilisation :

Répertorier les adresses IP internes statiques

Dans Cloud Console, vous pouvez afficher les adresses IP internes statiques d'un VPC sélectionné. Pour afficher toutes vos adresses IP statiques existantes, y compris les adresses IP externes et internes, exécutez addresses list ou envoyez une requête GET à l'API.

Console

  1. Accédez à la page des réseaux VPC.

    Accéder aux réseaux VPC

  2. Cliquez sur le réseau VPC que vous souhaitez vérifier.
  3. Cliquez sur ADRESSES IP INTERNES STATIQUES pour afficher toutes les adresses IP internes statiques réservées dans ce VPC.

gcloud

Exécutez la commande compute addresses list pour répertorier toutes les adresses IP statiques, y compris les adresses IP externes et internes.

gcloud compute addresses list

API

Appelez la méthode addresses.list :

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Remplacez l'élément suivant :

  • REGION : nom de la région pour cette requête.
  • PROJECT_ID : ID du projet pour cette requête

Pour répertorier toutes les adresses dans toutes les régions, appelez la méthode aggregatedList.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses

Supprimer une adresse IP interne statique

Vous pouvez supprimer une adresse IP interne statique si vous n'en avez plus besoin. Vous pouvez supprimer une adresse qu'elle soit utilisée ou non par une autre ressource. Si l'adresse est utilisée par une ressource, elle reste associée à la ressource jusqu'à ce que cette dernière soit supprimée, après quoi l'adresse est renvoyée au pool d'adresses disponibles pour d'autres projets.

Console

  1. Accédez à la page des réseaux VPC.

    Accéder aux réseaux VPC

  2. Identifiez le réseau VPC contenant l'adresse IP que vous souhaitez libérer, puis cliquez sur son nom.
  3. Cliquez sur ADRESSES IP INTERNES STATIQUES.
  4. Sélectionnez les adresses IP que vous souhaitez libérer.
  5. Cliquez sur LIBÉRER, puis confirmez cette opération en cliquant sur LIBÉRER dans le message pop-up.

gcloud

À l'aide de l'outil gcloud, exécutez la commande compute addresses delete :

gcloud compute addresses delete ADDRESS_NAME \
    --region REGION

Remplacez l'élément suivant :

  • ADDRESS_NAME : nom de l'adresse à supprimer
  • REGION : région à laquelle appartient l'adresse

Exemple :

gcloud compute addresses delete example-address-to-delete \
    --region us-west1

API

Appelez la méthode addresses.delete :

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME

Par exemple, pour supprimer une adresse dans la région us-west1 :

DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete

Étape suivante