Visão geral e exemplos de várias interfaces de rede

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

Visão geral

As redes VPC do Google Cloud Platform (GCP) são domínios de rede particular isolados por padrão. 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ços IP internos entre as redes, a menos que você configure mecanismos como o peering de VPC ou 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. Com várias interfaces de rede, você pode criar configurações para que uma instância se conecte 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. 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.

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

  • Isolamento de largura de banda em interfaces separadas: isso inclui impedir problemas de "head-of-line" entre o plano de controle e o de dados. É possível separar as redes dos planos de gerenciamento, controle, armazenamento e dados usando interfaces. Em alguns aplicativos, o controle é muito sensível (por exemplo, os sinais de funcionamento). Neles, é recomendado isolar o controle das interfaces do Datapath para garantir que o mínimo da largura de banda esteja disponível no caso de pico ou congestionamento de tráfego. Nesse cenário, use interfaces virtuais dedicadas para separar o tráfego do controle de outros tráfegos. Cada interface tem uma fila virtual. Ela impede que os picos da largura de banda e os ataques DDoS em uma rede VPC afetem outras redes VPC. Essas filas virtuais por interface também evitam o bloqueio "head-of-line" e fornecem a parcela necessária da CPU da instância para cada interface de E/S. Consulte o Exemplo 3: separação das interfaces de gerenciamento e de plano de dados nas arquiteturas SaaS para saber mais.

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

Geralmente, os dispositivos virtuais de rede e segurança como WAF, firewalls no nível do aplicativo e aceleradores WAN são configurados com várias interfaces virtuais. Cada uma delas tem um endereço IP particular próprio e, opcionalmente, um público.

Na figura abaixo, você vê uma configuração comum. Neste caso específico, você configura um dispositivo de rede virtual no caminho da conectividade pública à particular. Assim, o tráfego só pode acessar uma rede VPC particular de um cliente público externo. Isso por meio de um ponto de aplicação do firewall virtualizado no nível do aplicativo. Esse firewall é aplicado no topo das máquinas virtuais.

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 exemplo a seguir parte do princípio de 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 é anexado à subnet0 e não tem endereço IP público.
  • nic1 é anexado à subnet1 e tem um endereço IP público temporário.
  • nic2 é anexado à subnet2 e não tem endereço IP público.

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 de dispositivos centralizados 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 VPC compartilhado.

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 é 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 público.
  • nic2 é anexado à subnet-2, que faz parte da network-2 sem IP público.
  • nic3 é anexado à subnet-3, que faz parte da network-3 sem IP público.
  • nic4 é anexado à subnet-4, que faz parte da network-4 sem IP público.

Exemplo 3: separação das interfaces de gerenciamento e de plano de dados nas arquiteturas SaaS

Se você opera um serviço no GCP e o oferece a diferentes clientes, que são os locatários, é possível ter uma interface de gerenciamento separada para cuidar dele. Você pode usá-la para fazer upgrades de software, realizar procedimentos de manutenção e solucionar problemas, seja qual for a interface utilizada pelos locatários.

O diagrama a seguir descreve um serviço hospedado na nuvem. Como produtor, você isola o serviço fornecido a cada locatário em redes VPC separadas. Ou seja, você cria uma rede VPC para cada locatário e gera instâncias específicas para atender a todos os clientes. Por exemplo, você cria instâncias para atender ao Tenant A e as isola na Network A para que o serviço seja acessado pelas máquinas locais desse locatário. O resto deles não pode acessá-lo. Em seguida, você cria a mesma configuração para o Tenant B e o Tenant C.

Entretanto, você precisa ter acesso a cada serviço hospedado no GCP do locatário para fazer upgrades de software, fornecer suporte e solucionar problemas. Basta adicionar uma interface de gerenciamento à instância e associá-la à rede de gerenciamento, que estabelece uma conexão particular com as suas instalações locais.

Caso de uso 3: exemplo de SaaS (clique para ampliar)
Caso de uso 3: exemplo de SaaS (clique para ampliar)

A instância do Tenant A tem duas interfaces: uma que pertence à rede desse locatário e outra que pertence a uma rede de gerenciamento do produtor (provedor SaaS). Isso também acontece com o Tenant B, que tem uma interface que pertence à rede dele e outra que pertence à rede de gerenciamento do produtor (provedor SaaS).

Como provisionar e configurar as instâncias do exemplo 3

Para configurar as instâncias de locatário desse exemplo, use os seguintes comandos.

Para criar a VM-A:

gcloud compute instances create vm-a \
    --network-interface subnet=subnet-a,no-address \
    --network-interface subnet=subnet-mgmt,private-network-ip=198.168.0.2, \
    no-address

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

  • nic0 é anexado à subnet-a, que faz parte da network-a.
  • nic1 é anexado ao subnet-mgmt, que faz parte do network-mgmt.

Para criar a VM-B:

gcloud compute instances create vm-b\
    --network-interface subnet=subnet-b,no-address \
    --network-interface subnet=subnet-mgmt,private-network-ip=198.168.0.3, \
    no-address

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

  • nic0 é anexado à subnet-b, que faz parte da network-b.
  • nic1 é anexado ao subnet-mgmt, que faz parte do network-mgmt.

Para criar a VM-C:

gcloud compute instances create vm-c\
    --network-interface subnet=subnet-c,no-address \
    --network-interface subnet=subnet-mgmt,private-network-ip=198.168.0.4, \
    no-address

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

  • nic0 é anexado à subnet-c, que faz parte da network-c.
  • nic1 é anexado ao subnet-mgmt, que faz parte do network-mgmt.

Mais detalhes operacionais

Várias interfaces de rede em um ambiente VPC compartilhado

Com a VPC compartilhada, você divide redes VPC entre projetos na sua Cloud Organization.

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

Suas 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 às redes VPC compartilhadas, você precisa ter o papel 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. A consulta falhará se nic0 pertencer a uma rede VPC diferente daquela que a emite.

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 recebem 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 sai de uma instância para um destino que não seja uma sub-rede diretamente conectada fará esse processo por meio da rota padrão em eth0, a menos que isso seja configurado manualmente de outra forma.

Neste exemplo, a interface principal eth0 recebe a rota padrão (default via 10.138.0.1 dev eth0), e tanto eth0 quanto eth1 recebem as 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 com várias interfaces de rede

As rotas estáticas são aplicadas por rede VPC ou a instâncias específicas em uma rede VPC que correspondam a uma tag de destino configurada.

Cada rede VPC pode ter um conjunto diferente de rotas. Ao configurar uma instância com várias interfaces, cada uma delas pertence a uma rede VPC diferente. Dessa forma, o tráfego associado a cada interface está sujeito às rotas da rede VPC em que a interface está hospedada.

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 de uma instância de 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 com várias interfaces de rede

Quando um back-end com carga balanceada, como um grupo de instâncias ou de destino, tem várias interfaces de rede, o balanceador de carga envia o tráfego apenas para a interface padrão da instância do back-end.

Isso acontece em todos os tipos de balanceadores de carga compatíveis no GCP.

Regras de firewall com várias interfaces de rede

É possível configurar regras de firewall para permitir somente o tráfego específico. Basta definir:

  • o intervalo IP de origem, uma lista de blocos de endereço IP permitidos ou tags de origem e um conjunto de instâncias permitidas;
  • o protocolo de destino e/ou porta.

As regras de firewall são aplicadas por rede VPC ou a instâncias específicas em uma rede VPC que correspondam a uma tag de destino configurada.

Cada rede VPC pode ter um conjunto diferente de regras de firewall. Ao configurar uma instância com várias interfaces de rede, cada interface pertence a uma rede VPC diferente. Ela é restrita pelas regras de firewall aplicadas à rede VPC que a hospeda.

Como usar tags nos firewalls de instâncias com várias interfaces de rede

Se quiser usar tags para implementar regras de firewall, lembre-se de que elas são aplicadas no nível da instância e a todas as interfaces dela. Se isso não for ideal para você, defina sua configuração para que apenas algumas tags sejam usadas em rotas e regras de firewall em uma determinada rede VPC. Isso garante que essas tags sejam aplicadas apenas às interfaces associadas à rede VPC específica.

Por exemplo, se você usa o nome da rede VPC em uma tag, o usuário pode identificar com clareza qual rede VPC essas tags se aplicam e, posteriormente, qual interface.

Depois de escolher os nomes para identificar redes VPC específicas, use apenas as tags nas regras de firewall que se aplicam a essa rede particular.

Por exemplo, considere o seguinte cenário: você tem duas redes VPC, network1 e network2. Uma instância, vm-1, está anexada a ambas as redes VPC por meio de duas interfaces diferentes: nic0, associada à network1, e nic1, associada à network2.

A figura abaixo descreve essa configuração.

Como usar tags em firewalls (clique para ampliar)
Como usar tags em firewalls (clique para ampliar)

Nesse cenário, aplique as seguintes regras de firewall:

  1. Todas as instâncias em network1 aceitam conexões SSH apenas da VM1.
  2. Todas as instâncias em network2 aceitam conexões HTTP/HTTPS apenas da VM1.

Para configurar essas regras:

  1. Todas as instâncias em network1 aceitam conexões SSH apenas da VM1.

    1. Aplique uma tag na VM1 para ser usada somente na Network1. Neste exemplo, a tag é vm1-network1-foo:

      gcloud compute instances add-tags vm1 \
          --tags vm1-network1-foo
      
    2. Configure as regras de firewall na network1 para permitir SSH (TCP, porta 22) usando vm1-network1-foo como uma tag de origem:

      gcloud compute firewall-rules create allow-ssh-from-vm1 \
          --allow tcp:22 \
          --network network1 \
          --source-tags vm1-network1-foo
      
  2. Todas as instâncias em network2 aceitam conexões HTTP/HTTPS apenas da VM1.

    1. Aplique uma tag na VM1 para ser usada somente na Network2. Neste exemplo, vm1-network2-foo:

      gcloud compute instances add-tags vm1 \
          --tags vm1-network2-foo
      
    2. Configure as regras de firewall na Network2 para permitir HTTP e HTTPS (TCP, porta 80,443) usando vm1-network2-foo como uma tag de origem:

      gcloud compute firewall-rules create allow-http-https-from-vm1 \
          --allow tcp:80,443 \
          --network network2\
          --source-tags vm1-network2-foo
      
Regras de firewall (clique para ampliar)
Regras de firewall (clique para ampliar)

Próximos passos

Leia Como criar instâncias com várias interfaces de rede.

Esta página foi útil? Conte sua opinião sobre: