Outils pour utilisateurs

Outils du site


localiser_une_ip

Localiser une IP

Problématique

On souhaite localiser géographiquement une IP (continent, pays, département, ville…).

La solution n'est pas simple pour plusieurs raisons1) :

  • une IP n'est pas structurellement liée à une infrastructure matérielle déployée sur un territoire donné (ce n'est qu'une configuration sujette au changement),
  • les blocs d'IP peuvent changer de main (d'un opérateur à l'autre), notamment les blocs d'IPV4, leur rareté attisant la convoitise,
  • l'infrastructure n'épouse pas les contours des territoires administratifs (frontières de communes, de départements…),
  • l'organisation détentrice d'un bloc d'IP n'est pas obligée de déclarer la localisation géographique des IP de ce bloc.

En conséquence, établir la correspondance entre une IP une localisation géographique est le fruit d'un travail d'analyse de données existantes, d'exploration et de déduction. Il débouche sur la création, par des éditeurs, de bases de données qualifiées, régulièrement mises à jour. Autrement dit, c'est un job !

En tant qu'utilisatrice, on en est réduite à utiliser des bases de données existantes, suivant les modalités proposées par les éditeurs.

GeoIP

GeoIP désigne une gamme de produits et services proposés par l'éditeur MaxMind.

GeoIP démo

Pour une interrogation ponctuelle et limitée, on peut utiliser le service en ligne de démonstration (gratuit).

GeoLite2 : produit gratuit (sous conditions)

GeoLite2 est une version gratuite de bases de données de localisation. On peut les télécharger et les utiliser gratuitement, sous licence.

Les bases GeoLite2 sont qualifiées par l'éditeur de “comparables mais moins précises” que celles utilisées par le service GeoIP2 (payant). Elles ne sont mises à jour que mensuellement. L'assistance technique est assurée par la communauté des utilisatrices sur le site de Questions-Répones Stackoverflow.

Bases de données installées par la distribution

Sous Debian, une version non actualisée de la base “pays” est souvent installée (paquetage geoip-database) car elle est utilisée par certains services. Sous Debian 12, elle est éclatée en 2 bases au format “.dat”, GeoIP.dat et GeoIPv6.dat qui sont enregistrées dans /usr/share/GeoIP.

Moyennant l'installation du paquetage geoip-bin2), on dispose de deux commandes permettant d'interroger ces bases de données :

  • geoiplookup
  • geoiplookup6
Au cas où un doute subsisterait, à la différence de nslookup (qui interroge les DNS), ces commandes n'interrogent pas le service GeoIP, mais la copie locale des bases de données.

À ce jour3), Maxmind ne fournisant plus de base de données au format “.dat”, je ne m'étends pas sur le sujet.

iplocation.net

Pour une utilisation ponctuelle via une interface web, iplocation.net permet non seulement d'obtenir “une” information de géolocalisation mais de comparer les résultats délivrés par plusieurs éditeurs de solutions.

Bases de données GeoIP actualisées

Format actuel

Les bases de données actualisées fournies par Maxmind utilisent désormais le format MMDB (.mmdb)4). Ce nouveau format permet d'avoir les IPv4 et les IPv6 dans la même base de données.

Une nouvelle commande, mmdblookup, permet d'interroger ce nouveau format de base. Il suffit d'installer le paquetage correspondant5).

Mise à jour des bases de données

La mise à jour des bases de données est possible, gratuitement, pour une utilisation “non commerciale”. C'est forcément plus détaillé que ça : lire la licence et les conditions d'utilisations du services et des données ainsi que les engagements qu'on prend.

Ne pas se laisser impressionner par le nombre d'étapes. On est guidées pas à pas, de manière claire. Il suffit de lire avec un minimum d'attention.

Il faut :

  • créer un compte chez Maxmind
    • formulaire d'inscription
    • réception d'un mail de confirmation avec un lien d'initialisation de mdp
    • création du mdp
    • identification mail/mdp
    • réception d'un mail avec code d'authentification
    • demander l'accès gratuit aux bases proposées en version lite
  • générer une clé de licence d'utilisation (qui s'appliquera aux bases octroyées)
    • enregistrer cette clé avant que quitter la page web6)
    • À ce stade, on est identifiée par un UserId (l'adresse mail d'inscription), un mot de passe, un AccountID, une LicenseKey et nos EditionIDs (les bases auxquelles on a accès).
  • télécharger le fichier de configuration destiné à geoip-update (proposé sur la page web de création de clé)
  • installer le paquetage geoip-update
  • éditer /etc/GeoIP.conf pour y reporter les 3 informations simples figurant dans le fichier de configuration téléchargé précédemment : AccountID, LicenseKey, EditionIDs.
  • lancer la mise à jour : sudo geoipupdate

Sauf mention particulière, les bases de données se trouvent dans /var/lib/GeoIP. Avec une licence Lite, on y trouve, par exemple :

  • GeoLite2-ASN.mmdb
  • GeoLite2-City.mmdb
  • GeoLite2-Country.mmdb
L'installation du paquetage geoip-update se charge de la création :
  • du service systemd “geoipupdate” correspondant,
  • d'une entrée dans la crontab (mise à jour hebdomadaire).

Sources

Interrogation des bases locales

En ligne de commande

Les bases installées localement via geoipupdate sont interrogeable en ligne de commande au moyen de mmdblookup. Par exemple :

mmdblookup --file /var/lib/GeoIP/GeoLite2-City.mmdb --ip 2001:41d0:2:b773::1
mmdblookup --file /var/lib/GeoIP/GeoLite2-Country.mmdb --ip 54.237.234.26 country iso_code

Il faut impérativement indiquer le chemin vers la base de données que l'on interroge. L'IP recherchée est obligatoirement précédée de “–ip”.

La forme générale de la commande est :

mmdblookup --file <chemin vers la base]> --ip >adresse IP> <chemin de données>

Les deux premiers paramètres son évidents. Le troisième ne peut être compris qu'au regard de la structure de données de la base interrogée. Le “chemin de données” est un chemin dans cette structure de type : champ sous-champ sous-champ…

Dans l'exemple précédent, le chemin de données est “country iso_code” : champ = country, sous-champ = iso_code. Au moment de la rédaction, on obtient le résultat suivant :

mmdblookup --file /var/lib/GeoIP/GeoLite2-Country.mmdb --ip 54.237.234.26 country iso_code
  "US" <utf8_string>

On constate que le sous-champ iso_code contient deux informations : le code ISO du pays et l'encodage dans lequel cette information est fournie. Les guillemets et chevrons font partie de l'affichage.

La structure s'apprend vite, sur le tas. Elle n'est pas très complexe et une commande qui omet l'argument “chemin de données” renvoie la totalité de l'information structurée disponible pour une IP, dans la base interrogée.

Personnellement je mets en place des scripts pour interroger les bases afin de ramener la commande à une syntaxe minimale:
commande IP

et je mets en forme le résultat pour l'ajuster à mes besoins. Par exemple :

countrylookup.sh 54.237.234.26
US

Utilisation / Intégration à des applications

Des modules presque sur étagère permette l'utilisation par des applications des bases GeoIP téléchargées sur un système. C'est la cas d'applications serveur telles que Postfix, Appache2, Dovecot…

En l'état, ça sort du cadre de cette fiche.

2)
apt install geoip-bin
3)
Août 2026
4)
Ce format a été créé par Maxmind en vue d'optimiser le temps de recherche. C'est un format ouvert sous licence Creative Commons Attribution-ShareAlike 3.0.
5)
apt install mmdb-bin
6)
La clé ne sera plus jamais affichée en intégralité !!!
localiser_une_ip.txt · Dernière modification : de Flaz