Résoudre les problèmes liés aux VM avec plusieurs interfaces réseau
Cette page fournit des étapes de dépannage pour les problèmes courants que vous pouvez rencontrer lors de la création et de l'utilisation de VM avec plusieurs interfaces réseau.
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
REGION_A
, 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 REGION_A NAME REGION NETWORK RANGE default REGION_A default 10.138.0.0/20 overlapping-subnet REGION_A 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 REGION_A
... 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 l'une des méthodes suivantes:
- Dans la console Google Cloud, accédez à la page Réseaux VPC et vérifiez la colonne Mode.
- Exécutez la commande
gcloud compute networks list
et vérifiez le champSUBNET_MODE
.
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. Pour en savoir plus sur les rôles requis pour créer des instances, consultez la section Autorisations, IAM et instances avec interfaces réseau multiples. Vous pouvez vérifier si la stratégie IAM associée à votre projet vous confère l'un des rôles suivants:
OWNER
,EDITOR
oucompute.instanceAdmin.v1
. Pour créer des instances dans un VPC partagé, vous aurez également besoin du rôlecompute.networkUser
. Dans l'exemple suivant, le compteemail2@gmail.com
ne dispose pas des autorisations IAM suffisantes pour créer une instance. Pour obtenir des instructions plus détaillées, consultez la section 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
oucompute.instanceAdmin.v1
. Vous aurez également besoin du rôlecompute.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 l'approche décrite dans le tutoriel Configurer le routage pour une interface supplémentaire pour configurer une table de routage distincte à l'aide de la liaison de règle basée sur les sources dans votre 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 à 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 ZONE_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 en savoir plus 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.