Maxmind GeoIP Location

Maxmind biedt een dienst aan waarbij GeoIP locatie gedaan kan worden op basis van IP adressen; je geeft de dienst een IP adres en er komt een land, stad, ISP uitrollen.

Wij hebben een abonnement op de Maxmind country1) database (zowel legacy als versie 2) en op die manier kunt u deze gebruiken in uw web applicaties.

Maxmind biedt op dit moment 2 smaken databases aan, de zogeheten “Legacy” databases en de nieuwe, GeoIP2 databases. Beiden kunnen vanuit php benaderd worden. Omdat kopieën van de databases lokaal bij ons op de servers staan kunnen er heel snel en heel veel requests op gedaan worden, zonder dat daar verdere kosten aan verbonden zijn.

Legacy databases

Hiervoor moet de “geoip.so” extensie in php geladen zijn. In onze command line (cli) php varianten is dat standaard het geval. Voor de webservers kunt u een verzoek bij de servicedesk doen om de extensie te activeren.

Het benaderen vanuit php is heel eenvoudig:

<?php
$ip = '145.58.29.80';
$countrycode = geoip_country_code_by_name($ip);
printf("%s\n", $countrycode);
?>

Zie voor meer informatie de documentatie van de geoip php module. Naast de geoip_country_code_by_name functie zijn er nog een stel andere functies die gebruikt kunnen worden, maar voor een aantal geldt dat deze de gratis varianten (de zgn “Lite” databases) van Maxmind gebruiken. Deze zijn minder precies en Maxmind staat op het punt om deze te discontinueren, dus wij adviseren om snel over te gaan van de legacy naar de GeoIP2 varianten.

GeoIP2 databases

Hiervoor moet de “maxminddb.so” extensie in php geladen zijn. In onze command line (cli) php varianten is dat standaard het geval. Voor de webservers kunt u een verzoek bij de servicedesk doen om de extensie te activeren.

Het gebruik van de GeoIP2 databases is wat ingewikkelder, dit staat uitgelegd in de GeoIP2 documentatie In deze API is het helaas nodig om zelf de locatie van de database files op te geven. Deze staan bij ons in /etc/GeoIP. De belangrijkste database file is /etc/GeoIP/GeoIP2-Country.mmdb.

Voor deze api is het dus van belang om eerst zelf de dependencies te installeren:

curl -sS https://getcomposer.org/installer | php
php composer.phar require geoip2/geoip2:~2.0

Daarna kan benaderen vanuit php er zo uit zien:

<?php
require 'vendor/autoload.php';
 
use MaxMind\Db\Reader;
$reader = new Reader('/etc/GeoIP/GeoIP2-Country.mmdb');
 
$ipAddress = '2a02:458:101:28:100:29:0:50';
print_r($reader->get($ipAddress));
$reader->close();
?>

Wij bieden de volgende databases aan:

database omschrijving
GeoIP2-Country.mmdb De reguliere paid-for, country database. Gebruik deze waar mogelijk
GeoLite2-ASN.mmdb Autonomous System Number, kan gebruikt worden om te bepalen vanuit welk netwerk een IP adres komt
GeoLite2-City.mmdb Gratis variant vam de City database

1)
and western?
  • maxmind-geoip.txt
  • Last modified: 2019/05/28 10:47
  • (external edit)