Um IP público parece grátis porque não tem CPU nem disco. Não é. Desde 1º de fevereiro de 2024, a AWS cobra USD 0,005 por hora por cada endereço IPv4 público, esteja ele associado a um recurso ou não. São USD 3,65 por mês por endereço (0,005 × 730 horas). Um só não muda a fatura; quarenta esquecidos ao longo de três anos e várias contas, sim: USD 146 por mês que não compram nada.
Quanto cada nuvem cobra por um IP público
- AWS: USD 0,005 por hora por cada IPv4 público, incluindo os Elastic IPs não associados e os IPs públicos que a AWS atribui a instâncias, balanceadores e NAT gateways. A regra vale desde 1º de fevereiro de 2024 e consta no anúncio oficial da AWS sobre a cobrança de IPv4 público.
- GCP: um IP externo estático reservado que não está atribuído a nada custa USD 0,01 por hora; o mesmo endereço em uso por uma VM padrão custa USD 0,005 por hora, em regiões dos Estados Unidos segundo a página de preços de rede do Google Cloud. Sem uso custa o dobro: USD 7,30 por mês contra USD 3,65.
- Azure: o IP público Standard é cobrado por hora enquanto existir, associado ou não. Um IP que ficou pendurado em uma NIC sem VM é cobrado igual a um em uso.
A diferença em relação aos outros recursos esquecidos é que um IP não aparece em nenhum painel de desempenho: não tem métricas, não dispara alertas e não ocupa espaço. Só aparece na fatura, como uma linha pequena que se repete todo mês.
Por que sobram IPs órfãos
Quase sempre por uma exclusão incompleta. Excluir uma VM na mão pelo console remove a VM, mas não necessariamente o que estava em volta:
- Na AWS, um Elastic IP sobrevive à instância: ao encerrá-la, o endereço continua alocado na sua conta, sem associação, sendo cobrado.
- No Azure, excluir a VM pode deixar a NIC e o IP público para trás, a menos que a opção de excluí-los junto com a VM tenha sido marcada. O IP fica associado a uma NIC que não serve a ninguém, e não pode ser liberado até ser desassociado.
- No GCP, um endereço reservado como estático volta ao status RESERVED quando a VM que o usava é excluída.
A outra origem frequente são os testes: alguém reserva um IP para um ambiente temporário, o ambiente é excluído e o IP não.
Como encontrá-los, nuvem por nuvem
Permissões somente leitura bastam: é o mínimo privilégio na prática, porque procurar não exige poder apagar. Na AWS, os Elastic IPs sem associação (o comando é por região):
aws ec2 describe-addresses \ --query "Addresses[?AssociationId==null].[PublicIp,AllocationId]" \ --output table Há um caso que esse filtro não mostra: um Elastic IP associado a uma interface de rede (ENI) que ficou solta, sem instância. Ele aparece como associado e não serve a ninguém. Para vê-lo, liste as ENIs no status available com aws ec2 describe-network-interfaces --filters Name=status,Values=available.
No GCP, os endereços externos reservados que ninguém usa:
gcloud compute addresses list \ --filter="status=RESERVED AND addressType=EXTERNAL" \ --format="table(name,address,region,status)" No Azure, os IPs públicos sem configuração de IP associada, e as NICs sem VM:
az network public-ip list \ --query "[?ipConfiguration==null].{name:name, rg:resourceGroup, ip:ipAddress}" -o table az network nic list \ --query "[?virtualMachine==null && privateEndpoint==null].{name:name, rg:resourceGroup}" -o table O filtro privateEndpoint==null não é enfeite: a NIC de um Private Endpoint também não tem VM, e sem esse filtro uma interface em uso aparece como órfã. Excluí-la corta o acesso privado a um serviço.
Antes de excluir: órfão comprovado ou desconhecido
Uma lista de candidatos não é uma lista de exclusão. Se um comando não conseguiu ler um campo, por permissões ou por uma região que não respondeu, a resposta honesta é "não sei", não "está livre". Liberar um IP em uso é pior do que pagá-lo mais um mês: o endereço não volta, e se estava em um registro DNS ou na allowlist de um cliente, a queda é imediata.
Um IP sem uso custa USD 3,65 por mês na AWS. Um IP liberado por engano pode custar um incidente.
Como o Control Cloud resolve isso
O Control Cloud lê o inventário das suas nuvens com credenciais somente leitura e marca os IPs órfãos comprovados na página de cada provedor e no mapa, com um filtro que deixa só esses: um Elastic IP sem associação ou associado a uma interface de rede (ENI) sem instância, um IP estático do GCP que ninguém usa, um IP público do Azure retido por uma NIC sem VM. No GCP, se a lista de usuários do endereço não chegou, o IP fica como desconhecido: sem marca e fora da contagem.
Ele não põe preço neles: a página de custos mostra só o gasto que a API de faturamento do provedor devolve (hoje AWS, Azure e OCI), por serviço, sem estimativas a partir do inventário. O valor de cada IP sai das tarifas acima e da sua fatura. Para estimar o que dá para cortar em non-prod desligando VMs, a calculadora de economia faz a conta, e em desligar dev fora do horário está o detalhe do que cai e do que não cai.


