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
.
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 asubnet0
e não tem endereço IP externo.nic1
está anexado asubnet1
e tem um endereço IP externo temporário.nic2
está anexado asubnet2
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.
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 asubnet-perimeter
, que faz parte denetwork-perimeter
, com um endereço estáticoreserved-address
.nic1
está anexado asubnet-1
, que faz parte denetwork-1
, sem endereço IP externo.nic2
está anexado asubnet-2
, que faz parte denetwork-2
, sem endereço IP externo.nic3
está anexado asubnet-3
, que faz parte denetwork-3
, sem endereço IP externo.nic4
está anexado asubnet-4
, que faz parte denetwork-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.
Exemplo:
- Uma VM tem duas interfaces:
nic0
enic1
. A interfacenic0
está emvpc-net-a
. A interfacenic1
está emvpc-net-b
. A VM tem uma tag de rede chamadavpn-ok
. A tag é um atributo na instância, e não em uma interface específica. - A rede
vpc-net-a
tem uma rota estática personalizada com uma tag chamadavpn-ok
. - A rede
vpc-net-b
tem uma rota estática personalizada com uma tag chamadavpn-123
.
Essas etapas numeradas correspondem à figura 3:
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 VPCnetwork-1
nic1
na rede VPCnetwork-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
emnetwork-1
nic1
emnetwork-2
Suponha que você precise permitir o seguinte tráfego de vm1
:
- Tráfego SSH de
vm1
para qualquer instância emnetwork-1
- Tráfego HTTP e HTTPS de
vm1
para qualquer instância emnetwork-2
Para isso, é possível:
Atribuir duas tags de rede a
vm1
:vm1-network1
evm1-network2
Criar uma regra
allow
de firewall de entrada emnetwork-1
com os componentes abaixo para permitir o tráfego SSH devm1
para todas as VMs emnetwork-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
- Ação:
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 devm1
para todas as VMs emnetwork-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ção:
A Figura 4 mostra este exemplo de configuração do firewall: