- Latência pode ser usada em uma ferramenta de CLI para estimar a localização de um endereço IP no nível de país, estado ou cidade
- Usando mais de 3.000 probes da rede Globalping, a ferramenta faz medições de ping e traceroute para cada IP
- Ela compara a latência em etapas de continente → país → estado → cidade e considera como localização real a região com o menor valor
- Nos testes, mostrou precisão consistente com os resultados do ipinfo em casos como Polônia, Flórida e Miami
- Como ferramenta de CLI open source, qualquer pessoa pode executá-la, demonstrando a utilidade prática da validação de localização de IP baseada em latência
Visão geral da estimativa de localização de IP baseada em latência
- Foi criada uma ferramenta de CLI capaz de interpretar endereços IP no nível de país, estado dos EUA e cidade
- O trabalho se baseia em casos demonstrados pelo ipinfo em que provedores de VPN registravam dados de localização falsos
- O ipinfo constrói uma grande rede de probes para rastrear e testar com ping todos os IPs, validando sua localização física real
- Essa abordagem elimina erros de dados públicos e permite uma determinação de localização mais confiável com base em latência e dados de hop
Uso da rede Globalping
- Globalping é um projeto open source baseado em comunidade que permite auto-hospedar probes em contêineres
- Atualmente há mais de 3.000 probes distribuídos pelo mundo
- Os usuários podem executar testes de rede como ping e traceroute por meio dessa rede
- A ferramenta de CLI automatiza isso com a biblioteca globalping-ts
- Faz testes de ping no IP informado a partir de vários continentes
- Seleciona o continente com a menor latência
- Depois realiza medições mais detalhadas com vários probes dentro desse continente
Estrutura por etapas de medição
- Etapa 1 (detecção de continente): teste de ping com 5 probes por continente
- Exemplo de resultado: Europa 32.39ms, América do Norte 137.18ms → Europa selecionada
- Etapa 2 (detecção de país): medição com 50 probes dentro do continente escolhido
- Resultado: Polônia 7.29ms, Alemanha 13.42ms, Lituânia 17.65ms → classificado como Polônia
- Etapa 3 (detecção de estado nos EUA): teste com 50 probes dentro dos Estados Unidos
- O IP “Bahamas” da NordVPN foi classificado na prática como Flórida (0.45ms)
- Etapa 4 (detecção de cidade): medição com 36 probes dentro do estado
- Resultado: Miami (0.00ms), seguida por West Palm Beach e Tampa
Precisão e limitações
- O “magic field” do Globalping seleciona probes aleatoriamente no nível de continente, então alguns países podem ficar de fora
- Isso pode causar classificações incorretas para países vizinhos
- Para melhorar a precisão, é preciso especificar os probes diretamente por país e estado e ajustar a quantidade de probes
- Exemplo: na América do Norte, a recomendação é usar 200 probes nos EUA, 20 no Canadá e 10 no México
- A versão atual usa o número mínimo de probes para permitir execução também por usuários não autenticados
- Com autenticação, são possíveis 500 testes por hora, e créditos adicionais podem ser obtidos por hospedar probes ou apoiar no GitHub
Execução e uso da ferramenta open source
- Comando:
geolocate $IP
- A opção
–limit permite ajustar a quantidade de probes em cada etapa
- A documentação no GitHub traz o modo de uso completo
- Sugestões de melhoria via Pull Request são bem-vindas
- É possível solicitar créditos gratuitos e participar hospedando probes
Conclusão
- A estimativa de localização de IP baseada em latência é um método preciso e prático quando há pontos de observação suficientes
- Com a rede Globalping e a ferramenta de CLI open source, qualquer pessoa pode verificar facilmente a localização real de um IP
- O método tem potencial de uso em verificação de fraude de localização em VPN, análise de roteamento de rede e depuração de desempenho
1 comentários
Comentários do Hacker News
Está num nível de demonstração simples, então não é suficiente para uso real em produção
Para usar direito, seriam necessárias pelo menos 500 probes em cada etapa
Como a ideia era não ultrapassar o limite para usuários anônimos, a otimização foi evitada de propósito
No começo, faria 3 medições em vários continentes, descartaria a probe mais lenta e adicionaria uma nova probe perto das mais rápidas, repetindo esse processo
Assim, em vez de dividir em 5 etapas, talvez fosse possível “rastrear” a localização real em tempo real
A ideia é tratar a latência como um campo potencial escalar e usar seu gradiente
As mensagens de commit com uma palavra só foram engraçadas, mas até deram uma sensação mais humana
Por exemplo, dá para fazer truques ainda mais sofisticados com uma ferramenta como fakeroute
Quase não teria utilidade prática, mas é uma ideia divertida
Como no caso em que o The Pirate Bay fingiu ter se mudado para a Coreia do Norte, um AS também poderia adicionar ASes falsos ao caminho BGP para parecer mais convincente
Isso talvez possa virar um jogo de gato e rato com VPNs
Referências relacionadas: discussão no Reddit, caso no HN
Mesmo em links de 1000/30Mbps, a latência pode chegar a 2500ms
Vídeo da apresentação
As limitações da geolocalização baseada em ping são as seguintes:
O IP já costuma ter informação de localização em bancos de dados, a assimetria de roteamento quebra o modelo de distância, Anycast/CDN faz com que um único IP exista em várias regiões, e ICMP pode ser bloqueado ou ter baixa prioridade
Em vez de ping, eu usei um modelo de latência HTTP(S) + ML(SVR) treinado com 39 mil dados
No caso de servidores atrás do CloudFront, o erro ficou em cerca de 600 km
Mais importante do que a precisão é detectar sandbox, malware com geofence e fornecer um sinal auxiliar de localização quando o banco de IP falha
Anos atrás, conversando com um amigo na Holanda, eu já consegui acessar conteúdo da NL com latência menor a partir do Reino Unido
Provavelmente por diferença na qualidade do peering
Estamos tocando um projeto de compartilhamento de dados de roteamento e peering em parceria com IXPs e grandes instituições da internet
Em alguns países, há peering direto com IXP de outro continente, e a diferença de latência pode equivaler a milhares de km
Há casos reais em que o tráfego entre duas operadoras do mesmo país sai para o exterior antes de voltar
Estamos corrigindo esse fenômeno com algoritmos de geolocalização baseados em medição
No fim, o objetivo é ajudar IXPs, operadoras e entidades de governança da internet a resolver esse tipo de problema
Em VDSL ou DOCSIS, só em 1 km já podem surgir 5–15 ms de atraso
Entre Londres e Amsterdã, é algo em torno de 7 ms
Antigamente, até cidades grandes da Holanda sofriam com falta de fibra óptica
Ou seja, a distância fica inflada em mais de 8 vezes
Um servidor no Reino Unido está mais longe, mas mesmo assim o ping é menor
Uma abordagem baseada em traceroute parece mais realista do que ping
O pesquisador Calvin vai apresentar sobre geolocalização de IP baseada em medição na NANOG96
Link da apresentação
Queria ver mais projetos assim no HN
Isso é simples demais; parece que usar triangulação (triangulation) daria mais precisão
Com probes suficientes e um pouco de sorte, funciona surpreendentemente bem
Claro que existem métodos muito mais inteligentes
Por isso, usar a medição única mais próxima é o mais realista
Para obter dados úteis, são necessários milhares de nós por cidade
O RIPE IPmap já mapeia com precisão a maioria dos roteadores públicos
Como ferramenta de comparação, também recomendo ping.sx
O FQDN do último hop frequentemente inclui código de aeroporto ou código de cidade, o que ajuda bastante