端くれプログラマの備忘録 インフラ [インフラ] IPアドレスから地域情報を得るには (GeoIP)

[インフラ] IPアドレスから地域情報を得るには (GeoIP)

ある会員制サイトでどの国からのアクセスによってコンテンツをダイナミックに変更したいというニーズあり。IPアドレスで振り分けるしかないのだけど、プロキシが利いていれば正確ではないこともありえる。その点理解してもらったうえでIPアドレスから国への変換を行うために、GeoIPをサーバーにインストール。以下インストールの覚え書き。

GeoIPとは

GeoIPはMaxMindが提供するIPアドレスの位置情報データベース。データベースとウェブサービスがそれぞれ有料で提供されている。無料のGEOロケーションデータも配布されているので、これを自前のウェブサーバーで使うことも可能。でも、IPアドレス割り当ては日々変化しているだろうから、正確な判定が必要ならば有料データを定期的に更新しながら使うべきだろうな。

MaxMind – IP Geolocation and Online Fraud Prevention
http://www.maxmind.com/en/home

mod_geoip2 Apache module « Maxmind Developer Site
http://dev.maxmind.com/geoip/legacy/mod_geoip2/

インストール手順

やってみるとインストールは結構簡単。

# cd /usr/local/src
# wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar xzvf GeoIP.tar.gz
# cd GeoIP-1.4.8
# ./configure
# make
# make install
#

geoipのツールは/usr/local/binに、データベースは/usr/local/share/GeoIPにインストールされる。ちゃんと動くかどうか、コマンドラインでテスト。

# cd /usr/local/bin/
# geoiplookup whitehouse.gov
GeoIP Country Edition: US, United States
# geoiplookup google.com
GeoIP Country Edition: US, United States
# geoiplookup rakuten.co.jp
GeoIP Country Edition: JP, Japan
#

ちゃんと動いたので、Apacheで使えるようにモジュールをインストール。

# cd /usr/local/src/
# wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2-latest.tar.gz
# tar zxvf mod_geoip2-latest.tar.gz
# cd mod_geoip2
# apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c
#

以下フォルダを確認してモジュールが存在するかチェック。

/etc/apache2/mods-available/geoip.load
/etc/apache2/mods-enabled/geoip.load -> ../mods-available/geoip.load

問題なさそうなので、.htaccessで有効化しておく。

/var/www/.htaccess
 
GeoIPEnable On

Apacheを再起動する必要あるか?念のため。

/etc/init.d/apache2 restart

参考サイト

GeoIPのインストール | Read it later.
http://readit.l8r.in/2013-02-22/geoip%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/

雑記: GeoIPでアクセス制御 – ng-circuit.net
http://www.ng-circuit.net/tbox/6-2013-05-03-geoip