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 件のコメント:
コメントを投稿