2014年11月29日土曜日

GeoIP を使い、IP アドレスから国や場所の情報をコマンドラインで取得

GeoIP を使い、IP アドレスから国や場所の情報をコマンドラインで取得する方法を調べてみました。

以下、今回は手探りで調べた内容が特に多いので「ようです」という表現ばかりになってますがご容赦下さい。

環境:
Ubuntu 14.04 (Trusty Tahr) Server

geoip-bin パッケージをインストールすると geoiplookup コマンドを使えるようになります

$ sudo apt-get install geoip-bin

たとえば、google.com の IP は 173.194.38.66 で、この IP を使っている国の情報は以下のように取得できます。

$ geoiplookup 173.194.38.66
GeoIP Country Edition: US, United States

ホスト名でもいけます。

$ geoiplookup google.com
GeoIP Country Edition: US, United States
-v オプションで GeoIP データファイルの日付やビルド番号を確認することができます
$ geoiplookup google.com -v
GeoIP Country Edition: GEO-106FREE 20140407 Build
GeoIP Country V6 Edition: GEO-106FREE 20140407 Build

実際の IP アドレスの国情報は時の経過と共に変化していきますが、データベースは 2014/04/07 のものでかなり古いです。どうやら、Ubuntu 14.04 が リリースされた時点のもので、それ以降更新されていないようです。

このあたりのデータベースファイルを利用しているようです。

$ ls -l /usr/share/GeoIP/
total 3844
-rw-r--r-- 1 root root  827301 Apr  7  2014 GeoIP.dat
-rw-r--r-- 1 root root 3105495 Apr  7  2014 GeoIPv6.dat

geoip-database-contrib パッケージをインストールすることでデータベースファイルを更新することができるようになるようです。

$ sudo apt-get install geoip-database-contrib

データベースファイルを更新

$ sudo geoip-database-contrib_update

データベースファイルの日付が最近のものになりました。データベースの種類も増えてます。

$ geoiplookup google.com -v
GeoIP Country Edition: GEO-106FREE 20141104 Build 1 Copyright (c) 2014 MaxMind Inc All Rights Reserved
GeoIP City Edition, Rev 1: GEO-533LITE 20141104 Build 1 Copyright (c) 2014 MaxMind Inc All Rights Reserved
GeoIP ASNum Edition: GEO-117 20141116 Build 1 Copyright (c) 2014 MaxMind Inc All Rights Reserved
GeoIP Country V6 Edition: GEO-106FREE 20141104 Build 1 Copyright (c) 2014 MaxMind Inc All Rights Reserved
GeoIP ASNum V6 Edition: GEO-117 20141116 Build 1 Copyright (c) 2014 MaxMind Inc All Rights Reserved

データベースファイルはこんな感じになりました。

$ ls -l /usr/share/GeoIP/
total 47136
-rw-r--r-- 1 root root  3720710 Nov 17 04:29 GeoIPASNum.dat
-rw-r--r-- 1 root root  4358378 Nov 17 04:29 GeoIPASNumv6.dat
lrwxrwxrwx 1 root root       31 Nov 29 19:34 GeoIPCity.dat -> /etc/alternatives/GeoIPCity.dat
-rw-r--r-- 1 root root   773056 Nov  6 04:25 GeoIP.dat
-rw-r--r-- 1 root root  1378157 Nov  6 04:25 GeoIPv6.dat
-rw-r--r-- 1 root root 18707382 Nov  6 05:02 GeoLiteCity.dat
-rw-r--r-- 1 root root 19316419 Nov  6 04:19 GeoLiteCityv6.dat

表示される情報も増えました。

$ geoiplookup 173.194.38.66
GeoIP Country Edition: US, United States
GeoIP City Edition, Rev 1: US, CA, California, Mountain View, 94043, 37.419201, -122.057404, 807, 650
GeoIP ASNum Edition: AS15169 Google Inc.

経度と緯度の情報も表示されてますが、あまり正確ではありません。

MAXMIND 社 の有料データベースを使うともっと高精度な位置情報を調べることができるようです。

しばらく経過するとデータベースが古くなり正確な情報を取得できなくなるはずなので、こまめに $ sudo geoip-database-contrib_update を実行すると最新の GeoIP データベースに更新できるようです。


0 件のコメント:

コメントを投稿