Todos os artigos
74 artigos · atualizado semanalmente Veja nossas Ferramentas
Todos os artigos
Tutoriais

Seu IP não sabe onde você está (e o que isso quebra no seu sistema)

Geolocalização por IP é 99% precisa no país, 50–75% na cidade — e a maioria dos sistemas assume o melhor caso. O que o IP revela de fato, o que o ASN entrega melhor, e por que VPN não resolve WebRTC.

COVER · Tutoriais

Seu IP não sabe onde você está (e o que isso quebra no seu sistema)

Implementei um sistema de geo-bloqueio num SaaS de RH em 2023. A lógica era simples: pegar o IP da requisição, consultar um banco de geolocalização, bloquear se o país estiver fora da lista de permitidos. Funcionou em produção durante semanas sem reclamação. Aí um cliente de Porto Alegre abriu ticket porque não conseguia acessar o sistema. O IP dele retornava São Paulo. Ele estava em Porto Alegre, usando a Claro, que centraliza o pool de endereços em SP.

Isso é CGNAT na prática. E foi quando fui realmente entender o que um IP revela — e o que não.


O que um IP revela de fato

Quando você faz uma requisição para um servidor, ele vê o IP público de saída da sua conexão. Desse IP, é possível extrair:

  • ISP (provedor de internet): quem é a operadora — Claro, Vivo, NET, AWS, Google Cloud — qualquer um tem blocos de IP registrados
  • ASN (Autonomous System Number): o número que identifica a rede autônoma dona do bloco. É o dado mais confiável que um IP entrega — volto nele
  • País: confiabilidade acima de 99% nos principais bancos de geolocalização (MaxMind, IP2Location)
  • Estado/Região: razoável, em torno de 80–90%
  • Cidade: aqui é onde a maioria dos sistemas assume demais

O que não é possível extrair de um IP:

  • Nome ou identidade do usuário
  • Endereço residencial ou comercial
  • Histórico de navegação em outros sites
  • Qualquer dado pessoal

O vínculo entre IP e assinante existe somente nos registros da operadora. No Brasil, o Marco Civil da Internet (Lei 12.965/2014) limita o acesso a esses dados a ordem judicial. Sem isso, o IP é um identificador de rede — não de pessoa.


A precisão que ninguém fala: país, estado, cidade, rua

Geolocalização por IP não é GPS. É um processo inferencial — os bancos de dados são construídos a partir de registros de roteamento BGP, dados dos RIRs (ARIN, LACNIC, RIPE) e correlações de rede. Nenhum desses dados tem granularidade de endereço.

Na prática:

Nível Precisão típica
País ~99%
Estado / Região 80–90%
Cidade 50–75%
Bairro / CEP não confiável
Endereço exato impossível

O CGNAT explica boa parte da imprecisão na cidade. Com CGNAT (Carrier-Grade NAT), seu dispositivo não recebe um IP público individual — ele compartilha um IP com dezenas ou centenas de outros assinantes da mesma operadora. O pool de saída é gerenciado pelo ISP, que pode ter ponto de presença numa cidade diferente da sua.

Isso não é exceção no Brasil. É o padrão para a maioria dos usuários residenciais.


IP público vs IP privado: o que o servidor realmente enxerga

Quando o seu navegador faz uma requisição, ela sai com o IP público do seu roteador ou gateway de saída — não com o IP do seu dispositivo.

Seu dispositivo (192.168.1.x — IP privado, RFC 1918)
    → Roteador doméstico
        → IP público do ISP (o que o servidor vê)
            → Internet

Se você está numa rede corporativa, a saída pode ser um firewall ou proxy da empresa. O servidor de destino enxerga o IP da empresa, não do seu notebook.

A implicação prática é direta: sistemas que usam IP para identificar dispositivos individuais estão errados por design. IP identifica ponto de saída de rede, não dispositivo, não pessoa. Para analytics e rastreamento de sessão, cookie ou device fingerprint são a ferramenta certa.


VPN esconde o quê? (e o WebRTC que contorna o túnel)

Com VPN ativa, o fluxo muda:

Seu dispositivo
    → Cliente VPN (encripta o tráfego)
        → Servidor VPN (exit node com IP próprio)
            → Internet

O site de destino vê o IP do servidor VPN, não o seu. Até aqui, a proteção funciona.

O problema é o WebRTC.

WebRTC é um conjunto de APIs do navegador para comunicação peer-to-peer — videochamadas, transferência de arquivos em tempo real, streaming sem servidor intermediário. Para funcionar, ele precisa descobrir os endereços IP reais dos dois pares. As chamadas ICE do WebRTC vão direto ao sistema operacional, bypassando a camada de rede onde a VPN atua.

Resultado: mesmo com VPN conectada, um site pode usar WebRTC para descobrir seu IP real via ICE candidates. Isso não é bug — é o comportamento esperado do protocolo para comunicação direta. Mas é um vetor legítimo para detectar usuários com VPN.

Para mitigar: desativar WebRTC no browser (Firefox: media.peerconnection.enabled = false em about:config; Chrome: extensão de política ou flag experimental) ou usar VPN com bloqueio de ICE candidates no nível do cliente.


ASN: o dado mais confiável que um IP entrega

ASN é o identificador da rede autônoma responsável por um bloco de IPs. Todo bloco de endereços na internet está atribuído a um ASN, e esse dado é público — registrado no LACNIC para a América Latina, ARIN para América do Norte, RIPE para Europa.

ASN é útil por três razões:

Identifica datacenter vs residencial. AWS usa AS16509, Google Cloud usa AS15169, Cloudflare usa AS13335. Se uma requisição vem de AS16509, é instância EC2 — não usuário final. Esse dado não muda quando o usuário troca de cidade.

Detecta VPNs e proxies comerciais. NordVPN, ExpressVPN, Mullvad — os exit nodes deles têm ASNs conhecidos e catalogados em bases de dados específicas (MaxMind Proxy, Scamalytics, entre outras).

É mais estável que geolocalização. ASN muda quando o ISP muda — não quando o usuário muda de bairro. Para detecção de fraude, rate limiting inteligente e análise de tráfego de origem, ASN entrega sinal muito mais consistente que cidade.


O que fazer na prática se você implementa geo-IP

Use país, desconfie de cidade. Para geo-bloqueio regulatório — GDPR, licenciamento por região, conformidade com sanções — país é suficiente e tem precisão real. Para qualquer lógica que dependa de cidade, assuma que você vai ter falsos positivos.

ASN é a variável certa para anomalia de segurança. Bloquear datacenters conhecidos, detectar VPNs comerciais, identificar tráfego de bot — IP de cidade não entrega isso com confiabilidade. ASN entrega.

Nunca use IP como identificador de usuário. IP muda, é compartilhado por CGNAT, e não mapeia 1:1 com pessoa nem com dispositivo. Para rastreamento de sessão, use cookie. Para analytics de dispositivo, use device fingerprint.

Combine sinais para detecção de fraude. IP de datacenter + horário incomum + device fingerprint novo = sinal de alerta. IP sozinho diz pouco. O conjunto diz muito mais.


IP revela rede, não identidade

IP é um dado de rede, não de identidade. Ele diz de onde a conexão saiu — não quem está do outro lado.

Para geo-bloqueio de país, funciona e é confiável. Para localizar alguém numa cidade, é impreciso demais para qualquer sistema que não tolere erros. Para identificar datacenter vs residencial ou detectar VPN, ASN é a variável certa. Para anonimato, VPN resolve o IP de saída mas não resolve WebRTC nem browser fingerprint — são vetores independentes.

O erro mais comum é tratar IP como mais preciso do que é. O segundo é achar que esconder o IP é suficiente para anonimato. Nenhum dos dois.


Nota: o conteúdo editorial acabou aqui. O que vem abaixo é uma indicação de ferramenta relacionada ao tema do post.


Ferramenta relacionada

Para ver seu IP público, ISP, ASN e localização aproximada — e rodar o teste de WebRTC leak para confirmar se o browser está expondo o IP real mesmo com VPN ativa — o IP Address Info faz tudo isso no browser. Inclui também calculadora de subnet/CIDR e conversor IPv4↔IPv6.

RD
Autor
Rafael Duarte
Desenvolvedor backend com passagem por fintech e SaaS B2B — trabalhou em times que escalaram APIs de zero a milhões de requisições. Carrega cicatrizes de produção suficientes para ter opiniões fortes sobre ferramentas, padrões e decisões de arquitetura. Não é acadêmico: leu a RFC do UUID quando precisou escolher entre v4 e v7 para uma tabela de alta escrita.
Ver perfil