Visão geral e exemplos de 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 mais informações sobre como criar configurações que usam várias interfaces, consulte Como criar várias interfaces de rede.

Visão geral

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 por meio de 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. É possível criar outras interfaces de rede anexadas às suas VMs. Ter várias interfaces de rede permite que você crie configurações em que uma instância se conecta diretamente a várias redes VPC. Cada interface precisa ter um endereço IP interno e também pode ter um externo. Dependendo do tipo dela, cada instância pode ter até 8 interfaces. Para mais informações, consulte Número máximo de interfaces.

Normalmente, você precisará de várias interfaces se quiser 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) e otimização WAN entre redes. Ter várias interfaces também é útil 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.

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) e os de proxy que sejam configurados com várias interfaces de rede. Consulte o Exemplo 1: dispositivos virtuais de rede e segurança para saber mais.

  • Isolamento de perímetro e DMZ: uma importante prática recomendada nas 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, é possível 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 a seguir 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.

Caso de uso 1: como provisionar e configurar instâncias com várias interfaces (clique para ampliar)
Caso de uso 1: como provisionar e configurar instâncias com várias interfaces (clique para ampliar)

Como provisionar e configurar as instâncias do exemplo 1

O comando abaixo pressupõe que subnet0, subnet1 e subnet2 já existem, com intervalos não sobrepostos. Para configurar o dispositivo de VM 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 à subnet0 e não tem endereço IP externo
  • nic1 é anexado à subnet1 e tem um endereço IP externo temporário
  • nic2 está anexado à 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. No exemplo abaixo, há quatro aplicativos, App1, App2, App3 e App4, hospedados em projetos de serviço diferentes. Eles precisam estar protegidos em toda a entrada de Internet, e o tráfego de saída precisa ser inspecionado e filtrado em um dispositivo de terceiros localizado centralmente no projeto host da VPC compartilhada.

Caso de uso 2: exemplo de VPC compartilhada com um dispositivo de terceiros (clique para ampliar)
Caso de uso 2: exemplo de VPC compartilhada com um dispositivo de terceiros (clique para ampliar)

Como provisionar e configurar as interfaces de VM e de rede do exemplo 2

Para criar as interfaces de VM e de rede desse exemplo, use os seguintes comandos.

Para criar o VM-appliance:

gcloud compute instances create VM-appliance \
    --network-interface subnet=subnet-dmz,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 à subnet-dmz, que faz parte da network-dmz, com um endereço estático "reserved-address"
  • nic1 é anexado à subnet-1, que faz parte da network-1, sem IP externo
  • nic2 é anexado à subnet-2, que faz parte da network-2, sem IP externo
  • nic3 é anexado à subnet-3, que faz parte da network-3, sem IP externo
  • nic4 é anexado à subnet-4, que faz parte da network-4, sem IP externo

Mais detalhes operacionais

Várias interfaces de rede em um ambiente de VPC compartilhada

Com a VPC compartilhada, é possível compartilhar redes VPC entre projetos na Organização do Cloud.

Ela possibilita a criação de instâncias associadas a uma rede VPC compartilhada, que é hospedada em um projeto host centralizado da VPC compartilhada. Consulte Como provisionar a VPC compartilhada para saber mais sobre a configuração dessas redes.

Instâncias ou modelos que têm várias interfaces de rede podem ter determinadas interfaces anexadas às sub-redes locais do projeto. Além disso, outras interfaces podem ser anexadas às redes VPC compartilhadas.

Para criar instâncias com uma ou mais interfaces associadas a redes VPC compartilhadas, você precisa ter o papel de compute.networkUser no projeto 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 pertencer a uma rede VPC diferente da rede VPC da instância que emite a consulta DNS interna, a consulta não terá sucesso.

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. A menos que configurado manualmente de outra forma, qualquer tráfego que saia de uma instância para um destino que não seja uma sub-rede diretamente conectada sairá da instância por meio da rota padrão em eth0.

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 saber mais, leia Como configurar o roteamento de políticas.

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 personalizada com uma tag correspondente.

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 aos pontos numerados no diagrama a seguir:

Rotas estáticas personalizadas e várias interfaces de rede (clique para ampliar)
Rotas estáticas personalizadas e várias interfaces de rede (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 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.

Como usar 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 isso não for ideal para você, defina sua configuração para que apenas algumas tags sejam usadas nas rotas de uma determinada rede VPC. Isso garante que elas sejam aplicadas apenas às interfaces associadas à rede VPC específica.

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.

Consulte a visão geral das regras de firewall para mais informações.

Como usar 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).

Consulte filtragem de origem e meta por conta de serviço para mais informações.

Tags de rede e contas de serviço identificam instâncias, não interfaces específicas. Não se esqueça de que as regras de firewall estão associadas a uma única rede VPC e que cada interface de uma instância com várias NICs precisa estar 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

O diagrama a seguir é uma ilustração deste exemplo de configuração de firewall:

Regras de firewall (clique para ampliar)
Regras de firewall (clique para ampliar)

A seguir