Criar VMs com várias interfaces de rede
Por padrão, cada instância de máquina virtual (VM) em uma rede de nuvem privada virtual (VPC) tem uma única interface de rede. No entanto, é possível configurar uma instância com várias interfaces de rede. Ao usar várias interfaces de rede de uma instância, cada interface precisa ser anexada a uma sub-rede de uma rede VPC diferente. Não é possível anexar várias interfaces de rede à mesma sub-rede ou às sub-redes que estão na mesma rede VPC.
Se você não precisar de várias interfaces de rede, siga o procedimento em Como criar e iniciar uma instância para criar instâncias com a configuração de rede padrão.
Para mais informações sobre várias interfaces de rede e como elas funcionam, consulte Várias interfaces de rede.
Antes de começar
Verifique se todas as redes e sub-redes necessárias foram criadas antes de criar a instância. Se você precisar criar redes ou sub-redes, consulte Criar e gerenciar redes VPC.
Verifique se cada rede tem regras de firewall adequadas para permitir o tráfego que você quer permitir da VM e que ela tem várias interfaces. Se você precisar criar regras de firewall, consulte Usar regras de firewall da VPC.
Se você estiver conectando uma VM a várias redes usando endereços IPv6, instale a versão
google-guest-agent
20220603.00 ou posterior. Para saber mais, consulte Não consigo me conectar ao endereço IPv6 de uma interface secundária.
Papéis IAM
Para criar uma instância com várias interfaces de rede, você precisa ter um dos seguintes papéis:
- Papel de editor ou proprietário de projeto
- Papel Administrador de instâncias do Compute (v1) (
roles/compute.instanceAdmin.v1
)
Como criar e excluir instâncias e modelos de instância com várias interfaces em um projeto que não usa um ambiente de VPC compartilhada: um usuário que tem o papel proprietário, editor ou administrador da instância do Compute (v1) no nível do projeto pode criar uma instância com várias interfaces associadas a redes e sub-redes VPC que fazem parte desse mesmo projeto.
Como criar e excluir instâncias e modelos de instância com várias interfaces em ambientes de VPC compartilhada: um usuário com o papel de proprietário, editor ou administrador de instâncias do Compute (v1) no projeto pode criar uma instância com várias interfaces. Se alguma das interfaces estiver
anexada a uma sub-rede em um projeto host de VPC compartilhada, você também
terá o
Papel Usuário de rede do Compute (roles/compute.networkUser
)
no nível do projeto host da VPC compartilhada ou no nível da sub-rede da VPC compartilhada.
Para saber mais sobre permissões, leia a Documentação do IAM do Compute Engine.
Criar instâncias de VM com várias interfaces de rede
Para instruções gerais sobre como criar instâncias, consulte Criar e iniciar uma instância de VM.
A primeira interface sempre é criada como nic0
e
padrão. Isso é importante para alguns outros aspectos da rede
Google Cloud. Por exemplo,os balanceadores de carga Google Cloud (exceto os
balanceadores de carga de rede de passagem) só
distribuem tráfego para nic0
.
Console
No console do Google Cloud, acesse a página Criar uma instância.
No campo Nome, insira um nome para a instância.
No campo Região, selecione uma região.
No campo Zona, selecione uma zona.
Na seção Opções avançadas, expanda Rede e faça o seguinte:
Na seção Interfaces de rede, expanda a interface de rede para editá-la.
Em Rede e Sub-rede, selecione a rede e a sub-rede que você quer usar.
Se você quiser configurar endereços IPv6 na interface, selecione uma sub-rede que tenha um intervalo de endereços IPv6 configurado. O tipo de acesso IPv6 da sub-rede determina se a VM recebe um endereço IPv6 interno ou um endereço IPv6 externo.
Selecione uma das seguintes opções para o tipo de pilha de IP da interface:
- IPv4 (pilha única)
- IPv4 e IPv6 (pilha dupla)
- IPv6 (pilha única) (pré-lançamento)
Para interfaces com endereços IPv4, faça o seguinte:
Em Endereço IPv4 interno principal, selecione uma das seguintes opções:
- Temporário para atribuir um novo endereço IPv4 temporário
- Um endereço IPv4 interno estático reservado da lista
- Reservar endereço IPv4 interno estático para reservar e atribuir um novo endereço IPv4 interno estático
Em Endereço IPv4 externo, selecione uma das seguintes opções:
- Temporário para atribuir um novo endereço IPv4 temporário
- Nenhum, para não atribuir um endereço IPv4 externo
- Um endereço IPv4 estático reservado da lista
- Reserve um endereço IP externo estático para reservar e atribuir um novo endereço IPv4 externo estático
Para interfaces com endereços IPv6, faça o seguinte, dependendo do tipo de acesso da sub-rede conectada:
- Em Endereço IPv6 interno principal, selecione uma das seguintes opções:
- Alocado automaticamente para atribuir um novo endereço IPv6 interno temporário
- Um endereço IPv6 interno estático reservado da lista
- Reservar endereço IPv6 interno estático para reservar e atribuir um novo endereço IPv6 interno estático
- Em Endereço IPv6 externo, selecione uma das seguintes opções:
- Alocação automática para atribuir um novo endereço IPv6 externo temporário
- Um endereço IPv6 externo estático reservado da lista
- Reservar um endereço IPv6 externo estático para reservar e atribuir um novo endereço IPv6 externo estático
- Em Endereço IPv6 interno principal, selecione uma das seguintes opções:
Para concluir a modificação da interface de rede, clique em Concluído.
Para adicionar outra interface, clique em Adicionar interface de rede.
Continue com o processo de criação da VM.
Clique em Criar.
gcloud
Para criar interfaces de rede em uma nova instância, use o
comando instances create
.
Inclua a sinalização --network-interface
para cada interface, seguida por qualquer chave de rede apropriada, como
network
, subnet
, private-network-ip
, address
e external-ipv6-address
.
Para conferir exemplos de como criar VMs com várias interfaces, consulte Configurações de exemplo.
Esse snippet ilustra apenas a sinalização --network-interface
, um dos muitos parâmetros possíveis de especificar ao criar uma instância.
Para ver quais tipos de máquina aceitam o número de interfaces de rede necessário, consulte a tabela Número máximo de interfaces de rede.
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 \ ...
Substitua:
INSTANCE_NAME
: o nome da instância de VM a ser criada.ZONE
: a zona em que a instância é criada.NETWORK
: a rede em que a interface é anexada.SUBNET
: a sub-rede em que a interface é anexada.STACK_TYPE
: o tipo de pilha da interface.O valor padrão é
IPV4_ONLY
. EspecifiqueIPV4_IPV6
para configurar uma interface de pilha dupla ouIPV6_ONLY
para configurar uma interface somente IPv6 (Pré-lançamento).Valores para interfaces com endereços IPv4:
INTERNAL_IPV4_ADDRESS
: o endereço IPv4 interno que você quer que a interface tenha na sub-rede de destino. Omita se você quiser apenas qualquer endereço válido atribuído.EXTERNAL_IPV4_ADDRESS
: o endereço IPv4 externo da interface.É preciso reservar um endereço IPv4 externo anteriormente. Se você não quiser que a interface tenha um endereço IP externo, especifique "no-address" em vez de
address=EXTERNAL_IPV4_ADDRESS
. Se você quiser que a interface receba um endereço IP externo temporário, especifiqueaddress=''
.
Valores para interfaces com endereços IPv6:
INTERNAL_IPV6_ADDRESS
: o endereço IPv6 interno que você quer que a interface tenha na sub-rede de destino. É preciso reservar um endereço IPv6 interno. Se não for especificado, Google Cloud vai atribuir automaticamente um endereço IPv6 interno da sub-rede.EXTERNAL_IPV6_ADDRESS
: o endereço IPv6 externo que você quer que a interface tenha na sub-rede de destino. É preciso reservar um endereço IPv6 externo anteriormente. Se não for especificado, Google Cloud vai atribuir automaticamente um endereço IPv6 externo da sub-rede.
API
Use o método instances.insert
para criar uma instância de VM com várias interfaces de rede.
Para criar uma instância de VM com apenas endereços IPv4 internos, faça o seguinte:
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... }
Substitua:
PROJECT_ID
: o ID do projeto que contém a instância.ZONE
: é a zona que contém a instância.IPV4_ADDRESS
: o endereço IPv4 interno que você quer atribuir à interface de rede.REGION
: a região que contém a instância.SUBNET
: a sub-rede em que a interface de rede está localizado.
Para criar uma instância de VM com endereços IPv4 e IPv6 internos, faça o seguinte:
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... }
Substitua:
PROJECT_ID
: o ID do projeto que contém a instância.ZONE
: é a zona que contém a instância.REGION
: a região que contém a instância.SUBNET
: a sub-rede em que a interface de rede está localizado.IPV6_ADDRESS
: o endereço IPv6 interno que você quer que a interface tenha na sub-rede de destino. É preciso reservar um endereço IPv6 interno. Se não for especificado, Google Cloud vai atribuir automaticamente um endereço IPv6 interno da sub-rede.
Para criar uma instância de VM com apenas endereços IPv6 internos (pré-lançamento), faça o seguinte:
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... }
Substitua:
PROJECT_ID
: o ID do projeto que contém a instância.ZONE
: é a zona que contém a instância.REGION
: a região que contém a instância.SUBNET
: a sub-rede em que a interface de rede está localizado.IPV6_ADDRESS
: o endereço IPv6 interno que você quer que a interface tenha na sub-rede de destino. É preciso reservar um endereço IPv6 interno. Se não for especificado, Google Cloud vai atribuir automaticamente um endereço IPv6 interno da sub-rede.
Terraform
É possível usar um recurso do Terraform para criar uma instância de VM com várias interfaces de rede.
Os argumentos do Terraform têm exemplos de valores que podem ser alterados.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Exemplos de configurações
As seções a seguir mostram como criar VMs com várias interfaces.
Configurar várias interfaces de rede com apenas endereços IPv4
A amostra de comando a seguir cria uma instância com três interfaces de rede.
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
As interfaces são criadas da seguinte forma:
A conta
nic0
é criada com as configurações padrão. A interface é anexada a uma sub-rede na rede VPC padrão, com um endereço IP interno alocado automaticamente e um temporário.nic1
está anexado à sub-redesubnet-a
na redenet1
, com um endereço IPv4 interno de 10.10.10.2 e um endereço IPv4 externo estático,EXTERNAL_IPV4_ADDRESS
.nic2
está anexado à sub-redesubnet-b
na redenet2
, com um endereço IPv4 interno de 10.10.20.2 e nenhum endereço IP externo.
Para uma descrição completa do comando gcloud compute instances create
e da sinalização --network-interface
, leia a documentação para o comando.
É possível usar o endereço IP da interface de rede adicionada para configurar o encaminhamento de DNS. Para saber mais sobre como configurar zonas de encaminhamento do Cloud DNS, consulte Zonas de encaminhamento.
Configurar várias interfaces de rede com endereços IPv4 e IPv6
A amostra de comando a seguir cria uma instância de pilha dupla com duas interfaces de rede.
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
As interfaces são criadas da seguinte forma:
nic0
está anexado à sub-redeint-subnet
na rededual-int
, com um endereço IPv4 interno efêmero e um endereço IPv6 interno temporário.nic1
está anexado à sub-redeext-subnet
na rededual-ext
, com um endereço IPv4 interno temporário e um endereço IPv6 externo temporário.
Configurar várias interfaces de rede com apenas endereços IPv6
O comando de exemplo a seguir cria uma instância somente IPv6 (Pré-lançamento) com duas interfaces de rede.
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
As interfaces são criadas da seguinte forma:
nic0
está anexado à sub-redeint-subnet
na redeipv6-only-int
, com um endereço IPv6 interno temporário.nic1
está anexado à sub-redeext-subnet
na redeipv6-only-ext
, com um endereço IPv6 externo temporário.
Configurar várias interfaces de rede para grupos de instâncias
É possível usar instâncias com várias interfaces de rede em grupos de instâncias não gerenciadas e em grupos de instâncias gerenciadas.
Para grupos de instâncias não gerenciadas, crie cada instância individualmente, garantindo que a interface de rede nic0
de cada VM esteja anexada a mesma sub-rede. Em seguida, adicione as instâncias de VM ao grupo de instâncias não gerenciadas.
Para configurar várias interfaces de rede para
grupos de instâncias gerenciadas,
é preciso especificar a configuração de rede para cada interface no modelo
de instância. Para isso, defina a sinalização --network-interface
uma vez para cada interface.
O exemplo a seguir cria um modelo de instância com três interfaces de rede:
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
Como os nomes das sub-redes em cada região de um projeto precisam ser exclusivos, a especificação de sub-redes por nome associa implicitamente cada interface a uma rede VPC. Cada interface precisa usar uma sub-rede que esteja em uma rede VPC exclusiva:
nic0
usa a sub-redenet0-subnet-a
nic1
usa a sub-redenet1-subnet-b
nic2
usa a sub-redenet2-subnet-c
A opção no-address
na flag --network-interface
indica que a
interface está configurada sem um endereço IPv4 externo. O endereço IP interno vem da sub-rede usada pela interface. Para informações completas sobre as sinalizações e a sintaxe, consulte a sinalização --network-interface
para o comando instance-templates create
.