6月 242011
 
シェアする

こんなこと思ったことありませんか?

・特定の国からのWebアクセスを拒否したい
・特定の国からのWebアクセスは、違うページを見せたい
・アクセスログに国情報がでればいいな
・どこでもどあがほしい ってこれは違うなw

そんなお悩み解決します!


概要を説明すると、ServersMan@VPS上で起動しているApacheに対して、「mod_geoip」というモジュールを追加してあげます。プラグインやアドオン、拡張機能という言葉の方が聴きなれている方も多いかも知れませんが、Apacheの場合、これを「モジュール」と呼びます。

以下の手順、yumコマンドを用いてmod_geoipをインストールし設定します。

1. 「mod_geoip」モジュールをインストールできるようにyumレポジトリ「epel」を追加します。

[root@dti-vps-srv31 ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Retrieving http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.B1Zdek: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
 1:epel-release           ########################################### [100%]
[root@dti-vps-srv31 ~]#

 

2. 新しいレポジトリを追加したので、yum repolistで確認します。

[root@dti-vps-srv31 ~]# yum repolist
Loaded plugins: fastestmirror
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * epel: ftp.iij.ad.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
repo id                               repo name                                                                status
addons                                CentOS-5 - Addons                                                        enabled:     0
base                                  CentOS-5 - Base                                                          enabled: 2,683
epel                                  Extra Packages for Enterprise Linux 5 - i386                             enabled: 5,299
extras                                CentOS-5 - Extras                                                        enabled:   327
updates                               CentOS-5 - Updates                                                       enabled:   551
vz-base                               vz-base                                                                  enabled:     5
vz-updates                            vz-updates                                                               enabled:     3
repolist: 8,868
[root@dti-vps-srv31 ~]#

 

3. 「mod_geoip」をインストールします。

[root@dti-vps-srv31 ~]# yum -y install mod_geoip
Loaded plugins: fastestmirror
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * epel: ftp.iij.ad.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
Setting up Install Process

~ 省略 ~

Total download size: 726 k
Downloading Packages:
(1/2): mod_geoip-1.2.5-2.el5.i386.rpm                                                                 |  16 kB     00:00
(2/2): GeoIP-1.4.7-0.1.20090931cvs.el5.i386.rpm                                                       | 710 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------
Total                                                                                        1.3 MB/s | 726 kB     00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6
epel/gpgkey                                                                                           | 1.7 kB     00:00
Importing GPG key 0x217521F6 "Fedora EPEL <epel@fedoraproject.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing     : GeoIP                                                                                                 1/2
 Installing     : mod_geoip                                                                                             2/2

Installed:
 mod_geoip.i386 0:1.2.5-2.el5

Dependency Installed:
 GeoIP.i386 0:1.4.7-0.1.20090931cvs.el5

Complete!
[root@dti-vps-srv31 ~]#

 

4. インストールされたパッケージをrpm(あーるぴーえむ)コマンドで確認します。

[root@dti-vps-srv31 ~]# rpm -qa | grep -i geoip
GeoIP-1.4.7-0.1.20090931cvs.el5
mod_geoip-1.2.5-2.el5
[root@dti-vps-srv31 ~]#

ついでに該当パッケージによって作成されたファイルも見ておきましょう

[root@dti-vps-srv31 ~]# rpm -ql GeoIP
/etc/GeoIP.conf
/etc/GeoIP.conf.default
/usr/bin/geoiplookup
/usr/bin/geoiplookup6
/usr/bin/geoipupdate
/usr/lib/libGeoIP.so.1
/usr/lib/libGeoIP.so.1.4.6
/usr/lib/libGeoIPUpdate.so.0
/usr/lib/libGeoIPUpdate.so.0.0.0
/usr/share/GeoIP
/usr/share/GeoIP/GeoIP.dat
/usr/share/doc/GeoIP-1.4.7
/usr/share/doc/GeoIP-1.4.7/AUTHORS
/usr/share/doc/GeoIP-1.4.7/COPYING
/usr/share/doc/GeoIP-1.4.7/ChangeLog
/usr/share/doc/GeoIP-1.4.7/INSTALL
/usr/share/doc/GeoIP-1.4.7/LICENSE.txt
/usr/share/doc/GeoIP-1.4.7/README
/usr/share/doc/GeoIP-1.4.7/TODO
/usr/share/doc/GeoIP-1.4.7/fetch-geoipdata-city.pl
/usr/share/doc/GeoIP-1.4.7/fetch-geoipdata.pl
/usr/share/man/man1/geoiplookup.1.gz
/usr/share/man/man1/geoiplookup6.1.gz
/usr/share/man/man1/geoipupdate.1.gz
[root@dti-vps-srv31 ~]#

[root@dti-vps-srv31 ~]# rpm -ql mod_geoip
/etc/httpd/conf.d/mod_geoip.conf
/usr/lib/httpd/modules/mod_geoip.so
/usr/share/doc/mod_geoip-1.2.5
/usr/share/doc/mod_geoip-1.2.5/Changes
/usr/share/doc/mod_geoip-1.2.5/INSTALL
/usr/share/doc/mod_geoip-1.2.5/README
/usr/share/doc/mod_geoip-1.2.5/README.php
[root@dti-vps-srv31 ~]#

5. 「/etc/httpd/conf.d/mod_geoip.conf」を確認します。

[root@dti-vps-srv31 ~]# cat /etc/httpd/conf.d/mod_geoip.conf
LoadModule geoip_module modules/mod_geoip.so

<IfModule mod_geoip.c>
 GeoIPEnable On
 GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>

[root@dti-vps-srv31 ~]#

6. 参照した情報をメモリに保存してすばやく処理できるように設定を一部変更します。

[root@dti-vps-srv31 ~]# sed -i.ORG 's/dat/dat MemoryCache/g' /etc/httpd/conf.d/mod_geoip.conf

7.上記コマンドで変更作成されたバックアップファイルがあることと、変更後のmod_geoip.confを確認します。

[root@dti-vps-srv31 ~]# ls -la /etc/httpd/conf.d/mod_geoip.conf*
-rw-r--r-- 1 root root 152 Jun 24 19:54 /etc/httpd/conf.d/mod_geoip.conf
-rw-r--r-- 1 root root 140 Mar  8  2009 /etc/httpd/conf.d/mod_geoip.conf.ORG
[root@dti-vps-srv31 ~]#
[root@dti-vps-srv31 ~]# cat /etc/httpd/conf.d/mod_geoip.conf
LoadModule geoip_module modules/mod_geoip.so

<IfModule mod_geoip.c>
 GeoIPEnable On
 GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
</IfModule>

[root@dti-vps-srv31 ~]#

8. ついでといってはなんですが、差分も確認しておきましょう。

[root@dti-vps-srv31 ~]# diff /etc/httpd/conf.d/mod_geoip.conf /etc/httpd/conf.d/mod_geoip.conf.ORG
5c5
<   GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
---
>   GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
[root@dti-vps-srv31 ~]#

9. Apacheを再起動し、設定を反映させます。

[root@dti-vps-srv31 ~]# service httpd restart
Stopping httpd:                                            [  OK ]
Starting httpd:                                            [  OK ]
[root@dti-vps-srv31 ~]#

以上でモジュールのインストールが完了しました。
次のページで以下設定方法を説明します。

・特定の国からのWebアクセスを拒否する方法
・特定の国からのWebアクセスをリダイレクトする方法
・Webアクセスログに接続元国情報を出す方法

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ