Várias interfaces de rede

Nesta página, você encontra uma visão geral sobre várias interfaces de rede em uma instância de máquina virtual (VM), incluindo como funcionam e exemplos de configuração. Para ver informações sobre como criar configurações que usam várias interfaces, consulte Criar VMs com várias interfaces de rede.

As VMs com vários controladores de interface de rede são chamadas de VMs multi-NIC.

As redes de nuvem privada virtual (VPC) do Google Cloud são, por padrão, domínios de rede privada isolados. Elas têm alcance global e contêm sub-redes regionais. As instâncias de VM em uma rede VPC podem se comunicar entre si usando endereços IP internos, desde que as regras de firewall permitam. No entanto, não é permitida a comunicação de endereço IP interno entre redes, a menos que você configure mecanismos como peering de rede VPC ou Cloud VPN.

Todas as instâncias em uma rede VPC têm uma interface de rede padrão. Ao configurar uma interface de rede, você seleciona uma rede VPC e uma sub-rede dentro dela para conectá-la. É possível criar outras interfaces de rede atreladas às VMs, mas cada interface precisa ser atrelada a uma rede VPC diferente. Ter várias interfaces de rede permite criar configurações em que uma instância se conecta diretamente a várias redes VPC.

Dependendo do tipo, cada instância pode ter até oito interfaces. Para mais informações, consulte Número máximo de interfaces de rede.

Cada interface pode ter os seguintes endereços IP configurados:

  • Um endereço IPv4 interno (obrigatório)
  • Um endereço IPv4 externo
  • Um endereço IPv6, interno ou externo, mas não ambos

    Para configurar um endereço IPv6, conecte a interface a uma sub-rede que tenha um intervalo IPv6 configurado.

Normalmente, são necessárias várias interfaces para configurar uma instância como um dispositivo de rede que tenha balanceamento de carga, detecção e prevenção de intrusão (IDS e IPS, nas siglas em inglês), firewall de aplicativos da Web (WAF) ou otimização de WAN entre as redes. Várias interfaces também são úteis quando os aplicativos em execução em uma instância precisam fazer a separação do tráfego. Isso inclui separar os tráfegos do plano de dados e do plano de gerenciamento.

Cada interface em uma VM é afetada pela MTU da rede atrelada. Para mais informações sobre a MTU de interface, consulte Unidade de transmissão máxima.

Casos de uso

Use várias interfaces de rede quando uma instância individual precisar acessar mais de uma rede VPC, e você não quiser conectá-las diretamente.

  • Função de rede e segurança: com várias interfaces, é possível habilitar funções virtualizadas de dispositivos de rede. Isso inclui os balanceadores de carga, os servidores de conversão de endereços de rede (NAT, na sigla em inglês) e os de proxy que sejam configurados com várias interfaces de rede. Para mais detalhes, consulte o Exemplo 1: dispositivos virtuais de rede e segurança.

  • Isolamento de perímetro (também conhecido como isolamento de DMZ): uma prática recomendada importante em arquiteturas de rede em camadas é isolar os serviços voltados ao público de uma rede interna e dos respectivos serviços. Para criar configurações em que haja interfaces de rede separadas na instância, use várias interfaces. Uma delas precisa aceitar o tráfego voltado ao público e a outra precisa lidar com o tráfego particular do back-end que tenha controles de acesso mais restritivos.

    Todos os recursos que podem ser acessados pela Internet precisam ser separados da rede interna e dos serviços dela. Isso limita drasticamente o escopo e o dano que uma violação de segurança pode causar. Por exemplo, coloque uma segunda interface em cada servidor da Web que se conecta a uma rede de nível intermediário que abriga o servidor do aplicativo. Esse servidor também pode residir em dois locais para uma rede do back-end que abriga o servidor do banco de dados. Cada instância que reside em dois locais recebe e processa solicitações no front-end. Depois, inicia uma conexão com o back-end e envia as solicitações aos servidores na rede dele.

    Ao configurar interfaces separadas, uma voltada ao público e outra particular, é possível aplicar regras de firewall e controles de acesso a cada uma delas. Além disso, você pode impor funções de segurança nas comunicações do domínio público com o particular. Para saber mais, consulte o Exemplo 2: como usar dispositivos de terceiros em um cenário de rede VPC compartilhada.

Exemplos de configuração

Esta seção examina diversos exemplos comuns de como usar várias interfaces de rede.

Exemplo 1: dispositivos virtuais de rede e segurança

Os dispositivos virtuais de rede e segurança, como firewalls de aplicativos da Web (WAF), firewalls no nível do aplicativo de segurança e aceleradores de WAN, geralmente são configurados com várias interfaces virtuais. Cada uma das várias interfaces é configurada com seu próprio endereço IP interno e, opcionalmente, endereço IP externo.

A Figura 1 descreve um exemplo de configuração de um firewall no nível do aplicativo que controla o tráfego da Internet para uma rede VPC. O firewall no nível do aplicativo é implementado nas VMs do Compute Engine.

Neste exemplo, a rota padrão da VM do dispositivo foi configurada para usar nic1.

Figura 1. Uma instância com um dispositivo de VM tem três interfaces de rede. Cada interface está conectada a uma sub-rede que está em uma rede VPC diferente (clique para ampliar).

Provisionar e configurar instâncias para o exemplo 1

O comando abaixo pressupõe que subnet0, subnet1 e subnet2 já existem, com intervalos não sobrepostos.

Para criar as interfaces de VM e de rede desse exemplo, use o seguinte comando:

gcloud compute instances create vm-appliance \
    --network-interface subnet=subnet0,no-address \
    --network-interface subnet=subnet1 \
    --network-interface subnet=subnet2,no-address \
    --machine-type n1-standard-4

Ele cria uma instância com três interfaces de rede:

  • nic0 está anexado a subnet0 e não tem endereço IP externo.
  • nic1 está anexado a subnet1 e tem um endereço IP externo temporário.
  • nic2 está anexado a subnet2 e não tem endereço IP externo.

Exemplo 2: como usar dispositivos de terceiros em um cenário de rede VPC compartilhada

Esta configuração é útil quando você quer compartilhar um único conjunto centralizado de dispositivos de terceiros para cargas de trabalho ou aplicativos hospedados em projetos diferentes. Na Figura 2, há quatro aplicativos diferentes, App1, App2, App3 e App4, hospedados em diferentes projetos de serviço. Eles são necessários para proteger você em toda a entrada de Internet. Já o tráfego de saída precisa ser inspecionado e filtrado em um dispositivo de terceiros localizado centralmente no projeto do host da VPC compartilhada.

Figura 2. Uma instância em um projeto host de VPC compartilhada hospeda um dispositivo de VM. A instância tem uma interface de rede para cada um dos quatro projetos de serviço e outra para a rede VPC do perímetro (clique para ampliar).

Provisionar e configurar a VM e as interfaces de rede para o exemplo 2

Para criar as interfaces de VM e de rede desse exemplo, use o seguinte comando:

gcloud compute instances create VM-appliance \
    --network-interface subnet=subnet-perimeter,address='reserved-address' \
    --network-interface subnet=subnet-1,no-address \
    --network-interface subnet=subnet-2,no-address \
    --network-interface subnet=subnet-3,no-address \
    --network-interface subnet=subnet-4,no-address \
    --machine-type=n1-standard-4

Isso cria uma instância com cinco interfaces de rede:

  • nic0 está anexado a subnet-perimeter, que faz parte de network-perimeter, com um endereço estático reserved-address.
  • nic1 está anexado a subnet-1, que faz parte de network-1, sem endereço IP externo.
  • nic2 está anexado a subnet-2, que faz parte de network-2, sem endereço IP externo.
  • nic3 está anexado a subnet-3, que faz parte de network-3, sem endereço IP externo.
  • nic4 está anexado a subnet-4, que faz parte de network-4, sem endereço IP externo.

Mais detalhes operacionais

Várias interfaces de rede em um ambiente VPC compartilhado

A VPC compartilhada permite compartilhar redes VPC entre projetos na sua organização do Google Cloud.

A VPC compartilhada permite criar instâncias associadas a uma rede VPC compartilhada, que é hospedada em um projeto host centralizado da VPC compartilhada. Para mais informações sobre como configurar redes VPC compartilhadas, consulte Como provisionar VPC compartilhada.

Para criar instâncias com uma ou mais interfaces associadas às redes VPC compartilhadas, você precisa ter o papel compute.networkUser (roles/compute.networkUser) no projeto do host da VPC compartilhada.

Resolução DNS com várias interfaces de rede

Quando uma consulta DNS interna é feita com o nome do host da instância, ela é resolvida na interface principal (nic0) da instância. Se a interface nic0 da instância estiver anexada a uma sub-rede em uma rede VPC diferente da rede VPC da instância que emite a consulta DNS interna, a consulta falhará.

Os registros DNS particulares do Compute Engine não são gerados por interface.

Comportamento do DHCP com várias interfaces de rede

Em uma configuração padrão com várias interfaces, o SO usa o DHCP. O DHCP e ARP de cada interface nessa configuração se comportam como se estivessem em uma instância com uma única interface.

Em uma instância com várias interfaces que utilizam o DHCP, cada uma delas recebe uma rota para a sub-rede em que se encontra. Além disso, a instância recebe uma única rota padrão associada à interface principal eth0. Qualquer tráfego que saia de uma instância para um destino que não seja uma sub-rede diretamente conectada usará a rota padrão em eth0, a menos que isso seja configurado manualmente.

O comportamento é o mesmo para interfaces com endereços IPv6. A interface recebe uma rota para o intervalo de sub-rede IPv6 em que se encontra, bem como uma única rota padrão IPv6.

Neste exemplo, a interface principal eth0 recebe a rota padrão (default via 10.138.0.1 dev eth0) e ambas as interfaces eth0 e eth1 recebem rotas para as respectivas sub-redes.

instance-1:~$ ip route
default via 10.138.0.1 dev eth0
10.137.0.0/20 via 10.137.0.1 dev eth1
10.137.0.1 dev eth1 scope link
10.138.0.0/20 via 10.138.0.1 dev eth0
10.138.0.1 dev eth0 scope link

Para mais informações, consulte o seguinte tutorial: Configurar o roteamento para uma interface extra.

Rotas estáticas personalizadas e várias interfaces de rede

Quando uma instância de VM tem várias interfaces e uma tag de rede, talvez essa tag não afete todas as interfaces da VM. A tag de rede de uma VM afeta uma interface quando essa interface está em uma rede VPC que contém uma rota estática com uma tag correspondente.

Por exemplo:

  1. Uma VM tem duas interfaces: nic0 e nic1. A interface nic0 está em vpc-net-a. A interface nic1 está em vpc-net-b. A VM tem uma tag de rede chamada vpn-ok. A tag é um atributo na instância, e não em uma interface específica.
  2. A rede vpc-net-a tem uma rota estática personalizada com uma tag chamada vpn-ok.
  3. A rede vpc-net-b tem uma rota estática personalizada com uma tag chamada vpn-123.

Essas etapas numeradas correspondem à figura 3:

Figura 3. A rota estática personalizada em vpc-net-a afeta nic0 porque elas têm uma tag em comum, enquanto a rota estática personalizada em vpc-net-b não afeta nic1 (clique para ampliar).

Como a rede vpc-net-a tem uma rota com uma tag em comum com a VM, a tag vpn-ok da VM se aplica à interface nic0 da VM em vpc-net-a. Por outro lado, como a rede vpc-net-b não tem uma rota estática com a tag vpn-ok, a tag de rede vpn-ok da VM é ignorada na interface nic1 da VM.

Tags em rotas de instâncias com várias interfaces de rede

Se você escolher usar tags com rotas, elas serão aplicadas no nível da instância. Por conta disso, as tags se aplicam a todas as interfaces da instância da máquina virtual. Se você não quiser que isso aconteça, verifique se as tags aplicadas às rotas são exclusivas de cada rede VPC.

Balanceadores de carga e várias interfaces de rede

Todos os balanceadores de carga do Google Cloud, exceto o balanceamento de carga TCP/UDP interno, só distribuem tráfego para a primeira interface (nic0) de uma instância de back-end.

Regras de firewall e várias interfaces de rede

Cada rede VPC tem seu próprio conjunto de regras de firewall. Se a interface de uma instância estiver em uma determinada rede VPC, as regras de firewall da rede serão aplicadas a essa interface.

Por exemplo, suponha que uma instância de VM tenha duas interfaces:

  • nic0 na rede VPC network-1
  • nic1 na rede VPC network-2

As regras de firewall criadas para a rede network-1 se aplicam a nic0. As regras de firewall criadas para a rede network-2 se aplicam a nic1.

Para mais informações, consulte Regras de firewall da VPC.

Firewalls em instâncias com várias interfaces de rede

  • As regras de firewall de entrada podem usar tags de rede ou contas de serviço para identificar origens, metas (destinos) ou as duas coisas.

  • As regras de firewall de saída podem usar tags de rede ou contas de serviço para identificar metas (origens).

Para mais informações, consulte Filtragem de origem e de destino por conta de serviço.

Tags de rede e contas de serviço identificam instâncias, não interfaces específicas. Lembre-se de que as regras de firewall são associadas a uma única rede VPC e que cada interface de uma instância de várias NICs precisa estar em uma sub-rede que esteja em uma rede VPC exclusiva.

O exemplo a seguir demonstra como usar tags de origem para regras allow de firewall de entrada. A instância vm1 tem duas interfaces de rede:

  • nic0 em network-1
  • nic1 em network-2

Suponha que você precise permitir o seguinte tráfego de vm1:

  • Tráfego SSH de vm1 para qualquer instância em network-1
  • Tráfego HTTP e HTTPS de vm1 para qualquer instância em network-2

Para isso, é possível:

  1. Atribuir duas tags de rede a vm1: vm1-network1 e vm1-network2

  2. Criar uma regra allow de firewall de entrada em network-1 com os componentes abaixo para permitir o tráfego SSH de vm1 para todas as VMs em network-1:

    • Ação: allow
    • Direção: ingress
    • Origens: VMs com tag vm1-network1
    • Metas: todas as instâncias na rede VPC
    • Protocolos e portas: tcp:22
  3. Criar uma regra de firewall de permissão de entrada em network-2 com os seguintes componentes para permitir que o tráfego HTTP e HTTPS de vm1 para todas as VMs em network-2:

    • Ação: allow
    • Direção: ingress
    • Origens: VMs com tag vm1-network2
    • Metas: todas as instâncias na rede VPC
    • Protocolos e portas: tcp:80,443

A Figura 4 mostra este exemplo de configuração do firewall:

Figura 4. A regra de firewall 1 e a regra de firewall 2 têm uma tag de origem associada à VM1. A regra de firewall 1, que está em network-1, afeta apenas nic0 da VM1, porque ambas estão em network-1. A regra de firewall 2 só afeta nic1 da VM1 porque também compartilham uma rede (clique para ampliar).

A seguir