AWS Admin

Guia Completo de NAT Gateway, VPC Peering e Transit Gateway na Prática Já leu

NAT Gateway: Permitindo Acesso à Internet de Forma Segura O NAT Gateway é um serviço gerenciado da AWS que permite que instâncias em subnets privadas acessem a internet sem expor seus IPs privados. Diferente do NAT Instance (uma EC2 configurada manualmente), o NAT Gateway é altamente disponível, escalável automaticamente e gerenciado pela AWS. Você cria um NAT Gateway em uma subnet pública, aloca um Elastic IP e configura as tabelas de rota das subnets privadas para encaminhar tráfego 0.0.0.0/0 através dele. Um ponto crítico: cada NAT Gateway custa aproximadamente $0,045/hora, portanto dimensionar corretamente é essencial. Se você precisa de alta disponibilidade, crie um NAT Gateway em cada zona de disponibilidade. Abaixo, veja como configurar via Terraform — uma ferramenta Infrastructure as Code que facilita automação e reprodutibilidade: Após aplicar essa configuração, qualquer instância EC2 na subnet privada poderá fazer requisições HTTP/HTTPS para a internet, recebendo respostas através do NAT Gateway. Monitorar o tráfego com CloudWatch é recomendado para evitar surpresas

NAT Gateway: Permitindo Acesso à Internet de Forma Segura

O NAT Gateway é um serviço gerenciado da AWS que permite que instâncias em subnets privadas acessem a internet sem expor seus IPs privados. Diferente do NAT Instance (uma EC2 configurada manualmente), o NAT Gateway é altamente disponível, escalável automaticamente e gerenciado pela AWS. Você cria um NAT Gateway em uma subnet pública, aloca um Elastic IP e configura as tabelas de rota das subnets privadas para encaminhar tráfego 0.0.0.0/0 através dele.

Um ponto crítico: cada NAT Gateway custa aproximadamente $0,045/hora, portanto dimensionar corretamente é essencial. Se você precisa de alta disponibilidade, crie um NAT Gateway em cada zona de disponibilidade. Abaixo, veja como configurar via Terraform — uma ferramenta Infrastructure as Code que facilita automação e reprodutibilidade:

# Criar Elastic IP para o NAT Gateway
resource "aws_eip" "nat_eip" {
  domain = "vpc"
  tags = {
    Name = "nat-eip"
  }
  depends_on = [aws_internet_gateway.igw]
}

# Criar NAT Gateway em subnet pública
resource "aws_nat_gateway" "nat_gw" {
  allocation_id = aws_eip.nat_eip.id
  subnet_id     = aws_subnet.public_subnet.id
  tags = {
    Name = "nat-gateway"
  }
  depends_on = [aws_internet_gateway.igw]
}

# Configurar rota na subnet privada
resource "aws_route_table" "private_rt" {
  vpc_id = aws_vpc.main.id
  route {
    destination_cidr_block = "0.0.0.0/0"
    nat_gateway_id         = aws_nat_gateway.nat_gw.id
  }
}

resource "aws_route_table_association" "private_assoc" {
  subnet_id      = aws_subnet.private_subnet.id
  route_table_id = aws_route_table.private_rt.id
}

Após aplicar essa configuração, qualquer instância EC2 na subnet privada poderá fazer requisições HTTP/HTTPS para a internet, recebendo respostas através do NAT Gateway. Monitorar o tráfego com CloudWatch é recomendado para evitar surpresas na fatura.

VPC Peering: Conectando VPCs Diretamente

VPC Peering estabelece uma conexão peer-to-peer entre duas VPCs, permitindo que se comuniquem como se estivessem na mesma rede. Esse tipo de conexão é privada, não passa pela internet pública e oferece baixa latência. O desafio principal é evitar conflito de CIDRs — as duas VPCs devem ter ranges de IP não sobreposto. Além disso, peering é não-transitivo: se VPC-A faz peer com VPC-B, e VPC-B com VPC-C, A não consegue falar com C diretamente.

Abaixo, um exemplo prático criando peering entre duas VPCs usando Terraform:

# Requester side (VPC A)
resource "aws_vpc_peering_connection" "peering_a_to_b" {
  vpc_id      = aws_vpc.vpc_a.id
  peer_vpc_id = aws_vpc.vpc_b.id
  tags = {
    Name = "vpc-a-to-b"
  }
}

# Accepter side (VPC B) — aceitar a conexão
resource "aws_vpc_peering_connection_accepter" "peering_accept" {
  vpc_peering_connection_id = aws_vpc_peering_connection.peering_a_to_b.id
  auto_accept              = true
}

# Adicionar rota em VPC A para alcançar VPC B
resource "aws_route" "route_to_vpc_b" {
  route_table_id            = aws_route_table.vpc_a_rt.id
  destination_cidr_block    = "10.1.0.0/16"  # CIDR do VPC B
  vpc_peering_connection_id = aws_vpc_peering_connection.peering_a_to_b.id
}

# Adicionar rota em VPC B para alcançar VPC A
resource "aws_route" "route_to_vpc_a" {
  route_table_id            = aws_route_table.vpc_b_rt.id
  destination_cidr_block    = "10.0.0.0/16"  # CIDR do VPC A
  vpc_peering_connection_id = aws_vpc_peering_connection.peering_a_to_b.id
}

Lembre-se: após criar as rotas, atualize os Security Groups de ambas as VPCs permitindo tráfego entre os ranges. Peering é ideal para conectar 2-3 VPCs; acima disso, considere Transit Gateway.

Transit Gateway: Arquitetura Hub-and-Spoke em Escala

Transit Gateway (TGW) é uma solução centralizada para conectar múltiplas VPCs, redes on-premises e AWS Direct Connect. Ele opera no modelo hub-and-spoke, onde o TGW é o hub central e as VPCs e redes corporativas são os spokes. Isso resolve o problema de transitividade do VPC Peering: qualquer spoke consegue falar com qualquer outro spoke através do hub.

O TGW simplifica operações: em vez de gerenciar N×(N-1)/2 conexões peering (complexidade exponencial), você gerencia apenas N conexões ao TGW. Transit Gateway também suporta attachments para Direct Connect, VPN e AWS PrivateLink, tornando-o essencial em arquiteturas multi-cloud e híbridas.

# Criar Transit Gateway
resource "aws_ec2_transit_gateway" "tgw" {
  description            = "Central Hub"
  default_route_table_association = "enable"
  default_route_table_propagation = "enable"
  tags = {
    Name = "main-tgw"
  }
}

# Anexar VPC A ao Transit Gateway
resource "aws_ec2_transit_gateway_vpc_attachment" "vpc_a_attachment" {
  transit_gateway_id = aws_ec2_transit_gateway.tgw.id
  vpc_id             = aws_vpc.vpc_a.id
  subnet_ids         = [aws_subnet.vpc_a_subnet.id]
  tags = {
    Name = "vpc-a-attachment"
  }
}

# Anexar VPC B ao Transit Gateway
resource "aws_ec2_transit_gateway_vpc_attachment" "vpc_b_attachment" {
  transit_gateway_id = aws_ec2_transit_gateway.tgw.id
  vpc_id             = aws_vpc.vpc_b.id
  subnet_ids         = [aws_subnet.vpc_b_subnet.id]
  tags = {
    Name = "vpc-b-attachment"
  }
}

# Configurar rota na VPC A para tráfego via TGW
resource "aws_route" "vpc_a_to_tgw" {
  route_table_id         = aws_route_table.vpc_a_rt.id
  destination_cidr_block = "10.1.0.0/16"  # Destino em VPC B
  transit_gateway_id     = aws_ec2_transit_gateway.tgw.id
}

Transit Gateway suporta route tables internas para criar segmentação entre spokes. Por exemplo, você pode permitir que desenvolvimento fale com produção, mas bloquear outros fluxos. Isso oferece segurança e compliance em grandes organizações.

Quando Usar Cada Solução

NAT Gateway é obrigatório quando instâncias privadas precisam iniciar conexões outbound para a internet. Use quando suas cargas trabalham com APIs públicas, atualizações de software ou logs para S3.

VPC Peering é suficiente para conectar 2-3 VPCs com requisitos simples de comunicação. Exemplo: VPC de produção falando com VPC de data analytics, sem necessidade de transitividade.

Transit Gateway é mandatório em arquiteturas com 4+ VPCs, integração on-premises, ou múltiplas contas AWS. Oferece controle centralizado, escalabilidade e segmentação avançada.

Conclusão

Os três serviços — NAT Gateway, VPC Peering e Transit Gateway — resolvem problemas complementares na AWS. NAT Gateway habilita acesso à internet de forma segura. VPC Peering conecta VPCs diretamente com baixa complexidade e latência mínima. Transit Gateway escala para arquiteturas complexas com múltiplas VPCs, redes híbridas e segmentação avançada. Dominar esses três conceitos é fundamental para construir infraestruturas robustas, seguras e econômicas na AWS.

Referências


Artigos relacionados