Crea VMs con interfaces de red múltiples
De forma predeterminada, cada instancia de máquina virtual (VM) en una red de nube privada virtual (VPC) tiene una única interfaz de red. Sin embargo, puedes configurar una instancia con interfaces de red múltiples. Cuando se usan interfaces de red múltiples de una instancia, cada interfaz se debe conectar a una subred que esté en una red de VPC diferente. No puedes adjuntar varias interfaces de red a la misma subred o a subredes que se encuentren en la misma red de VPC.
Si no necesitas interfaces de red múltiples, sigue el procedimiento Crea e inicia una instancia para crear instancias con la configuración de red predeterminada.
Para obtener más información sobre cómo funcionan las interfaces de red múltiples, consulta Interfaces de red múltiples.
Antes de comenzar
Verifica que se creen todas las redes y subredes requeridas antes de crear la instancia. Si necesitas crear redes o subredes, consulta Crea y administra redes de VPC.
Verifica que cada red tenga reglas de firewall adecuadas para permitir el tráfico desde y hacia la VM que tiene varias interfaces. Si necesitas crear reglas de firewall, consulta Usa reglas de firewall de VPC.
Si conectas una VM a varias redes con direcciones IPv6, instala la versión 20220603.00 de
google-guest-agent
o una posterior. Para obtener más información, consulta No puedo conectarme a la dirección IPv6 de una interfaz secundaria.
Funciones de IAM
Para crear una instancia con interfaces de red múltiples, debes contar con una de las siguientes funciones:
- El rol de propietario o editor del proyecto
- Rol de administrador de instancias de Compute (
roles/compute.instanceAdmin.v1
)
Crea y borra instancias y plantillas de instancias con varias interfaces en el entorno de un proyecto en el que no se use la VPC compartida: Un usuario con el rol de Propietario, Editor o Administrador de instancias de Compute (v1) a nivel de proyecto puede crear una instancia con varias interfaces asociadas con redes de VPC y subredes que forman parte de ese mismo proyecto.
Crea y borra instancias y plantillas de instancias con varias interfaces en los entornos de VPC compartida: Un usuario con el rol de Propietario, Editor o Administrador de instancias de Compute (v1) a nivel del proyecto puede crear una instancia con varias interfaces. Si alguna de las interfaces está adjunta a una subred en un proyecto host de VPC compartida, también debes tener el rol de usuario de la red de Compute (roles/compute.networkUser
) a nivel de proyecto host de VPC compartida o a nivel de subred de VPC compartida.
Para obtener más información sobre los permisos, consulta la documentación de IAM de Compute Engine.
Crea instancias de VM con interfaces de red múltiples
Para obtener instrucciones generales sobre cómo crear instancias, consulta Crea y, luego, inicia una instancia de VM.
La primera interfaz siempre se crea como nic0
y siempre es la interfaz predeterminada. Esto es importante para otros aspectos de las herramientas de redes de Google Cloud. Por ejemplo,los Google Cloud balanceadores de cargas (excepto los
balanceadores de cargas de red de transferencia) solo
distribuyen el tráfico a nic0
.
Console
En la consola de Google Cloud, ve a la página Crea una instancia.
En el campo Nombre, ingresa un nombre para el instancia.
En el campo Región, selecciona una región.
En el campo Zona, selecciona una zona.
En la sección Opciones avanzadas, expande Herramientas de redes y, luego, haz lo siguiente:
En la sección Interfaces de red, expande una interfaz de red para editarla.
En Red y Subred, selecciona la red y la subred que deseas usar.
Si deseas configurar direcciones IPv6 en la interfaz, selecciona una subred que tenga configurado un rango de direcciones IPv6. El tipo de acceso IPv6 de la subred determina si la VM recibe una dirección IPv6 interna o externa.
Selecciona una de las siguientes opciones para el tipo de pila de IP de la interfaz:
- IPv4 (pila única)
- IPv4 e IPv6 (pila doble)
- IPv6 (pila única) (Versión preliminar)
Para interfaces con direcciones IPv4, haz lo siguiente:
En Dirección IPv4 interna principal, selecciona una de las siguientes opciones:
- Efímera para asignar una dirección IPv4 efímera nueva
- Una dirección IPv4 reservada estática interna de la lista
- Reservar dirección IPv4 interna estática para reservar y asignar una dirección IPv4 interna estática nueva
En Dirección IPv4 externa, selecciona una de las siguientes opciones:
- Efímera para asignar una dirección IPv4 efímera nueva
- Ninguna para no asignar una dirección IPv4 externa
- Una dirección IPv4 reservada estática de la lista
- Reservar dirección IP externa estática para reservar y asignar una dirección IPv4 externa estática nueva
Para las interfaces con direcciones IPv6, haz lo siguiente, según el tipo de acceso de la subred conectada:
- En Dirección IPv6 interna principal, selecciona una de las siguientes opciones:
- Asignada automáticamente para asignar una nueva dirección IPv6 interna efímera de forma automática
- Una dirección IPv6 reservada estática interna de la lista
- Reservar dirección IPv6 interna estática para reservar y asignar una dirección IPv6 interna estática nueva
- En Dirección IPv6 externa, selecciona una de las siguientes opciones:
- Asignación automática para asignar una dirección IPv6 externa efímera nueva automáticamente
- Una dirección IPv6 externa estática reservada de la lista
- Reservar dirección IPv6 externa estática para reservar y asignar una dirección IPv6 externa estática nueva
- En Dirección IPv6 interna principal, selecciona una de las siguientes opciones:
Para terminar de modificar la interfaz de red, haz clic en Listo.
Para agregar otra interfaz, haz clic en Agregar interfaz de red.
Continúa con el proceso de creación de VM.
Haz clic en Crear.
gcloud
Para crear interfaces de red en una instancia nueva, usa el comando instances create
.
Incluye la marca --network-interface
para cada interfaz, seguida de las claves de red correspondientes, como network
, subnet
, private-network-ip
, address
y external-ipv6-address
.
Para ver ejemplos de cómo crear VMs con varias interfaces, consulta Ejemplos de configuración.
En este fragmento, solo se muestra la marca --network-interface
, que es uno de los parámetros posibles que puedes especificar cuando creas una instancia.
Para ver qué tipos de máquinas admiten la cantidad de interfaces de red que necesitas, consulta la tabla Cantidad máxima de interfaces de red.
gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --network-interface \ network=NETWORK,subnet=SUBNET, \ stack-type=STACK_TYPE, \ private-network-ip=INTERNAL_IPV4_ADDRESS \ address=EXTERNAL_IPV4_ADDRESS | no-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 \ ...
Reemplaza lo siguiente:
INSTANCE_NAME
: Es el nombre de la instancia de VM que se creará.ZONE
: Es la zona en la que se crea la instancia.NETWORK
: La red a la que se adjunta la interfaz.SUBNET
: La subred a la que se adjunta la interfaz.STACK_TYPE
: Es el tipo de pila para la interfaz.El valor predeterminado es
IPV4_ONLY
. EspecificaIPV4_IPV6
para configurar una interfaz de pila doble oIPV6_ONLY
para configurar una interfaz solo IPv6 (versión preliminar).Valores para interfaces con direcciones IPv4:
INTERNAL_IPV4_ADDRESS
: la dirección IPv4 interna que quieres que tenga la interfaz en la subred de destino. Omite si deseas asignar cualquier dirección válida.EXTERNAL_IPV4_ADDRESS
: Es la dirección IPv4 externa de la interfaz.Debes haber reservado con anterioridad una dirección IPv4 externa. Si no deseas que la interfaz tenga una dirección IP externa, especifica “no-address” en lugar de
address=EXTERNAL_IPV4_ADDRESS
. Si deseas que la interfaz reciba una dirección IP externa efímera, especificaaddress=''
.
Valores para interfaces con direcciones IPv6:
INTERNAL_IPV6_ADDRESS
: la dirección IPv6 interna que quieres que tenga la interfaz en la subred de destino. Debes haber reservado con anterioridad una dirección IPv6 interna. Si no se especifica,Google Cloud asigna automáticamente una dirección IPv6 interna de la subred.EXTERNAL_IPV6_ADDRESS
: la dirección IPv6 externa que quieres que tenga la interfaz en la subred de destino. Debes haber reservado con anterioridad una dirección IPv6 externa. Si no se especifica,Google Cloud asigna automáticamente una dirección IPv6 externa de la subred.
API
Usa el método instances.insert
para crear una instancia de VM con varias interfaces de red.
Para crear una instancia de VM con solo direcciones IPv4 internas, haz lo siguiente:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "networkIP": "IPV4_ADDRESS", "subnetwork": "regions/REGION/subnetworks/SUBNET" }, for each interface, specify a network... ], other instance settings... }
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto que contiene la instancia.ZONE
: la zona que contiene la instancia.IPV4_ADDRESS
: la dirección IPv4 interna que deseas asignar a la interfaz de red.REGION
: la región que contiene la instancia.SUBNET
: la subred en la que se encuentra la interfaz de red.
Para crear una instancia de VM con direcciones IPv4 e IPv6 internas, haz lo siguiente:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "subnetwork": "regions/REGION/subnetworks/SUBNET" "ipv6Address": "IPV6_ADDRESS", "internalIpv6PrefixLength": 96, "stackType": IPV4_IPV6, "ipv6AccessType": INTERNAL }, for each interface, specify a network... ], other instance settings... }
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto que contiene la instancia.ZONE
: la zona que contiene la instancia.REGION
: la región que contiene la instancia.SUBNET
: la subred en la que se encuentra la interfaz de red.IPV6_ADDRESS
: la dirección IPv6 interna que quieres que tenga la interfaz en la subred de destino. Debes haber reservado con anterioridad una dirección IPv6 interna. Si no se especifica,Google Cloud asigna automáticamente una dirección IPv6 interna de la subred.
Para crear una instancia de VM con solo direcciones IPv6 internas (versión preliminar), haz lo siguiente:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "subnetwork": "regions/REGION/subnetworks/SUBNET" "ipv6Address": "IPV6_ADDRESS", "internalIpv6PrefixLength": 96, "stackType": IPV6_ONLY, "ipv6AccessType": INTERNAL }, for each interface, specify a network... ], other instance settings... }
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto que contiene la instancia.ZONE
: la zona que contiene la instancia.REGION
: la región que contiene la instancia.SUBNET
: la subred en la que se encuentra la interfaz de red.IPV6_ADDRESS
: la dirección IPv6 interna que quieres que tenga la interfaz en la subred de destino. Debes haber reservado con anterioridad una dirección IPv6 interna. Si no se especifica,Google Cloud asigna automáticamente una dirección IPv6 interna de la subred.
Terraform
Puedes usar un recurso de Terraform para crear una instancia de VM con varias interfaces de red.
Los argumentos de Terraform tienen valores de ejemplo que puedes cambiar.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Configuración de ejemplo
En las siguientes secciones, se muestra cómo crear VMs con varias interfaces.
Configura varias interfaces de red con solo direcciones IPv4
Con el siguiente comando de muestra, se crea una instancia con tres interfaces de red.
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
A continuación, se detalla cómo se crean las interfaces:
nic0
se crea con la configuración predeterminada. La interfaz se adjunta a una subred en la red de VPC predeterminada, con una dirección IP interna asignada de forma automática y una dirección IP externa efímera.nic1
se conecta a la subredsubnet-a
en la rednet1
, con una dirección IPv4 interna de 10.10.10.2 y una dirección IPv4 externa estática,EXTERNAL_IPV4_ADDRESS
.nic2
se conecta a la subredsubnet-b
en la rednet2
, con una dirección IPv4 interna de 10.10.20.2 y sin una dirección IP externa.
Para obtener una descripción completa del comando gcloud compute instances create
y la marca --network-interface
, lee la documentación del comando.
Puedes usar la dirección IP de la interfaz de red que agregaste para configurar el reenvío de DNS. Para obtener más información sobre cómo configurar las zonas de reenvío de Cloud DNS, consulta Zonas de reenvío.
Configura varias interfaces de red con direcciones IPv4 e IPv6
Con el siguiente comando de muestra, se crea una instancia de pila doble con dos interfaces de red.
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=ZONE_A
A continuación, se detalla cómo se crean las interfaces:
nic0
se conecta a la subredint-subnet
en la reddual-int
, con una dirección IPv4 interna efímera y una dirección IPv6 interna efímera.nic1
se conecta a la subredext-subnet
en la reddual-ext
, con una dirección IPv4 interna efímera y una dirección IPv6 externa efímera.
Configura varias interfaces de red con solo direcciones IPv6
Con el siguiente comando de muestra, se crea una instancia solo IPv6 (versión preliminar) con dos interfaces de red.
gcloud compute instances create vm1 \ --network-interface network=ipv6-only-int,subnet=int-subnet,stack-type=IPV6_ONLY \ --network-interface network=ipv6-only-ext,subnet=ext-subnet,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM \ --machine-type=n1-standard-4 --zone=us-west2-a
A continuación, se detalla cómo se crean las interfaces:
nic0
se conecta a la subredint-subnet
en la redipv6-only-int
, con una dirección IPv6 interna efímera.nic1
se conecta a la subredext-subnet
en la redipv6-only-ext
, con una dirección IPv6 externa efímera.
Configura interfaces de red múltiples para grupos de instancias
Puedes usar instancias con interfaces de red múltiples en grupos de instancias no administrados y grupos de instancias administrados.
En los grupos de instancias no administrados, crea cada instancia de forma individual y asegúrate de que la interfaz de red nic0
para cada VM esté conectada a la misma instancia de subred. Luego, agrega las instancias de VM al grupo de instancias no administrado.
A fin de configurar varias interfaces de red para grupos de instancias administrados, debes especificar la configuración de red de cada interfaz en la plantilla de instancias mediante la configuración de la marca --network-interface
una vez para cada interfaz.
En el siguiente ejemplo, se crea una plantilla de instancias con tres interfaces de red:
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 REGION_A
Debido a que los nombres de subred en cada región de un proyecto deben ser únicos, la especificación de las subredes por nombre asocia de forma implícita cada interfaz con una red de VPC. Cada interfaz debe usar una subred que se encuentre en una red de VPC única:
nic0
usa la subrednet0-subnet-a
.nic1
usa la subrednet1-subnet-b
.nic2
usa la subrednet2-subnet-c
.
La opción no-address
en la marca --network-interface
indica que la interfaz está configurada sin una dirección IPv4 externa. La dirección IP interna proviene de la subred que usa la interfaz. Para obtener información completa sobre las marcas y la sintaxis, consulta la marca --network-interface
del comando instance-templates create
.