Première rédaction de cet article le 24 décembre 2017
Pour Noël, un truc complètement inutile mais amusant : trouver la longitude et la latitude d'une adresse IP via le DNS.
Ce service est fourni par Bert Hubert,
l'auteur de PowerDNS, via le domaine
geo.lua.powerdns.org
. (Il ne marche
apparemment que pour IPv4.) On inverse
l'adresse IP (comme pour
in-addr.arpa
) et on
fait une requête pour le type
TXT. Exemple avec l'adresse du serveur Web de
l'AFNIC, 192.134.5.24
:
% dig TXT 24.5.134.192.geo.lua.powerdns.org ...;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40951 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1 ... ;; ANSWER SECTION: 24.5.134.192.geo.lua.powerdns.org. 3600 IN TXT "48.858200 2.338700"
On peut automatiser l'opération avec awk (merci à Oli Schacher) :
% reverse() { echo $1 | awk -F. '{print $4"."$3"." $2"."$1}' } % reverse 192.134.5.24 24.5.134.192
Une fois que c'est fait, on peut lancer un navigateur Web directement vers la carte, ici avec OpenStreetMap :
% show-ip() { x-www-browser https://www.openstreetmap.org/\?$(dig $(echo $1 | awk -F. '{print $4"."$3"." $2"."$1}').geo.lua.powerdns.org TXT +short | head -1 | awk '{gsub(/"/, ""); print "mlat="$1"&mlon="$2"&zoom=12"}')} % show-ip 192.134.5.24
Et si vous préférez Evil Corp. :
% show-ip() { x-www-browser https://maps.google.com/maps\?q=$(dig $(echo $1 | awk -F. '{print $4"."$3"." $2"."$1}').geo.lua.powerdns.org TXT +short | awk '{gsub(/"/, ""); print $1","$2}')}
La base de géolocalisation utilisée est celle de MaxMind qui, comme toutes les bases de géolocalisation vaut ce qu'elle vaut (le serveur Web de l'AFNIC n'est pas au centre de Paris…)
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)