On souhaite localiser géographiquement une IP (continent, pays, département, ville…).
La solution n'est pas simple pour plusieurs raisons1) :
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.
Pour une interrogation ponctuelle et limitée, on peut utiliser le service en ligne de démonstration (gratuit) de GeoIP2 City.
GeoLite2 est une version gratuite de bases de données de localisation. On peut les télécharger et les utiliser gratuitement, sous licence CC-by-sa.
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.
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.
Pour disposer des bases mises à jour sur son système :
# apt-get install geoip-database-contrib
geoip-database-contrib remplace geoip-database s'il est déjà installé et met en place une mise à jour périodique automatisée des bases.
Pour interroger ces bases en ligne de commande, il faut installer un paquetage supplémentaire :
# apt-get install geoip-bin
On dispose alors de deux commandes d'interrogation :
Sous Debian-Jessie, voir aussi geoip-database-extra.
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.
sources :
Pour exploiter GeoIP dans une application Web, une des solutions2) consiste à utiliser le module Apache ad hoc.
Pour cela il faut :
Typiquement, les deux premières étapes correspondent aux commandes suivantes :
# apt-get install libapache2-mod-geoip # a2enmod geoip
L'activation du module ne suffit pas à disposer des données de localisation collectées, sauf si vous vous contentez de la configuration par défaut.
Dans notre cas, nous avons configuré GeoIP pour disposer de données plus précises (et mises à jour) que ce qu'offre l'installation par défaut. Nous devons donc configurer le module Apache geoip pour qu'il tire parti de ces données supplémentaires.
La troisième étape nécessitera donc d'éditer manuellement le fichier de configuration du module Apache /etc/apache2/mods-available/geoip.conf pour qu'il ressemble à ce qui suit :
<IfModule mod_geoip.c> GeoIPEnable On GeoIPScanProxyHeaders On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat GeoIPDBFile /usr/share/GeoIP/GeoIPASNum.dat GeoIPDBFile /usr/share/GeoIP/GeoIPCity.dat GeoIPDBFile /usr/share/GeoIP/GeoIPv6.dat