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 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. É 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 que criar 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, 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. Saiba mais sobre a MTU de interface em Unidade de transmissão máxima na visão geral da VPC.

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. Consulte o Exemplo 1: dispositivos virtuais de rede e segurança para saber mais.

  • 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 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.

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

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 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 à 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 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.

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 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 ao subnet-perimeter, que faz parte do network-perimeter, 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 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 pertencer a 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.

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 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.

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