2013-07-06 2 views
1

Maxmind fournir un csv téléchargeable ipv6 gratuit. Ils fournissent des blocs de plage IP, mais est-ce que quelqu'un sait comment je peux ipones ipv6 quelqu'un et faire une vérification dans les blocs qu'ils fournissent?Maxmind ipv6 - Comment prendre un IP IPv6 et le convertir en un bloc qu'ils fournissent?

Voici un exemple d'entrée csv. Je crois que les en-têtes sont les suivantes:

ip, ip final, start ip block, fin bloc ip, ...

"2001: 200 ::", « 2001: 200: ffff: ffff: ffff: ffff: ffff: ffff », "42540528726795050063891204319802818560", "42540528806023212578155541913346768895", "JP", "Japon"

+0

Je ne suis pas votre question: qu'est-ce que "faire une vérification dans les blocs qu'ils fournissent". Voulez-vous juste savoir si une adresse IP tombe dans l'un des blocs? Si c'est le cas, eh bien, vous avez l'adresse IP de début et l'adresse IP de fin, donc il est trivial de tester si une certaine adresse IP est entre ces limites! – Celada

+0

Pour la maxmind ipv4 db, je peux utiliser un mysetl inet_aton qui convertit l'ip en format numérique. Je peux alors utiliser cette valeur pour voir si elle se situe dans une plage particulière. Je veux connaître l'équivalent pour l'ipv6 ... – user984314

+0

Si vous parlez de MySQL, alors il n'y a pas d'équivalent, car MySQL n'a pas un type entier assez grand pour tenir une adresse IPv6 (son plus grand type entier est 64 bits) . Donc, vous devez rouler le vôtre. Vous pouvez stocker l'adresse IPv6 sous forme de texte ou de deux entiers 64 bits (partie basse et partie haute). – Celada

Répondre

0

Depuis que vous utilisez MySQL, vous voudrez peut-être importer les adresses IPv6 dans les colonnes binaires (16). Il devrait faire la bonne chose pour les comparaisons, et MySQL 5.6 fournit une fonction INET6_ATON qui convertit la notation de chaîne en binaire.

+0

J'ai vu le inet_aton6, mais il ramène un résultat alphanumérique. Alors, comment pourrais-je utiliser cela à des fins de comparaison? Je comprends que l'inet_aton fonctionne parfaitement pour ipv4 car il retourne un nombre entier. Juste confus comment je peux comparer un résultat alphanumérique? – user984314

+0

INET6_ATON renvoie une chaîne binaire qui peut être convertie en hexadécimal, ce que je suppose être ce à quoi vous faites référence. Vous devriez être capable de faire une comparaison sur la chaîne binaire. –

+0

Comment faire cela en PHP et MongoDB? –