GeoIP
maxmindが提供する、IPアドレスから地理情報を確認することができるサービス(GeoIP)。
無償版と有償版が用意されている。
MaxMind – IP 地理位置情報およびオンライン詐欺防止
料金体系
GeoIP2 Databases
Database | Lite | 国 | 都市 |
---|---|---|---|
精度の高い情報 | – | ◎ | ◎ |
頻繁な更新 | – | ◎ | ◎ |
月額 | free | $12 | $90 |
大陸 | ◎ | ◎ | ◎ |
国 | ◎ | ◎ | ◎ |
都市 | – | – | ◎ |
郵便コード | – | – | ◎ |
緯度経度 | – | – | ◎ |
詳しい料金体系
Databaseの精度の確認
こちらに国名を入力して確認できる。
MaxMind – GeoIP2 City Accuracy
GeoIP2 Liteを使用しApacheのアクセスを国別に制限する
OSはCentOS6.5を使用する。
パッケージインストール
yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
データベース取得
cd /usr/share/GeoIP/ mv GeoIP.dat GeoIP.dat_org wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz
Apacheモジュール設定
vim /etc/httpd/conf.d/geoip.confGeoIPEnable On GeoIPScanProxyHeaders On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache GeoIPDBFile /usr/share/GeoIP/GeoIP.dat CheckCache #ログ出力したい用 LogFormat "%a [%h] %u %t %D "%r" %>s %b "%{Referer}i" "%{User-Agent}i" GeoIP_Address="%{GEOIP_ADDR}e" Country_Code="%{GEOIP_COUNTRY_CODE}e" Country_Name="%{GEOIP_COUNTRY_NAME}e"" combined
国別制限
vim /etc/httpd/conf.d/vhost.conf <Location "/"> Order Deny,Allow SetEnvIf GEOIP_COUNTRY_CODE JP BlockCountry #以下どちらか設定 Allow from env=BlockCountry #日本のみのアクセス許可 Deny from env=BlockCountry #日本からのアクセス拒否 </Location>
データベース更新仕込み
#!/bin/sh GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database" GEOIPDIR=/usr/share/GeoIP TMPDIR= DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6" if [ -d "${GEOIPDIR}" ]; then cd $GEOIPDIR if [ -n "${DATABASES}" ]; then TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX) echo "Updating GeoIP databases..." for db in $DATABASES; do fname=$(basename $db) wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/${db}.dat.gz" -O "${TMPDIR}/${fname}.dat.gz" gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat" mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat" chmod 0644 "${GEOIPDIR}/${fname}.dat" done [ -d "${TMPDIR}" ] && rm -rf $TMPDIR fi fi
GeoIPテスト
IPアドレスを入力することで、情報を確認することができます。
MaxMind – GeoIP デモ
アクセスすることで自端末の情報が確認できます。
GeoIP2 JavaScript Client API
参考サイト
IPアドレスから地理的位置情報のまとめ
IPアドレスの地理的位置情報が引ける無料RESTful API集
その他サービス
IPligence Lite Free, Free IP Geo-location database
インストール参考
Install Mod_GeoIP for Apache in RHEL/CentOS 6.3/5.8
Apache+mod_geoip2で国単位でアクセスを遮断する – 旅モバ
元記事はこちらです。
「CentOSでGeoIPを利用してHTTPアクセスを制御する」