Criar VMs com várias interfaces de rede
Esta página descreve como criar instâncias de máquinas virtuais com múltiplas interfaces de rede.
Antes de começar
Antes de começar, confira se você conhece as características das instâncias com várias interfaces de rede, conforme descrito na Visão geral de várias interfaces de rede.
Papéis do 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
- Função de Admin da instância do Compute (v1) (
roles/compute.instanceAdmin.v1)
Criação e exclusão de instâncias e modelos de instância com várias interfaces em um projeto que não usa um ambiente VPC compartilhada: Um usuário com a função de Proprietário, Editor ou Administrador da instância do Compute (v1) pode criar uma instância com várias interfaces associadas a redes e sub-redes VPC que fazem parte do 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 da instância do Compute (v1) 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)
para todo o projeto host ou para as sub-redes que você precisa usar.
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
Nesta seção, descrevemos como criar uma instância com várias interfaces de rede, incluindo vNICs e NICs dinâmicas. 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.
Console
No console do Google Cloud , acesse a página Criar uma instância.
No painel Configuração da máquina, faça o seguinte:
- No campo Nome, dê um nome para a instância.
- No campo Região, selecione uma região.
- No campo Zona, escolha uma opção.
No menu de navegação, clique em Rede para abrir o painel Rede.
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ê deseja configurar endereços IPv6 na interface, selecione uma sub-rede que tenha um
/64Intervalo de endereços IPv6 configurado. O tipo de acesso IPv6 da sub-rede determina se a instância recebe um endereço IP interno./96intervalo de endereços IPv6 ou um externo/96Intervalo de endereços IPv6.Selecione uma das seguintes opções para o tipo de pilha IP para a interface:
- IPv4 (pilha única)
- IPv4 e IPv6 (pilha dupla)
- IPv6 (pilha única)
Para interfaces com endereços IPv4, faça o seguinte:
Em Endereço IPv4 interno principal, selecione uma das seguintes opções:
- Efêmero (Automático) para atribuir automaticamente um novo endereço IPv4 efêmero
- Efêmero (Personalizado) para especificar manualmente um novo endereço IPv4 efêmero
- 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
Você pode, opcionalmente, atribuir um ou mais intervalos de IP alias à interface de rede. Para atribuir um intervalo de IPs alternativos, faça o seguinte:
- Em Intervalos de IP do alias, clique em Adicionar intervalo de IP.
- Em Intervalo de sub-rede, selecione um intervalo de endereços IPv4 primário ou secundário de sub-rede para usar.
- Em Intervalo de IP do alias, digite um intervalo de IP na notação CIDR. Este intervalo deve ser um intervalo não utilizado do intervalo de IP da sub-rede que você selecionou.
Para obter mais informações sobre como atribuir intervalos de IP de alias às interfaces de rede da VM, consulte Configurar intervalos de IP de alias.
Para interfaces com endereços IPv6, faça o seguinte, dependendo do tipo de acesso da sub-rede conectada:
- Para Endereço IPv6 interno primário, selecione uma das seguintes opções:
- Temporário (automático) para atribuir automaticamente um novo intervalo de endereços IPv6 internos temporários
- Temporário (personalizado) para especificar manualmente um novo intervalo de endereços IPv6 internos temporários
- Um intervalo de endereços IPv6 internos estáticos reservados da lista
- Reservar endereço IPv6 interno estático para reservar e atribuir um novo intervalo de endereços IPv6 internos estáticos
- Em Endereço IPv6 externo, selecione uma das seguintes opções:
- Efêmero (Automático) para atribuir automaticamente um novo intervalo de endereços IPv6 externos efêmeros
- Temporário (personalizado) para especificar manualmente um novo intervalo de endereços IPv6 externos temporários
- Um intervalo de endereços IPv6 externos estáticos reservados da lista
- Reservar endereço IPv6 externo estático para reservar e atribuir um novo intervalo de endereços IPv6 externos estáticos
- Para Endereço IPv6 interno primário, selecione uma das seguintes opções:
Para concluir a modificação da interface de rede, clique em Concluído.
Para adicionar outra interface de rede:
Para adicionar uma vNIC, clique em Adicionar uma interface de rede e preencha o formulário inserindo os detalhes da vNIC.
Para adicionar uma NIC dinâmica, clique em Adicionar uma interface de rede dinâmica e faça o seguinte:
- No campo Interface de rede mãe, selecione a vNIC mãe para criar a NIC dinâmica.
- No campo ID da VLAN, insira o ID da VLAN da NIC dinâmica.
- Preencha o formulário com os detalhes restantes da NIC dinâmica.
Continue com o processo de criação de instâncias.
Clique em Criar.
gcloud
Para criar interfaces de rede em uma nova instância, use o
comando gcloud compute instances create.
Inclua a flag --network-interface para cada interface, seguida por qualquer chave de rede apropriada, como network, subnet, private-network-ip, address, external-ipv6-address e vlan.
Incluir a chave vlan cria uma NIC dinâmica.
Se você criar uma NIC dinâmica, também precisará seguir as etapas para configurar o SO convidado para NICs dinâmicas depois de criar a instância.
Para conferir exemplos de como criar instâncias 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.
gcloud compute instances create INSTANCE_NAME \
--zone ZONE \
--network-interface \
network=NETWORK_A,subnet=SUBNET_A, \
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_B,subnet=SUBNET_B, \
stack-type=STACK_TYPE, \
external-ipv6-address=EXTERNAL_IPV6_ADDRESS, \
external-ipv6-prefix-length=96, \
ipv6-network-tier=PREMIUM, \
vlan=VLAN_ID \
...
Substitua:
INSTANCE_NAME: o nome da instância a ser criada.ZONE: a zona em que a instância é criada.NETWORK_A,NETWORK_B: a rede em que a interface é anexada.SUBNET_A,SUBNET_B: a sub-rede em que a interface é anexada.STACK_TYPE: o tipo de pilha da interface.O valor padrão é
IPV4_ONLY. EspecifiqueIPV4_IPV6para configurar uma interface de pilha dupla ouIPV6_ONLYpara configurar uma interface somente IPv6.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 quiser que a interface receba um endereço IP externo temporário, especifiqueaddress=''.
Valores para interfaces com endereços IPv6:
INTERNAL_IPV6_ADDRESS: o intervalo de endereços IPv6 internos que você quer que a interface tenha na sub-rede de destino. Se não for especificado, oGoogle Cloud vai atribuir automaticamente um intervalo de endereços IPv6 internos da sub-rede.EXTERNAL_IPV6_ADDRESS: o intervalo de endereços IPv6 externos que você deseja que a interface tenha na sub-rede de destino. Se não for especificado, oGoogle Cloud vai atribuir automaticamente um intervalo de endereços IPv6 externos da sub-rede.
VLAN_ID: um ID da VLAN. Especificar um ID da VLAN configura a interface de rede como uma NIC dinâmica. Você precisa colocar uma NIC dinâmica depois da vNIC mãe no comando.
API
Use o método instances.insert para criar uma instância com várias interfaces de rede.
Incluir o campo vlan cria uma NIC dinâmica.
Se você criar uma NIC dinâmica, também precisará seguir as etapas para configurar o SO convidado para NICs dinâmicas depois de criar a instância.
Veja os exemplos a seguir:
Para criar uma instância apenas com 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_A", "subnetwork": "regions/REGION/subnetworks/SUBNET_A" }, { "networkIP": "IPV4_ADDRESS_B", "subnetwork": "regions/REGION/subnetworks/SUBNET_B", "vlan": "VLAN_ID" }, 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_A,IPV4_ADDRESS_B: os endereços IPv4 internos que você quer atribuir a cada interface de rede.REGION: a região que contém a instância.SUBNET_A, SUBNET_B: as sub-redes onde cada interface de rede está localizada.VLAN_ID: um ID da VLAN. Especificar um ID da VLAN configura a interface de rede como uma NIC dinâmica. Você deve colocar uma NIC dinâmica após a vNIC pai na solicitação.
Para criar uma instância 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_A", "ipv6Address": "IPV6_ADDRESS_A", "internalIpv6PrefixLength": 96, "stackType": IPV4_IPV6, "ipv6AccessType": INTERNAL }, { "subnetwork": "regions/REGION/subnetworks/SUBNET_B", "ipv6Address": "IPV6_ADDRESS_B", "internalIpv6PrefixLength": 96, "stackType": IPV4_IPV6, "ipv6AccessType": INTERNAL, "vlan": "VLAN_ID" }, 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, SUBNET_B: as sub-redes em que cada interface de rede está localizada.IPV6_ADDRESS_A, IPV6_ADDRESS_B: o intervalo de endereços IPv6 internos que você quer que a interface tenha na sub-rede de destino. Se não for especificado, oGoogle Cloud vai atribuir automaticamente um intervalo de endereços IPv6 internos da sub-rede.VLAN_ID: um ID da VLAN. Especificar um ID da VLAN configura a interface de rede como uma NIC dinâmica. Você deve colocar uma NIC dinâmica após sua vNIC pai.
Para criar uma instância com apenas endereços 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_A", "ipv6Address": "IPV6_ADDRESS_A", "internalIpv6PrefixLength": 96, "stackType": IPV6_ONLY, "ipv6AccessType": INTERNAL }, { "subnetwork": "regions/REGION/subnetworks/SUBNET_B", "ipv6Address": "IPV6_ADDRESS_B", "internalIpv6PrefixLength": 96, "stackType": IPV6_ONLY, "ipv6AccessType": INTERNAL, "vlan": "VLAN_ID" }, 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, SUBNET_B: as sub-redes em que cada interface de rede está localizada.IPV6_ADDRESS_A, IPV6_ADDRESS_B: o intervalo de endereços IPv6 internos que você deseja que a interface tenha na sub-rede de destino. Caso não seja especificado,Google Cloud atribui automaticamente um intervalo de endereços IPv6 interno da sub-rede.VLAN_ID: um ID de VLAN. Especificar um ID de VLAN configura a interface de rede como uma NIC dinâmica. Você deve colocar uma NIC dinâmica após sua vNIC pai.
Terraform
Você pode usar um recurso Terraform para criar uma instância 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 instâncias com múltiplas interfaces.
Configurar várias vNICs e NICs dinâmicas
O seguinte comando de exemplo cria uma instância com as seguintes interfaces de rede:
- Uma vNIC chamada
nic0que é a vNIC pai da seguinte:- Uma NIC dinâmica chamada
nic0.2
- Uma NIC dinâmica chamada
- Uma vNIC chamada
nic1que é a principal dos seguintes itens:- Uma NIC dinâmica chamada
nic1.4 - Uma NIC dinâmica chamada
nic1.5
- Uma NIC dinâmica chamada
gcloud compute instances create vm1 \
--zone zone-a \
--network-interface=network=network-a,subnet=subnet-a \
--network-interface=network=network-b,subnet=subnet-b,vlan=2 \
--network-interface=network=network-c,subnet=subnet-c \
--network-interface=network=network-d,subnet=subnet-d,vlan=4 \
--network-interface=network=network-e,subnet=subnet-e,vlan=5
Depois de criar uma instância com NICs dinâmicas, você também precisa configurar o SO convidado para NICs dinâmicas.
Configure várias interfaces de rede usando 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.nic1está conectado à sub-redesubnet-ana redenet1, com um endereço IPv4 interno de10.10.10.2e um endereço IPv4 externo estático,EXTERNAL_IPV4_ADDRESS.nic2está conectado à sub-redesubnet-bna redenet2, com um endereço IPv4 interno de10.10.20.2e 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.
Configure 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:
nic0está conectado à sub-redeint-subnetna rededual-int, com um endereço IPv4 interno efêmero e um intervalo de endereços IPv6 internos efêmeros.nic1está conectado à sub-redeext-subnetna rededual-ext, com um endereço IPv4 interno efêmero e um intervalo de endereços IPv6 externos efêmeros.
Configure várias interfaces de rede usando apenas endereços IPv6.
O comando de exemplo a seguir cria uma instância somente IPv6 com três interfaces de rede.
gcloud compute instances create vm1 \
--network-interface network=ipv6-only-int-a,subnet=int-subnet-a,stack-type=IPV6_ONLY \
--network-interface network=ipv6-only-int-b,subnet=int-subnet-b,stack-type=IPV6_ONLY,internal-ipv6-address=fd20:db8:0:0:1:0:: \
--network-interface network=ipv6-only-ext,subnet=ext-subnet,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM,external-ipv6-address=EXTERNAL_IPV6_ADDRESS \
--machine-type=n1-standard-4 --zone=us-west2-a
As interfaces são criadas da seguinte forma:
nic0está conectado à sub-redeint-subnet-ana redeipv6-only-int-a, com um endereço IPv6 interno efêmero alocado automaticamente.nic1está conectado à sub-redeint-subnet-bna redeipv6-only-int-b, com um intervalo de endereços IPv6 internos efêmeros personalizadosfd20:db8:0:0:1:0::/96.nic2está conectado à sub-redeext-subnetna redeipv6-only-ext, com um intervalo de endereços IPv6 externos estáticos,EXTERNAL_IPV6_ADDRESS.
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 para cada instância esteja conectada à mesma sub-rede. Em seguida, adicione as instâncias 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. Neste exemplo, cada interface usa uma sub-rede que está em uma rede VPC exclusiva:
nic0usa a sub-redenet0-subnet-anic1usa a sub-redenet1-subnet-bnic2usa 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.
A seguir
- Configurar roteamento para uma interface adicional
- Adicionar NICs dinâmicas a uma instância
- Ver interfaces de rede de uma instância
- Atualizar as interfaces de rede para uma instância
- Excluir NICs dinâmicas de uma instância