maxmindが提供する、IPアドレスから地理情報を確認することができるサービス(GeoIP)
GeoIPをインストール
パケットインストール
[root@falcon21 ~]# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
インストール:
GeoIP-data.noarch 0:1.5.0-11.el7 GeoIP-devel.x86_64 0:1.5.0-11.el7
mod_geoip.x86_64 0:1.2.10-1.el7
完了しました!
New leaves:
GeoIP-data.noarch
GeoIP-devel.x86_64
mod_geoip.x86_64
データベース取得
[root@falcon21 GeoIP]# mv GeoIP.dat GeoIP.dat_org
[root@falcon21 GeoIP]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
--2018-11-23 06:31:06-- http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
geolite.maxmind.com (geolite.maxmind.com) をDNSに問いあわせています... 104.16.37.47, 104.16.38.47, 2606:4700::6810:262f, ...
geolite.maxmind.com (geolite.maxmind.com)|104.16.37.47|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 711428 (695K) [application/octet-stream]
`GeoIP.dat.gz' に保存中
100%[================================================>] 711,428 --.-K/s 時間 0.1s
2018-11-23 06:31:06 (7.13 MB/s) - `GeoIP.dat.gz' へ保存完了 [711428/711428]
[root@falcon21 GeoIP]# wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
[root@falcon21 GeoIP]# gunzip GeoIP.dat.gz
Apacheモジュール設定
[root@falcon21 ~]# vi /etc/httpd/conf.d/geoip.conf
< IfModule mod_geoip.c >
GeoIPEnable On
GeoIPScanProxyHeaders On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat CheckCache
</ IfModule >
ログ出力
[root@falcon21 ~]# vi /etc/httpd/conf/httpd.conf
250 LogFormat "%a [%h [%h]%u%t%D \"%r \ "%> s%b \"%{Referer} i \ "\"% GEOIP_Address = \ "%{GEOIP_ADDR} e \" Country_Code = \ "%{GEOIP_COUNTRY_CODE} e \" Countr y_Name = \ "%{GEOIP_COUNTRY_NAME} e \" "
国別制限
[root@falcon21 ~]# vi /etc/httpd/conf.d/vhost.conf
<Location "/">
Order Deny,Allow
SetEnvIf GEOIP_COUNTRY_CODE JP BlockCountry
#以下どちらか設定
Allow from env=BlockCountry #日本のみのアクセス許可
</Location>
~
データベース更新sh
[root@falcon21 ~]# vi GeoIP.sh#!/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 |
sh実効権付与
[root@falcon21 ~]# chmod +x GeoIP.sh
sh実行
[root@falcon21 ~]# sh GeoIP.sh
Updating GeoIP databases...
2018-11-23 07:17:11 URL:http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz [13442362/13442362] -> "geoipupdate.iXxC3I0mIC/GeoLiteCity.dat.gz" [1]
2018-11-23 07:17:12 URL:http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz [711428/711428] -> "geoipupdate.iXxC3I0mIC/GeoIP.dat.gz" [1]
2018-11-23 07:17:12 URL:http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz [2534754/2534754] -> "geoipupdate.iXxC3I0mIC/GeoIPASNum.dat.gz" [1]
2018-11-23 07:17:13 URL:http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz [1207062/1207062] -> "geoipupdate.iXxC3I0mIC/GeoIPv6.dat.gz" [1]
IPアドレスを入力することで、情報を確認
https://www.maxmind.com/ja/geoip-demo
アクセスすることで自端末の情報を確認
http://dev.maxmind.com/geoip/geoip2/javascript/
GeoIP-update をインストール
[root@falcon21 ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/GeoIP-update-1.5.0-11.el7.noarch.rpm
[root@falcon21 ~]# rpm -Uvh GeoIP-update-1.5.0-11.el7.noarch.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:GeoIP-update-1.5.0-11.el7 ################################# [100%]
ーーーーーーーー
GeoIP-update-エラー
Received Error -21 (Sanity check database_info string failed) when attempting to update GeoIP Database