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/16dá 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.xda 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:
| Subnet | O que vai dentro | Acesso à internet |
|---|---|---|
| Pública | Load balancer, bastion host, NAT gateway | Entra e sai direto |
| Privada | Instâncias de aplicação, banco de dados | Só 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:
| Destino | Alvo |
|---|---|
10.0.0.0/16 | local |
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/0apontando para o internet gateway. - Para a subnet privada conseguir sair (fazer
apt update, chamar uma API), você adiciona0.0.0.0/0apontando para o NAT gateway.
💡
0.0.0.0/0significa "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:
- O IGW anexado na VPC.
- Uma rota
0.0.0.0/0para o IGW na tabela de rotas da subnet. - 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 é.
curlde 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/0aponta 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 Group | Network ACL (NACL) | |
|---|---|---|
| Onde age | Na instância (na placa de rede virtual) | Na borda da subnet |
| Protege | Um recurso | Tudo que está na subnet |
| Tipo de regra | Só allow | Allow e deny |
| Estado | Stateful (a volta passa sozinha) | Stateless (precisa liberar ida e volta) |
| Ordem das regras | Não tem, avalia todas | Avalia por número, para na primeira que bate |
| Uso no dia a dia | É onde você trabalha 99% do tempo | Fica 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:
- Cria a VPC com
10.0.0.0/16. - Cria duas subnets públicas (
10.0.1.0/24e10.0.2.0/24, em AZs diferentes) e duas privadas (10.0.11.0/24e10.0.12.0/24). - Cria o internet gateway e anexa na VPC.
- Na route table das subnets públicas, adiciona
0.0.0.0/0para o IGW. - Cria o NAT gateway numa subnet pública, com um elastic IP.
- Na route table das subnets privadas, adiciona
0.0.0.0/0para o NAT. - Load balancer e bastion vão nas subnets públicas. Aplicação e banco vão nas privadas.
- 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
| Componente | Para que serve |
|---|---|
| VPC | A sua rede privada isolada dentro de uma região, definida por um CIDR |
| Subnet | Um pedaço da VPC, preso a uma AZ, público ou privado conforme a rota |
| Route table | Decide para onde vai o tráfego que sai de cada subnet |
| Internet Gateway | A porta da VPC para a internet, entrada e saída |
| NAT Gateway | Deixa a subnet privada sair para a internet sem aceitar conexão de fora |
| Security Group | Firewall stateful por recurso, só regras de allow |
| Network ACL | Firewall stateless na borda da subnet, allow e deny, fica no padrão quase sempre |