Portal da PoC CGNAT

Pods em 100.64.0.0/10, saída por NAT privado com IP fixo e isolamento lateral — tudo provisionado daqui.

motor ativo
{{ toast.text }}

Nova aplicação

Na trilha EC2 o grupo controla para onde a app pode ir; o IP de saída é o NAT compartilhado {{ config.ec2NatIp }}.

  • {{ e }}

Aplicações {{ apps.length }}

Nenhuma aplicação ainda. Crie um grupo de saída (opcional) e depois a aplicação.

{{ a.name }} {{ a.spec.runtime }} {{ a.spec.isolation === 'strict' ? 'isolada' : 'aberta' }} {{ a.deleting ? 'Removendo' : (a.status?.phase || 'Pendente') }}
Grupo de saída{{ a.spec.egressGroup || '—' }}
IP de saída{{ a.status?.egressIp || '—' }}
Pods (IP CGNAT){{ p.ip || '…' }}

{{ a.status.message }}

Passos ({{ (a.status?.steps || []).length }})
  1. {{ s.name }} {{ s.detail }}

Novo grupo de saída

Um grupo = um IP de saída fixo (NAT privado) e os destinos que o firewall do cliente vai liberar. O portal reserva a faixa CGNAT e o IP, cria subnet, rotas, NAT e Fargate profile.

Destinos permitidos nesta PoC: {{ c }} · portas {{ (config.allowedPorts || []).join(', ') }}

  • {{ e }}

Grupos de saída {{ groups.length }}

Nenhum grupo ainda.

{{ g.name }} {{ g.deleting ? 'Removendo' : (g.status?.phase || 'Pendente') }}
IP de saída (NAT){{ g.status?.natIp || '—' }}
Faixa CGNAT dos pods{{ g.status?.podCidr || '—' }}
Destinos{{ d.cidr }}:{{ d.ports.join(',') }}
Apps{{ g.apps.map(a => a.name).join(', ') || '—' }}

{{ g.status.message }}

Passos ({{ (g.status?.steps || []).length }})
  1. {{ s.name }} {{ s.detail }}

IPs a liberar no firewall

Exportar CSV

É o pedido que vai para o time de rede. Na PoC, Simular aprovação aplica a liberação no "firewall do cliente" (security groups da VPC simulada). O estado é lido ao vivo desses SGs.

Nada a liberar: nenhum grupo pronto ainda.

{{ group }}

IP de origemTipoDestinoPortaStatusApps
{{ r.source }}{{ r.sourceKind }}{{ r.destination }}{{ r.port }} {{ r.status }} {{ r.apps.join(', ') || '—' }}

Saída para a rede corporativa

Cada app chama os "bancos" simulados. O destino responde o IP de origem que enxergou: tem que ser o IP do NAT do grupo, nunca o IP CGNAT do pod.

AppRuntimeGrupoIP do podIP esperado{{ t }}
{{ r.app }}{{ r.runtime }}{{ r.egressGroup }}{{ r.podIp }}{{ r.expectedEgressIp }}

Executado em {{ fmt(egress.at) }}.

Isolamento lateral entre pods

Cada app tenta abrir TCP 8080 nos pods das outras. Esperado: bloqueado para apps isoladas (o ALB continua entrando normalmente).

de ↓ / para →{{ t.name }}
{{ r.from }} {{ r.runtime }} · {{ r.isolation === 'strict' ? 'isolada' : 'aberta' }} {{ t.name === r.from ? '—' : (r.to[t.name] || 'sem pods') }}

Executado em {{ fmt(isolation.at) }}.

Capacidade e limites

O portal recusa criar um grupo novo antes de tocar na AWS se algum limite estiver no máximo.

{{ c.item }}{{ c.used }} / {{ c.limit }}
{{ c.note }}

Configuração

Pool CGNAT{{ config.cgnatPool }}
IPs de NAT a partir de{{ config.natIpBase }}
Zona{{ config.zone }}
NAT da trilha EC2{{ config.ec2NatIp }}