Créer des VM avec plusieurs interfaces réseau

Par défaut, chaque instance de machine virtuelle (VM) d'un réseau cloud privé virtuel (VPC) possède une seule interface réseau. Cependant, vous pouvez configurer une instance avec plusieurs interfaces réseau. Lorsque vous utilisez plusieurs interfaces réseau depuis une instance, chaque interface doit être associée à un sous-réseau qui se trouve dans un réseau VPC différent. Vous ne pouvez pas associer plusieurs interfaces réseau au même sous-réseau ou à des sous-réseaux qui se trouvent dans le même réseau VPC.

Vous pouvez configurer des interfaces de VM avec des adresses IPv4 uniquement (pile unique) ou des adresses IPv4 et IPv6 (double pile).

Si vous n'avez pas besoin de plusieurs interfaces réseau, suivez la procédure décrite sur la page Créer et démarrer une instance pour créer des instances avec la configuration réseau par défaut.

Pour plus d'informations sur les interfaces réseau multiples et leur fonctionnement, consultez la page Interfaces réseau multiples.

Spécifications

  • Vous ne pouvez configurer une interface réseau que lorsque vous créez une instance.
  • Si vous créez une instance avec plusieurs interfaces réseau, chaque interface doit se connecter à un réseau VPC différent. Les réseaux peuvent être des réseaux VPC autonomes ou des réseaux VPC partagés.
  • Une interface réseau doit se connecter à un sous-réseau dont la plage d'adresses IP ne chevauche pas celle d'une autre interface de la même instance.
  • Si vous souhaitez créer une VM associée à des sous-réseaux dans plusieurs réseaux VPC, tous les réseaux et sous-réseaux doivent exister avant de créer l'instance. Pour en savoir plus sur la création de réseaux et de sous-réseaux, consultez la section Créer et gérer des réseaux VPC.
  • Vous ne pouvez pas supprimer une interface réseau sans supprimer l'instance à laquelle elle est associée.
  • Chaque instance doit posséder au moins une interface réseau et huit au maximum, en fonction du type de machine de l'instance.

    • L'interface nic0 est requise et doit être configurée à la création de l'instance.
    • Les interfaces nic1 à nic7 sont facultatives, mais elles doivent également être configurées à la création de l'instance.

    Pour plus d'informations, consultez la section Nombre maximal d'interfaces.

  • Chaque interface peut éventuellement posséder une adresse IPv4 externe.

  • Si vous connectez une VM à un sous-réseau disposant d'une plage de sous-réseau IPv6 interne ou externe, vous pouvez éventuellement configurer une adresse IPv6 interne ou externe.

  • Le serveur DHCP de Google Cloud envoie une route par défaut (RFC 3442, "route statique sans classe") exclusivement à l'interface réseau par défaut, nic0. Si une route par défaut est nécessaire sur une autre interface réseau, vous devez configurer le routage des règles sur l'instance.

  • Toutes les interfaces réseau de VM doivent se connecter à des sous-réseaux dans des réseaux appartenant au même projet que la VM ou à un réseau VPC partagé avec le projet.

Limites

  • Vous ne pouvez pas ajouter ou supprimer des interfaces réseau dans une VM existante.

  • Le transfert IP est activé au niveau de la VM et ne peut pas être appliqué à des interfaces individuelles.

Autorisations, IAM et instances avec interfaces réseau multiples

Pour créer une instance avec plusieurs interfaces réseau, vous devez posséder l'un des rôles suivants :

Créer et supprimer des instances et des modèles d'instance avec plusieurs interfaces dans un projet n'utilisant pas un environnement de VPC partagé : un utilisateur possédant, au niveau du projet, le rôle de propriétaire, d'éditeur ou d'administrateur d'instances Compute (v1) peut créer une instance avec plusieurs interfaces associées à des réseaux et sous-réseaux VPC appartenant au même projet.

Créer et supprimer des instances et des modèles d'instance avec plusieurs interfaces dans des environnements de VPC partagé : un utilisateur disposant du rôle de propriétaire, d'éditeur ou d'administrateur d'instances Compute (v1) sur le projet peuvent créer une instance avec plusieurs interfaces. Si l'une des interfaces est associée à un sous-réseau d'un projet hôte de VPC partagé, vous devez également disposer du rôle d'utilisateur de réseau de Compute (roles/compute.networkUser) au niveau du projet hôte de VPC partagé ou au niveau du sous-réseau de VPC partagé.

Pour en savoir plus sur les autorisations, consultez la documentation IAM de Compute Engine.

Utiliser plusieurs interfaces réseau avec différents types de réseaux VPC

  • Les interfaces réseau multiples ne sont pas compatibles avec les anciens réseaux.
  • Lorsque vous configurez plusieurs interfaces réseau, connectez chaque interface à un réseau VPC soit en mode automatique, soit en mode personnalisé.

Allouer les adresses IP des interfaces réseau

  • Vous devez configurer chaque interface réseau avec une adresse IP interne principale allouée à partir de la plage d'adresses IP principale d'un sous-réseau.
    • L'adresse interne principale attribuée à chacune des interfaces d'une même instance doit être différente.
  • Vous pouvez choisir de configurer chacune des interfaces virtuelles (cartes d'interface réseau) avec une adresse IP externe unique. Les adresses externes peuvent être éphémères ou réservées.

Nombre maximal d'interfaces réseau

Le nombre d'interfaces réseau virtuelles s'adapte au nombre de processeurs virtuels (2 au minimum, 8 au maximum).

Le tableau suivant vous permet de déterminer le nombre d'interfaces réseau pouvant être associées à une instance :

Nombre de processeurs virtuels Nombre de cartes d'interface réseau virtuelles
2 ou moins 2
4 jusqu'à 4
6 jusqu'à 6
8 ou plus jusqu'à 8

Avant de commencer

Créer des instances de VM avec plusieurs interfaces réseau

Pour obtenir des instructions générales sur la création d'instances, consultez la page Créer et démarrer une instance de VM.

Vous pouvez ajouter plusieurs interfaces réseau lorsque vous créez une instance :

  • Dans la console Google Cloud, vous ajoutez des interfaces réseau sur la page Créer une instance, dans la section Mise en réseau > Interfaces réseau.
  • Dans gcloud CLI, exécutez la commande instances create. Pour chaque interface, incluez l'option --network-interface suivie de toutes les clés réseau adéquates, telles que ([network | subnet], private-network-ip, address, external-ipv6-address).

La première interface créée est toujours nic0, et il s'agit toujours de l'interface par défaut. C'est un point important pour d'autres aspects de la mise en réseau Google Cloud. Par exemple, les équilibreurs de charge Google Cloud (à l'exception des équilibreurs de charge réseau passthrough) ne distribuent le trafic que vers nic0.

Console

  1. Accédez à la page Créer une instance dans Google Cloud Console.

    Accéder à la page Créer une instance

  2. Dans le champ Nom, saisissez un nom pour l'instance.

  3. Dans le champ Région, sélectionnez une région.

  4. Dans le champ Zone, sélectionnez une zone.

  5. Dans la section Options avancées, 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. Dans les champs Réseau et Sous-réseau, sélectionnez le réseau et le sous-réseau que vous souhaitez utiliser.

    Si vous souhaitez configurer des adresses IPv6 sur l'interface, sélectionnez un sous-réseau pour lequel une plage d'adresses IPv6 est configurée. Le type d'accès IPv6 du sous-réseau détermine si la VM reçoit une adresse IPv6 interne ou externe.

    1. Sélectionnez un type de pile d'adresses IP : IPv4 (pile unique) ou IPv4 et IPv6 (double pile).

    2. Dans le champ Adresse IPv4 interne principale, sélectionnez l'une des options suivantes :

      • Éphémère pour attribuer une nouvelle adresse IPv4 éphémère
      • Une adresse IPv4 interne statique réservée de la liste
      • Réserver une adresse IPv4 interne statique pour réserver et attribuer une nouvelle adresse IPv4 interne statique
    3. Dans le champ Adresse IPv6 interne principale, sélectionnez l'une des options suivantes :

      • Allocation automatique pour attribuer automatiquement une nouvelle adresse IPv6 interne statique
      • Une adresse IPv6 interne statique réservée de la liste
      • Réserver une adresse IPv6 interne statique pour réserver et attribuer une nouvelle adresse IPv6 interne statique
    4. Dans le champ Adresse IPv4 externe, sélectionnez l'une des options suivantes :

      • Éphémère pour attribuer une nouvelle adresse IPv4 éphémère
      • Aucune pour ne pas attribuer d'adresse IPv4 externe
      • Une adresse IPv4 statique réservée dans la liste
      • Réserver une adresse IP externe statique pour réserver et attribuer une nouvelle adresse IP externe statique
    5. Dans le champ Adresse IPv6 externe, sélectionnez l'une des options suivantes :

      • Allouer automatiquement pour attribuer automatiquement une nouvelle adresse IPv6 externe statique
      • Une adresse IPv6 externe statique réservée de la liste
      • Réserver une adresse IPv6 externe statique pour réserver et attribuer une nouvelle adresse IPv6 externe statique
    6. Pour terminer la modification de l'interface réseau, cliquez sur OK.

  6. Pour ajouter une autre interface, cliquez sur Ajouter une interface réseau.

  7. Poursuivez le processus de création de la VM.

  8. Cliquez sur Create (Créer).

gcloud

Pour créer des interfaces réseau sur une nouvelle instance, utilisez la commande instances create.

Pour chaque interface, incluez l'option --network-interface suivie de toutes les clés réseau adéquates, telles que network, subnet, private-network-ip, address et external-ipv6-address. Pour consulter des exemples de création de VM avec plusieurs interfaces, consultez la section Exemples de configurations.

Cet extrait n'illustre que l'option --network-interface, qui n'est que l'un des nombreux paramètres que vous pouvez renseigner lorsque vous créez une instance.

Pour connaître les types de machines compatibles avec le nombre d'interfaces réseau dont vous avez besoin, consultez le tableau Nombre maximal d'interfaces réseau.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --network-interface \
        network=NETWORK,subnet=SUBNET, \
        stack-type=STACK_TYPE, \
        address=EXTERNAL_IPV4_ADDRESS | no-address, \
        private-network-ip=INTERNAL_IPV4_ADDRESS \
        internal-ipv6-address=INTERNAL_IPV6_ADDRESS \
    ...
    --network-interface \
        network=NETWORK,subnet=SUBNET, \
        stack-type=STACK_TYPE, \
        external-ipv6-address=EXTERNAL_IPV6_ADDRESS, \
        external-ipv6-prefix-length=96 \
        ipv6-network-tier=PREMIUM \
    ...

Remplacez les éléments suivants :

  • INSTANCE_NAME: le nom de l'instance de VM à créer.
  • ZONE : zone où l'instance est créée
  • NETWORK : réseau auquel l'interface est associée.
  • SUBNET : sous-réseau auquel l'interface est associée.
  • STACK_TYPE : type de pile pour l'interface.

    La valeur par défaut est IPV4_ONLY. Spécifiez IPV4_IPV6 pour configurer une interface à double pile.

  • EXTERNAL_IPV4_ADDRESS : attribue l'adresse IPv4 externe nommée à l'interface.

    Vous devez avoir réservé une adresse IPv4 externe auparavant. Spécifiez "no-address" au lieu de address=EXTERNAL_IPV4_ADDRESS si vous ne souhaitez pas que l'interface ait une adresse IP externe. Spécifiez address='' si vous souhaitez que l'interface reçoive une adresse IP externe éphémère.

  • INTERNAL_IPV4_ADDRESS : adresse IPv4 interne dont vous souhaitez que l'interface dispose dans le sous-réseau cible. Omettez si vous souhaitez simplement attribuer une adresse valide.

  • INTERNAL_IPV6_ADDRESS : adresse IPv6 interne dont vous souhaitez que l'interface dispose dans le sous-réseau cible. Si vous omettez cette option, aucune adresse IPv6 interne n'est attribuée.

  • EXTERNAL_IPV6_ADDRESS : attribue l'adresse IPv4 externe nommée à l'interface.

    Vous devez avoir réservé une adresse IPv6 externe auparavant. Spécifiez "no-address" au lieu de external-ipv6-address=EXTERNAL_IPV6_ADDRESS si vous ne souhaitez pas que l'interface ait une adresse IPv6 externe. Spécifiez external-ipv6-address='' si vous souhaitez que l'interface reçoive une adresse IPv6 externe éphémère.

API

Utilisez la méthode instances.insert pour créer une instance de VM avec plusieurs interfaces réseau.

  • Pour créer une instance de VM avec des adresses IPv4 internes, procédez comme suit :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "networkIP": "IPV4_ADDRESS",
        "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Remplacez les éléments suivants :

    • SUBNET : sous-réseau où se trouve l'interface réseau.
    • REGION : région qui contient l'instance.
    • PROJECT_ID : identifiant du projet contenant l'instance.
    • ZONE : zone dans laquelle se trouve l'instance.
    • IPV4_ADDRESS : adresse IPv4 interne que vous souhaitez attribuer à l'interface réseau.
  • Pour créer une instance de VM avec des adresses IPv6 internes, procédez comme suit :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    ....
    
    "networkInterfaces": [
      {
        "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
        "ipv6Address": "IPV6_ADDRESS",
        "internalIpv6PrefixLength": 96,
        "stackType": IPV4_IPV6,
        "ipv6AccessType": INTERNAL
      },
        for each interface, specify a network...
    ],
    other instance settings...
    }
    

    Remplacez les éléments suivants :

    • SUBNET : sous-réseau où se trouve l'interface réseau.
    • REGION : région qui contient l'instance.
    • PROJECT_ID : identifiant du projet contenant l'instance.
    • ZONE : zone dans laquelle se trouve l'instance.
    • IPV6_ADDRESS : adresse IPv6 interne que vous souhaitez attribuer à l'interface réseau.

Terraform

Vous pouvez utiliser une ressource Terraform pour créer une instance de VM avec plusieurs interfaces réseau.

Les arguments Terraform comportent des exemples de valeurs que vous pouvez modifier.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace with your project ID in quotes
  zone         = "us-central1-b"
  name         = "backend-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = var.subnet_1 # Replace with self link to a subnetwork in quotes
    network_ip = "10.0.0.14"
  }
  network_interface {
    subnetwork = var.subnet_2 # Replace with self link to a subnetwork in quotes
    network_ip = "10.10.20.14"
  }
}

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Exemples de configurations

Les sections suivantes expliquent comment créer des VM avec plusieurs interfaces.

Configurer plusieurs interfaces réseau avec des adresses IPv4

L'exemple de commande suivant crée une instance avec trois interfaces réseau.

 gcloud compute instances create vm1 --machine-type=n1-standard-4 \
    --network-interface '' \
    --network-interface network=net1,subnet=subnet-a,private-network-ip=10.10.10.2,address=EXTERNAL_IPV4_ADDRESS \
    --network-interface network=net2,subnet=subnet-b,private-network-ip=10.10.20.2,no-address

Les interfaces sont créées avec les caractéristiques suivantes :

  • nic0 est créée avec les paramètres par défaut. L'interface est associée à un sous-réseau du réseau VPC par défaut, avec une adresse IP interne allouée automatiquement et une adresse IP externe éphémère.

  • nic1 est associée au sous-réseau subnet-a dans le réseau net1, avec une adresse IPv4 interne 10.10.10.2 et une adresse IPv4 externe statique EXTERNAL_IPV4_ADDRESS.

  • nic2 est associée au sous-réseau subnet-b dans le réseau net2, avec une adresse IPv4 interne 10.10.20.2 et aucune adresse IP externe.

Pour obtenir une description complète de la commande gcloud compute instances create et de l'option --network-interface, consultez la documentation sur la commande.

Vous pouvez utiliser l'adresse IP de l'interface réseau que vous avez ajoutée pour configurer le transfert DNS. Pour en savoir plus sur la configuration des zones de transfert Cloud DNS, consultez la page Zones de transfert.

Configurer plusieurs interfaces réseau avec des adresses IPv4 et IPv6

L'exemple de commande suivant crée une instance à double pile avec deux interfaces réseau.

gcloud compute instances create vm1 \
--network-interface network=dual-int,subnet=int-subnet,stack-type=IPV4_IPV6 \
--network-interface network=dual-ext,subnet=ext-subnet,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \
--machine-type=n1-standard-4 --zone=us-west2-a

Les interfaces sont créées avec les caractéristiques suivantes :

  • nic0 est associée au sous-réseau int-subnet dans le réseau dual-int, avec une adresse IPv4 interne éphémère et une adresse IPv6 interne éphémère.

  • nic1 est associée au sous-réseau ext-subnet dans le réseau dual-ext, avec une adresse IPv4 interne éphémère et une adresse IPv6 externe éphémère.

Configurer plusieurs interfaces réseau pour des groupes d'instances

Vous pouvez utiliser des instances avec plusieurs interfaces réseau dans des groupes d'instances gérés et non gérés.

Pour les groupes d'instances non gérés, créez chaque instance individuellement, en veillant à ce que l'interface réseau nic0 de chaque VM soit associée au même sous-réseau. Ajoutez ensuite les instances de VM au groupe d'instances non géré.

Pour configurer plusieurs interfaces réseau dans des groupes d'instances gérés, vous devez spécifier la configuration réseau de chaque interface dans le modèle d'instance, en définissant l'option --network-interface une fois pour chaque interface. L'exemple suivant permet de créer un modèle d'instance avec trois interfaces réseau :

gcloud compute instance-templates create template-1 \
    --network-interface subnet=net0-subnet-a \
    --network-interface subnet=net1-subnet-b,no-address \
    --network-interface subnet=net2-subnet-c,no-address \
    --region us-central1

Étant donné que les noms de sous-réseau de chaque région d'un projet doivent être uniques, la spécification de sous-réseaux par nom associe implicitement chaque interface à un réseau VPC. Chaque interface doit utiliser un sous-réseau qui se trouve dans un réseau VPC unique:

  • nic0 utilise le sous-réseau net0-subnet-a.
  • nic1 utilise le sous-réseau net1-subnet-b.
  • nic2 utilise le sous-réseau net2-subnet-c.

L'option no-address de l'option --network-interface indique que l'interface est configurée sans adresse IP externe. L'adresse IP interne provient du sous-réseau utilisé par l'interface. Pour obtenir des informations complètes sur les options et la syntaxe, consultez la section sur l'option --network-interface pour la commande instance-templates create.

Configurer une liaison de règle

Pour les images prises en charge par Google, vous pouvez avoir besoin d'une interface réseau secondaire (autre que nic0) pour communiquer avec une adresse IP hors de la plage principale du sous-réseau associé à cette interface secondaire. Dans ce cas, vous devez configurer la liaison de règle pour garantir que les paquets de sortie seront envoyés par la bonne interface. Cela nécessite de configurer une table de routage distincte pour chaque interface réseau à l'aide de la liaison de règle.

Le routage de règles basé sur les sources n'est pas compatible avec les systèmes d'exploitation Windows.

Rechercher la passerelle par défaut de l'interface

Vous pouvez trouver la passerelle par défaut de l'interface d'une VM en interrogeant le serveur de métadonnées.

  • Pour trouver la passerelle par défaut de l'adresse IPv4 d'une interface, envoyez la requête suivante à partir de la VM :

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google"
    

    Remplacez INTERFACE_NUMBER par le numéro de l'interface. Par exemple, pour trouver la passerelle par défaut pour nic1, utilisez 1.

  • Pour trouver la passerelle par défaut de l'adresse IPv6 d'une interface, envoyez la requête suivante à partir de la VM :

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway-ipv6 -H "Metadata-Flavor: Google"
    

    Remplacez INTERFACE_NUMBER par le numéro de l'interface. Par exemple, pour trouver la passerelle par défaut pour nic1, utilisez 1.

Configurer le routage basé sur des règles sur des VM Linux

Pour éviter de perdre la connectivité à la VM lorsque vous modifiez la route par défaut, utilisez la console série.

  • Configurez le routage de règles pour chaque interface secondaire avec ifconfig. Ne configurez pas l'interface principale (nic0), car une route est configurée.

    sudo ifconfig NIC IP_ADDRESS netmask NETMASK broadcast IP_ADDRESS mtu 1430
    echo "1 rt1" | sudo tee -a /etc/iproute2/rt_tables
    sudo ip route add GATEWAY src IP_ADDRESS dev NIC table rt1
    sudo ip route add default via GATEWAY dev NIC table rt1
    sudo ip rule add from IP_ADDRESS/PREFIX_LENGTH table rt1
    sudo ip rule add to IP_ADDRESS/PREFIX_LENGTH  table rt1
    

    Remplacez les éléments suivants :

    • NIC : interface à laquelle vous souhaitez ajouter une route. Exemple :eth1
    • IP_ADDRESS : adresse IP configurée sur l'interface.
    • NETMASK : nom de l'interface. Exemple : 255.255.255.255
    • GATEWAY : adresse IP de la passerelle par défaut de l'interface
    • PREFIX_LENGTH : longueur du préfixe de l'adresse IP configurée

Configurer le routage basé sur des règles sur Ubuntu 18.04 ou une version ultérieure

Avec le passage de ifupdown à Netplan en tant qu'utilitaire de configuration réseau par défaut pour Ubuntu 18.04 LTS ou version ultérieure, le package ifconfig n'est pas préinstallé. En outre, les modifications apportées aux fichiers de configuration réseau de Netplan ne persistent pas lors des redémarrages de VM Compute Engine.

  1. Créez un script de démarrage qui définit une table de routage pour chaque interface réseau au démarrage de la VM. Découvrez comment créer des scripts de démarrage.

    L'utilisation d'un script de démarrage ne fonctionne pas si vous installez un partage de fichiers dans votre VM, car ils ne s'exécutent qu'une fois les partitions installées. Ainsi, votre partage de fichiers sera toujours installé sur l'interface par défaut avant la création de la table de routage par votre script de démarrage.

  2. Pour installer un partage de fichiers sur une VM via un réseau secondaire, à savoir une interface autre que nic0, vous devez configurer la règle de routage de la VM cliente pour vous assurer que le partage de fichiers s'installe correctement. Pour ce faire, modifiez les fichiers suivants :

    • Dans /etc/default/instance_configs.cfg, définissez l'indicateur setup de NetworkInterfaces sur false :

      [NetworkInterfaces]
      dhclient_script = /sbin/google-dhclient-script
      dhcp_command =
      ip_forwarding = true
          setup = false
      

    • Dans /etc/network/interfaces, ajoutez les lignes suivantes à l'interface souhaitée :

      auto eth1
      iface eth1 inet dhcp
          up ip route add filestore-reserved-address-range via default-gateway-of-nic-to-filestore
      

    Remplacez les éléments suivants :

    • filestore-reserved-address-range est la plage d'adresses réservée à l'utilisation par l'instance Compute Engine.
    • default-gateway-of-nic-to-filestore est l'adresse IP de la passerelle par défaut de la carte d'interface réseau connectée au réseau VPC qui est partagé avec l'instance Compute Engine.

    Pour plus d'informations sur l'installation d'un partage de fichiers sur une instance de VM, consultez la section Installer des partages de fichiers sur Compute Engine.

Dépannage

Je ne parviens pas à créer une VM avec plusieurs interfaces

Un des messages d'erreur suivants peut s'afficher :

  • Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.

    Si vous obtenez ce message d'erreur, cela signifie que vous essayez de créer plus d'interfaces que le maximum autorisé par le type de machine de votre instance. Reportez-vous au tableau indiquant le nombre maximal d'interfaces.

  • Networks must be distinct for NICs attached to a VM.

    Si vous obtenez ce message, cela signifie que vous essayez de créer plusieurs interfaces sur le même réseau. Chaque interface réseau doit être connectée à un réseau VPC distinct.

  • Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.

    Si vous obtenez ce message, cela signifie que les plages CIDR associées aux interfaces de votre VM se chevauchent. Ces plages CIDR incluent toutes les plages principales des sous-réseaux associés aux interfaces de la VM, ainsi que les plages secondaires utilisées pour les plages d'adresses IP d'alias . Chaque interface est associée à un sous-réseau, appartenant lui-même à un réseau VPC distinct, et aucun de ces sous-réseaux ne doit chevaucher les sous-réseaux d'autres interfaces. Ainsi, si vous essayez de créer une instance dans la région us-west1, vous pouvez vérifier les plages CIDR principales du sous-réseau à l'aide de la commande suivante ou de Google Cloud Console.

    gcloud compute networks subnets list --regions us-west1
    NAME                REGION    NETWORK          RANGE
    default             us-west1  default          10.138.0.0/20
    overlapping-subnet  us-west1  test-network     10.138.8.0/24
    

    Pour vérifier les plages CIDR des sous-réseaux secondaires, utilisez la commande suivante ou Google Cloud Console.

    gcloud compute networks subnets describe overlapping-subnet --region us-west1
    
    ...
    ipCidrRange: 10.128.8.0/24
    ...
    secondaryIpRanges:
    - ipCidrRange: 10.138.8.0/24
      rangeName: conflicting-range
    
  • Multiple network interfaces are not supported on legacy networks.

    Si vous obtenez ce message, cela signifie que vous essayez de créer votre instance dans un réseau ancien. Les instances à interfaces multiples ne sont pas compatibles avec les réseaux anciens. Vous pouvez vérifier si un réseau est un ancien réseau à l'aide de la commande suivante ou de Google Cloud Console. Le champ Mode indique le type de réseau.

    gcloud compute networks list
    NAME             MODE    IPV4_RANGE     GATEWAY_IPV4
    default          auto
    legacy-network   legacy  10.240.0.0/16  10.240.0.1
    test-network     custom
    

  • Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'

    Si vous obtenez ce message, cela signifie que le compte au moyen duquel vous êtes connecté ne dispose pas des autorisations IAM requises pour créer une instance. Reportez-vous à la section Autorisations IAM afin d'obtenir des informations détaillées sur les rôles requis pour créer des instances. Vous pouvez vérifier si la stratégie IAM associée à votre projet vous confère l'un des rôles suivants : OWNER, EDITOR ou compute.instanceAdmin.v1. Pour créer des instances dans un VPC partagé, vous aurez également besoin du rôle compute.networkUser. Dans l'exemple ci-dessous, le compte email2@gmail.com ne possède pas les autorisations IAM suffisantes pour créer une instance. Pour obtenir des instructions plus détaillées, consultez la page Attribuer, modifier et révoquer les accès à des ressources du guide IAM.

    gcloud projects get-iam-policy PROJECT_ID
    bindings:
    - members:
      - user:email1@gmail.com
        role: roles/owner
    - members:
      - serviceAccount:our-project-123@appspot.gserviceaccount.com
      - serviceAccount:123456789012-compute@developer.gserviceaccount.com
        role: roles/editor
    - members:
      - user:email2@gmail.com
        role: roles/viewer
    etag: BwUjMhXbSPU=
    version: 1
    

    Vous pouvez demander au propriétaire ou à l'éditeur de votre projet de vous accorder l'un des rôles OWNER, EDITOR ou compute.instanceAdmin.v1. Vous aurez également besoin du rôle compute.networkUser si vous associez une interface à l'un des sous-réseaux appartenant au VPC partagé.

    gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
    

Je ne parviens pas à me connecter à l'adresse IP interne d'une interface secondaire

  • Vérifiez les règles de pare-feu pour vous assurer qu'elles autorisent la connexion à l'interface secondaire de la VM. Pour cela, vous pouvez consulter les règles de pare-feu correspondant au réseau associé à l'interface secondaire, soit dans Google Cloud Console en cliquant sur le réseau VPC adéquat, soit au moyen de la commande gcloud suivante.

    gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
    
  • Vérifiez si vous essayez de vous connecter à cette interface secondaire depuis une adresse située soit sur Internet, soit à l'extérieur du réseau de cette interface. Vous ne pouvez vous connecter à l'adresse IP interne d'une interface que depuis son réseau. Si vous devez accéder à cette interface depuis l'extérieur du réseau, vous pouvez lui allouer une adresse IP externe.

  • Vérifiez si vous essayez de vous connecter à l'adresse IP interne de l'interface secondaire depuis un emplacement extérieur au sous-réseau qui lui est associé ; il peut s'agir d'un autre sous-réseau du même réseau ou d'un réseau appairé. La section Plusieurs interfaces réseau par instance explique l'interaction entre l'appairage de VPC et les instances de VM à plusieurs interfaces. Pour communiquer avec une interface secondaire depuis un emplacement extérieur au sous-réseau de l'interface, vous pourrez être amené à configurer des routes sur la VM. Consultez la section Comportement DHCP avec plusieurs interfaces réseau pour en savoir plus sur la manière dont DHCP programme les routes par défaut dans la VM.

  • Si vous essayez d'accéder à une adresse IPv6, consultez également la section Je ne parviens pas à me connecter à l'adresse IPv6 d'une interface secondaire.

Je ne parviens pas à me connecter à une interface secondaire au moyen d'une adresse IP externe

Le serveur DHCP ne programme une route par défaut que sur l'interface réseau principale de la VM. Si vous souhaitez vous connecter à l'interface secondaire au moyen d'une adresse IP externe, vous disposez de deux options. Si vous devez uniquement vous connecter en dehors du réseau associé à cette interface secondaire, vous pouvez définir une route par défaut sur cette interface. Sinon, vous pouvez utiliser la section Configurer une liaison de règle pour configurer dans votre VM une table de routage distincte à l'aide de la liaison de règle basée sur les sources.

Si vous essayez d'accéder à une adresse IPv6, consultez également la section Je ne parviens pas à me connecter à l'adresse IPv6 d'une interface secondaire.

Je ne parviens pas à me connecter à l'adresse IPv6 d'une interface secondaire

Si vous essayez d'accéder à une adresse IPv6, vérifiez que la version 20220603.00 de google-guest-agent ou une version ultérieure est installée sur la VM. Pour en savoir plus sur la gestion des versions google-guest-agent, consultez la page Environnement invité.

Si vous disposez d'une version antérieure de google-guest-agent, les interfaces secondaires ne reçoivent pas de route de sous-réseau IPv6. Nous vous recommandons de mettre à jour l'agent invité afin que les routes soient correctement configurées.

Toutefois, pour contourner ce problème, vous pouvez utiliser un script de démarrage afin d'apporter la modification de configuration suivante pour chaque interface secondaire.

sudo sysctl -w net.ipv6.conf.INTERFACE_NAME.accept_ra_rt_info_max_plen=128

Remplacez INTERFACE_NAME par le nom de l'interface (par exemple, eth1 ou ens5).

J'ai des problèmes de connectivité lorsque j'utilise un masque de réseau autre que /32

Par défaut, le serveur de métadonnées d'une instance ne répond aux requêtes ARP que pour la passerelle par défaut.

Pour configurer des interfaces avec un masque de réseau autre que /32, vous devez créer une image au moyen de l'option --guest-os-features MULTI_IP_SUBNET et utiliser cette image pour créer votre instance. Ainsi, si vous utilisez une image basée sur debian-9, vous pouvez créer une image au moyen de la commande suivante :

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone us-west1-a \
     --guest-os-features MULTI_IP_SUBNET

Pour afficher les fonctionnalités configurées sur l'image invitée, exécutez la commande gcloud compute images describe sur celle-ci.

gcloud compute images describe debian-9-multi-ip-subnet

Pour plus d'informations sur la création d'images personnalisées, consultez la section Créer, supprimer et rendre obsolètes des images personnalisées.

Je ne parviens pas à résoudre le nom d'hôte interne d'une VM avec plusieurs interfaces réseau

Lorsqu'une requête DNS est exécutée avec un nom d'hôte interne, elle se résout au niveau de l'interface réseau principale (nic0) de l'instance.

Si la valeur nic0 est associée à un réseau VPC différent du réseau VPC de l'instance émettant la requête DNS, la requête DNS échoue. Le DNS interne n'est résolu que dans un réseau VPC donné. Pour plus d'informations, consultez la section Résolution DNS avec plusieurs interfaces réseau.

Dépannage à l'aide de la console série

Il est souvent judicieux d'activer la console série sur une VM pour déboguer les problèmes de configuration. Vous pouvez activer la console série pour le débogage interactif en suivant les étapes décrites dans la section Dépannage à l'aide de la console série.