We've been using GeoDNS to distribute client requests to different data centers around the world, first as a highly experimental project, then more and more as months passed.
Currently we're using it as simple global load balancer for files.myopera.com
, help.opera.com
, and some get.opera.com
stuff.
However, there is another minor feature that we built into it, like a hacker's backdoor :) Since it's using a full DNS server, and it relies on having GeoIP libraries installed and always up-to-date, we thought it was a nice and cool idea to have a quick way to perform geo-ip lookups from the command line.
It works in a similar way as DNS black lists do. Suppose you want to look up the IP address 80.90.100.110
. You reverse the IP, and lookup a special geo.opera.com
zone:
cosimo@cd01:~$ host -t TXT 110.100.90.80.lookup.geo.opera.com 110.100.90.80.lookup.geo.opera.com descriptive text "ip:80.90.100.110, country:de, continent:europe"
This uses the GeoDNS backends to resolve country and continent of the given IP address, and gets back the information in a very basic string format. A simple shell or Perl script can then process that for you if you need. In fact, I made a ~/bin/geolookup
Perl script that I can use like this:
cosimo@cd01:~$ geolookup 80.90.100.110 90.100.110.120 100.110.120.130 80.90.100.110 => de, europe 90.100.110.120 => fr, europe 100.110.120.130 => unknown, unknown
Nothing special, but in this way, no matter what machine I'm on, I can always quickly lookup IPs if I need to, without having to download the Country or City GeoIP databases, and keep them up-to-date. On the geodns backends, this is of course done routinely with a set of simple cronjobs.