Pergunta

Eu estou trabalhando em uma biblioteca de geolocalização IP que usa os três primeiros octetos de um endereço IPv4 para determinar o país de um usuário, cidade, lat, lon, etc. funciona como um encanto.

Mas não lidar com endereços IPv6, e eu gostaria que ele a fazê-lo.

Existe alguma maneira de transformar um endereço IPv6 para obter o equivalente dos três primeiros octetos de um endereço IPv4, ou são em um esquema de numeração totalmente diferente, exigindo um mapeamento ipgeo completamente diferente?

Foi útil?

Solução

O típico IPv6 alocação é um / 32 (quatro octetos) para um Internet provedor (que pode ser uma empresa multinacional), então / 48 (seis octetos) para um site final (normalmente uma organização cliente). Você pode obter uma ponto de partida na lista IANA de blocos delegadas .

Este é apenas para inscrições encontradas nas bases de dados do RIR. Atribuição de extremidade os usuários normalmente não é registrado assim, meu endereço atual, 2a01:e35:8bd9:8bb0:92b:8628:5ca5:5f2b vai dizer só que o meu sede do provedor estão em Paris (uma vez que é uma empresa nacional, os clientes podem estar em qualquer lugar na França).

Outra exceção é o PI assignements (Provider-Independentes), que são tipicamente / 48.

Além disso, existe muitos bancos de dados de geolocalização para IPv4 e, para minha conhecimento, nenhum para IPv6. Você vai ter que fazer tudo sozinho.

Para resumo:. Mais trabalho do que você aparentemente acreditam

Outras dicas

correção amigável ao comentário de Noah (03 de junho em 07:57) -

O Per MaxMind departamento de atendimento ao cliente (grifo meu): "IPv6 não é suportada atualmente Em algum momento no futuro, fazemos plano para implementá-lo, mas não temos uma data neste momento."

IPv6 usa um esquema de endereçamento completamente diferente em comparação com o IPv4. Não há nenhuma maneira você pode mapear endereços IPv6 para endereços IPv4, com uma exceção. Se você ver os endereços IPv6 que começam com 2002: então o endereço é um endereço 6to4. Você não vai ver um monte de aqueles em uso, provavelmente, e eles estão sendo removidos, mas os são mappable para IPv4.

Cada usuário de um endereço IPv4 público pode usar um / 48 (65536 sub-redes) de espaço IPv6. Esses endereços sempre começam com 2002: e os próximos dois números hexadecimais são o endereço IPv4. Então, 2002: 5389: 1164: corresponde ao endereço IPv4 do meu próprio servidor (83.137.17.100):

0x53 = 83
0x89 = 137
0x11 = 17
0x64 = 100

Mas todos os endereços 'normais' IPv6 são completamente alheios a quaisquer endereços IPv4. Pelo menos de uma forma padrão. Um ISP poderia definir uma relação entre endereços IPv4 e IPv6 quando lançando IPv6 aos seus clientes. Mas você não vai saber sobre essa relação por isso vai ser inútil para você ...

O maxmind.com serviços de geolocalização e bibliotecas lidar com IPv6 OK. Talvez o seu material é uma opção para você. (Eu não tenho nenhuma afiliação com eles.)

Uma vez que não parece ser uma maneira fácil de fazer isso ainda, talvez, temos a oportunidade de fazer algo que não foi feito no caso do IPv4 (*)

Nós poderíamos parar e nos perguntar se esta é uma boa idéia.


(*) ou se isso foi feito, não funcionou!

Se você ler um número de IPv6, o endereço eo mecanismo de transição no wiki, você vai encontrar alguns endereços IPv6 padrões que podem inferir um IPv4 (SIIT, ipv4-mapeados ipv6, NAT64, o 2002: coisa * escrito acima, etc .). Um deles para começar: http://en.wikipedia.org/wiki/IPv6_transition_mechanisms

Eu não contaria com estes esquemas de ser suficiente popular para fazer os relatórios geo habituais, proteção contra fraudes, ou detecção de incidentes, mas eu com certeza gostaria de dar prioridade a um ipv4 geo pesquisa para tais inferidas IPv4 endereços mais de uma ipv6 geo lookup ( assumindo o db IPv4 é mais completa).

A minha preocupação com a informação geo ipv6 é o incrivelmente grande número de sub-redes. Bancos de dados terá maiores (mais faixas de IP), que é esperado, mas para a mesma quantidade de informações geo terminal, os bancos de dados serão mais escassos ea árvore mais profunda também é mais para iterate (para a implementação que usos binário ou radix árvores), que implica alguma custo de desempenho. bases de dados geo usando tabelas SQL com intervalos de IP irá provavelmente também sofrem, já que não temos grandes bigint de 128bits, que eu saiba, para usar aritmética.

Outra preocupação é os celulares: ipv6 é projetado para facilitar roaming, se não me engano. Você poderia mudar torres de celular e manter o seu IP. talvez até mesmo durante a mudança de cidade, região ou país. De certa forma eu duvido que, desde que uma forte afinidade endereço era o propósito de um endereço MAC. endereços IP existem precisamente para fins de encaminhamento, mas eu acho que é justo mencionar que eles poderiam tornar-se o suficiente invariante para paralisar a precisão da localização geo, obviamente.

Eu sinto a colaboração de agentes de usuário / navegadores na camada de aplicação (alguns cabeçalho localização geo por exemplo) é provavelmente o futuro, mesmo se isso pode ser falsificado por pessoas maliciosas.

Há um protocolo chamado Referral Whois que permite aos provedores de publicar geolocalização IP informações e outros para recuperá-lo.

Por exemplo, o meu atual IP 2001: 470: b4ea: Borracho: d57: 15c8: 97b: 60c9 pertence a Hurricane Electric nos EUA. O servidor real onde o IPv4-IPv6 uso túnel que termina na Suíça, mas estou na Áustria. Ele publica tudo isso, por isso, se você digitar o IP em uma ferramenta de apoio RWhois como este , você vai encontrar os dados de contato de HE e somwhere perto do fundo você vê

contacto: Nome: Cliente Privado - Hurricane Electric

contacto: Rua-Endereço: Private Residence

contato: País-Code: AT

que é o meu local.

Não há muitos provedores de fazer publicar isso, e não muitas ferramentas de geolocalização apoiá-lo, mas pelo menos ela existe.

A maioria dos provedores de geolocalização IP (daqueles que suportam IPv6, alguns ainda não) colocar esse IP para a Suíça, alguns até mesmo nos EUA.

geolocalização é ruim, mmkay? a internet é a localização agnóstica, e eu tenho não de geolocalização visto usado para algo não trivial não-mal. isto é, as únicas boas aplicações que eu vi (Seleção de idioma) foram trivial (poderia facilmente ser uma lista suspensa). existem muitas aplicações mal (este vídeo não está disponível no seu país, tendo como alvo a minha localização física para anúncios e rastreamento) não podemos desencorajar algo assim de existir, mas devemos empurrar para torná-lo ilegal ou, pelo menos socialmente inaceitável para uso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top