Howto GeoIP

geoip est un outil de géolocalisation des adresses IPs.

Installation

Dans Debian, le paquet geoip-bin fournit l’outil geoiplookup, et geoip-database fournit une base de données d’IPs par pays.

# apt install geoip-bin geoip-database

Utilisation simple

$ geoiplookup 85.31.205.43                                                           
GeoIP Country Edition: FR, France

Bases de données

L’entreprise MaxMind est le principal fournisseur de bases de données de géolocalisation d’IP. Elle a définit les format de géolocalisation d’IP les plus utilisés.

Elle a deux formats de base de données : le format legacy DAT et le format GEOIP2.

Ils sont définis ici https://maxmind.github.io/MaxMind-DB/

Format DAT

C’est celui qui est toujours celui fournit par le paquet geoip-database.

# ls /usr/share/GeoIP/
GeoIP.dat  GeoIPv6.dat

Ce format a certains défauts, notamment il faut des fichiers séparés pour IPv4 et IPv6.

On peut indiquer à geoiplookup le fichier de base de données au format DAT en option :

$ geoiplookup -f /usr/share/GeoIP/GeoIP.dat 85.31.205.43                                                           
GeoIP Country Edition: FR, France

Format GEOIP2 (ou MMDB)

Ce dernier n’est pas disponible dans Debian (à ce jour, en Debian 13 Trixie).

IpLocate fournit gratuitement des bases par pays, ville ou ASN au format MMDB ou CSV sur Github, mais elles ne semblent pas reconnues par goaccess (par exemple).

À noter que la version gratuite (Lite) n’est pas précise pour de nombreuses adresses IP de FAI.

Sinon, il est aussi possible d’ouvrir un compte pour les télécharger sur maxmind.com.

Fournisseur de base de données de gélocalisation d’IP

MaxMind

Pour accéder gratuitement aux bases de données de MaxMind il faut créer un compte sur https://www.maxmind.com. On ne peut pas télécharger leur bases de données avec un simple CURL.

Ce n’est pas un fournisseur que l’on recommande.

DBIP (recommandé)

DBIP mais à disposition ses bases de données Lite via un license Creative Commons Attribution 4.0 International License et permet de les télécharger sans avoir besoin de créer de compte ou d’avoir une clée d’API,

https://db-ip.com/db/lite.php

Télécharger les bases de données MMDB

Ces commandes téléchargent dans le dossier /usr/local/share/mmdb/, les dernières bases de donnée DBIP Lite par pays, villes et ASN :

mount -o remount,rw /usr
install --directory --mode 755 /usr/local/share/mmdb/

for db_name in dbip-{country,city,asn}-lite; do
    remote_name="${db_name}-$(date +%Y-%m).mmdb.gz"
    curl --location  "https://download.db-ip.com/free/${remote_name}" | 
        zcat > "/usr/local/share/mmdb/$db_name.mmdb"
done

mount -o remount /usr

Il suffit ensuite de configurer un logiciel pour qu’il utilise une ou plusieurs des bases de données suivantes :

/usr/local/share/mmdb/dbip-asn-lite.mmdb
/usr/local/share/mmdb/dbip-city-lite.mmdb
/usr/local/share/mmdb/dbip-country-lite.mmdb

Par exemple pour GoAccess, c’est documenté ici

IPLocate

IPLocate met à diposition une sous partie de sa base de donné via GitHub https://github.com/iplocate/ip-address-databases Elle est sous license Creative Commons Attribution-ShareAlike 4.0 International License.

Usage par des programmes tiers

GoAccess

GoAccess peut utiliser les bases de données GeoIP pour faire des statistiques géolocalisées.

Voir le HowtoGoAccess.

Matomo

Matomo permet de télécharger des bases de données d’IP directement via son interface web : https://matomo.org/faq/how-to/faq_163/

API

MaxMind propose aussi des APIs utilisables avec un module Apache ou bien en PHP par exemple.