Skip to main content

VPC na prática: conceitos e principais componentes

Guia introdutório para entender o que é uma VPC e para que serve cada peça dela: subnets, route tables, internet gateway, NAT gateway, security groups e network ACLs.

Pré-requisito: nenhum, esse manual é só conceito. Ajuda ter lido os manuais de EC2, porque toda instância nasce dentro de uma VPC.


Parte 1: O que é uma VPC​

VPC é Virtual Private Cloud. Na prática é a sua rede privada dentro da AWS, isolada das redes das outras contas, onde os seus recursos vivem (instâncias EC2, bancos RDS, load balancers e por aí vai).

A analogia que funciona: a VPC é o seu datacenter dentro da região da AWS. Você define a faixa de IPs, corta essa faixa em pedaços menores, decide o que fala com a internet e o que fica trancado lá dentro.

Pontos que valem guardar:

  • A VPC vive dentro de uma região (ex: us-east-1). Ela se espalha por todas as zonas de disponibilidade daquela região.
  • Toda conta nova já vem com uma VPC default, com tudo pré-configurado para funcionar. Foi nela que as instâncias dos manuais de EC2 nasceram.
  • O tamanho da VPC é definido por um bloco CIDR, por exemplo 10.0.0.0/16. Esse /16 dá cerca de 65 mil IPs para você distribuir.
  • Depois de criada, a faixa principal não muda. Dá para adicionar faixas extras, mas o ideal é já nascer com espaço de sobra.

💡 Equivalente on-prem: a VPC é o seu range de rede interno do datacenter (o 10.x.x.x da empresa). Tudo que você faz depois é subnetting e roteamento em cima dele.


Parte 2: Subnets​

A subnet é um pedaço da faixa da VPC. Você pega o 10.0.0.0/16 e corta em blocos menores, tipo 10.0.1.0/24 e 10.0.2.0/24, cada um com 251 IPs úteis (a AWS reserva 5 endereços de cada subnet).

Duas coisas definem uma subnet:

  • A zona de disponibilidade. Cada subnet fica presa em uma AZ. Se você quer alta disponibilidade, cria subnets iguais em AZs diferentes e espalha os recursos.
  • Se ela é pública ou privada. Isso não é um botão, é uma consequência da tabela de rotas (Parte 3). Subnet pública é a que tem rota para o internet gateway. Privada é a que não tem.

Divisão clássica de um ambiente:

SubnetO que vai dentroAcesso à internet
PúblicaLoad balancer, bastion host, NAT gatewayEntra e sai direto
PrivadaInstâncias de aplicação, banco de dadosSó sai, e mesmo assim passando pelo NAT

💡 Regra de bolso: banco de dados nunca em subnet pública. Se ele não precisa ser alcançado da internet, ele não fica onde a internet chega.


Parte 3: Route tables (tabelas de rotas)​

A tabela de rotas é o que diz para onde cada pacote vai. Toda subnet está associada a uma tabela de rotas, e é ela que decide o destino do tráfego que sai dali.

Toda tabela já nasce com uma rota local, tipo:

DestinoAlvo
10.0.0.0/16local

Isso quer dizer "qualquer coisa dentro da própria VPC, entrega direto, sem intermediário". Essa linha não dá para apagar.

O que você adiciona é o resto:

  • Para a subnet virar pública, você adiciona 0.0.0.0/0 apontando para o internet gateway.
  • Para a subnet privada conseguir sair (fazer apt update, chamar uma API), você adiciona 0.0.0.0/0 apontando para o NAT gateway.

💡 0.0.0.0/0 significa "todo o resto do mundo". É a rota padrão, o caminho que o pacote pega quando nenhuma regra mais específica bate.


Parte 4: Internet Gateway (IGW)​

O internet gateway é a porta da VPC para a internet. É um recurso que você cria uma vez e anexa na VPC.

Sozinho ele não faz nada. Para o tráfego realmente sair, precisam existir três coisas ao mesmo tempo:

  1. O IGW anexado na VPC.
  2. Uma rota 0.0.0.0/0 para o IGW na tabela de rotas da subnet.
  3. O recurso com um IP público ou elastic IP (ver manual de IP do EC2).

Faltou uma das três, não navega.

⚠️ Pegadinha comum: instância com IP público, mas na subnet cuja tabela de rotas não tem a linha do IGW. Ela parece pública e não é. curl de dentro dá timeout e todo mundo culpa o security group.


Parte 5: NAT Gateway​

O NAT gateway resolve um problema específico: a instância na subnet privada precisa sair para a internet (baixar pacote, atualizar, falar com uma API externa), mas você não quer que ninguém de fora consiga entrar nela.

Como funciona:

  • O NAT gateway fica numa subnet pública e tem um elastic IP.
  • Na tabela de rotas da subnet privada, o 0.0.0.0/0 aponta para o NAT.
  • A instância privada manda o pacote para o NAT, o NAT troca o IP de origem pelo dele e joga na internet. A resposta volta pelo mesmo caminho.
  • Conexão iniciada de fora para a instância privada continua impossível. O NAT só deixa passar a volta do que a instância pediu.

💰 O NAT gateway é cobrado por hora e por volume de dados que passa por ele. Em lab, se você não precisa que a subnet privada saia, nem cria o NAT. É um dos custos que mais surpreende a conta no fim do mês.

💡 Equivalente on-prem: o NAT do firewall de borda, que deixa a rede interna acessar a internet sem expor máquina nenhuma.


Parte 6: Security Groups e Network ACLs​

São as duas camadas de firewall da VPC. Já tem um manual inteiro sobre security group, aqui fica só a comparação para não confundir.

Security GroupNetwork ACL (NACL)
Onde ageNa instância (na placa de rede virtual)Na borda da subnet
ProtegeUm recursoTudo que está na subnet
Tipo de regraSó allowAllow e deny
EstadoStateful (a volta passa sozinha)Stateless (precisa liberar ida e volta)
Ordem das regrasNão tem, avalia todasAvalia por número, para na primeira que bate
Uso no dia a diaÉ onde você trabalha 99% do tempoFica no padrão (libera tudo), mexe só em caso específico

💡 Regra de bolso: comece e resolva tudo no security group. Só vá para a NACL quando precisar bloquear algo no nível da subnet inteira, tipo barrar um range de IP de uma vez.


Parte 7: Como as peças se encaixam​

Um ambiente simples, montado na ordem:

  1. Cria a VPC com 10.0.0.0/16.
  2. Cria duas subnets públicas (10.0.1.0/24 e 10.0.2.0/24, em AZs diferentes) e duas privadas (10.0.11.0/24 e 10.0.12.0/24).
  3. Cria o internet gateway e anexa na VPC.
  4. Na route table das subnets públicas, adiciona 0.0.0.0/0 para o IGW.
  5. Cria o NAT gateway numa subnet pública, com um elastic IP.
  6. Na route table das subnets privadas, adiciona 0.0.0.0/0 para o NAT.
  7. Load balancer e bastion vão nas subnets públicas. Aplicação e banco vão nas privadas.
  8. Security groups amarram quem fala com quem: o SG do banco só aceita a porta do banco vindo do SG da aplicação.

Resultado: a aplicação e o banco não têm cara para a internet, mas conseguem sair pelo NAT quando precisam. O que o mundo enxerga é só o load balancer.


Resumo dos conceitos deste manual​

ComponentePara que serve
VPCA sua rede privada isolada dentro de uma região, definida por um CIDR
SubnetUm pedaço da VPC, preso a uma AZ, público ou privado conforme a rota
Route tableDecide para onde vai o tráfego que sai de cada subnet
Internet GatewayA porta da VPC para a internet, entrada e saída
NAT GatewayDeixa a subnet privada sair para a internet sem aceitar conexão de fora
Security GroupFirewall stateful por recurso, só regras de allow
Network ACLFirewall stateless na borda da subnet, allow e deny, fica no padrão quase sempre