RHELおよびCentOSにApache用のMod_GeoIPをインストールする方法


Mod_GeoIP は、訪問者の IP アドレスの地理的位置を Apache Webサーバーに取得するために使用できるApacheモジュールです。このモジュールでは、訪問者の組織場所を特定できます。これは、ジオ広告配信ターゲットコンテンツスパム対策不正検出リダイレクトに特に便利です。 /ブロック訪問者は、自分の国などに基づいています。

GeoIPモジュールにより、システム管理者はクライアントの地理的な場所に応じてWebトラフィックをリダイレクトまたはブロックできます。地理的位置は、クライアントのIPアドレスを介して学習されます。

Mod_GeoIP には2つの異なるバージョンがあり、1つは無料、もう1つは有料で、MaxMindを使用しています GeoIP / GeoCity データベース。

  1. Free Version : In Free version the Geo City and Country databases are availble with 99.5% accuracy.
  2. Paid Version : In Paid version you will get both databases with 99.8% accuracy with some more advanaced details about IP address.

無料有料のバージョンの違いをもっと詳しく知りたい場合は、 Maxmind.com にアクセスしてください。

この記事では、Apache用の Mod_GeoIP モジュールを

LAMP Linux )、 Apache(Apache)を使用して、 RHEL CentOS システムをすでに実行していると仮定します。 MySQL PHP )の設定。そうでない場合は、次に LAMP を使用して両方のオペレーティングシステムのインストールを示した記事を読んでください。

  1. Installation of Red Hat Enterprise Linux (RHEL) 7.3 Guide
  2. Installation of CentOS 7.3 Guide
  1. How to Install LAMP (Linux, Apache, MySQL, PHP) on RHEL and CentOS

デフォルトでは mod_Geoip RHEL/CentOS 公式リポジトリでは利用できませんので、サードパーティの EPEL リポジトリをインストールして有効にする必要があります。

# yum install epel-release

システムで EPEL リポジトリを有効にしたら、次のコマンドをそれらの依存関係パッケージと共に実行して、 mod_geoip を簡単にインストールできます。

# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel

最新の Geo City Country Database を最新の状態にすることをお勧めします。

# cd /usr/share/GeoIP/
# mv GeoIP.dat GeoIP.dat_org
# wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
# wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
# gunzip GeoLite2-Country.tar.gz
# gunzip GeoLite2-City.tar.gz

モジュールがインストールされたら、 vi などのコマンドラインテキストエディタを使用してモジュールのメイン設定ファイルを開いて編集し、下の抜粋に示すようにサーバー全体でモジュールを有効にします。

# vi /etc/httpd/conf.d/geoip.conf

GeoIPEnable行をオフからオンに設定します。また、必ずGeoIPデータベースファイルへの絶対パスを追加してください。

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

変更を反映させるには、 Apache サービスを再起動します。

# systemctl restart httpd
OR
# service httpd restart

ただし、GeoIPモジュールをサーバー全体で有効にすることはお勧めできません。 GeoIPモジュールは、実際にトラフィックのリダイレクトまたはブロックを実行する&lt; Location&gt; または&lt; Directory&gt; ブロックでのみ有効にしてください。

mod_geoip モジュールがApacheで正しく動作していることをテストするには、 Apache testgeoip.php という PHP ファイルを作成する必要があります。 strong> rootディレクトリ( eg/var/www/html )。

# vi /var/www/html/testgeoip.php

それに以下のphpコードを挿入してください。

<html>
<head>
  <title>What is my IP address - determine or retrieve my IP address</title>
 </head>
<body>
 <?php
     if (getenv(HTTP_X_FORWARDED_FOR)) {
        $pipaddress = getenv(HTTP_X_FORWARDED_FOR);
        $ipaddress = getenv(REMOTE_ADDR);
        echo "Your Proxy IP address is : ".$pipaddress. " (via $ipaddress) " ;
    } else {
        $ipaddress = getenv(REMOTE_ADDR);
        echo "Your IP address is : $ipaddress";
    }
    $country = getenv(GEOIP_COUNTRY_NAME);
    $country_code = getenv(GEOIP_COUNTRY_CODE);
    echo "<br/>Your country : $country ( $country_code ) ";
?>
</body>
</html>

さて、ウェブブラウザ(例:http://localhost/testgeoip.php )を使ってファイルを呼び出そうとします。あなたの IPアドレスの詳細を取得します。

GeoIPデータベースは毎月初めに更新されます。そのため、GeoIPデータベースを最新の状態に保つことが非常に重要です。最新版のデータベースをダウンロードするには、次のコマンドを使用します。

# cd /usr/share/GeoIP/
# mv GeoIP.dat GeoIP.dat_org
# wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
# wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
# gunzip GeoLite2-Country.tar.gz
# gunzip GeoLite2-City.tar.gz

毎月自動的に最新バージョンのGeoIPデータベースをダウンロードするsmaillシェルスクリプトを書きました。次のスクリプトを /etc/cron.monthly に配置するだけです。

# Automatic GeoIP Database Update
#!/bin/sh
cd /usr/share/GeoIP
mv GeoIP.dat GeoIP.dat_org
wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
gzip -d -f GeoLite2-Country.tar.gz
#!/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

下記のコード例では、 AS Asia )に設定した国コードに基づいてユーザーをリダイレクトします。このようにして、あなたは彼らの郡コードに基づいてどんなユーザーでもリダイレクトすることができます。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat

# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
RewriteRule ^(.*)$ https://www.tecmint.com$1 [R,L]

この例では、GeoIPが設定した国コードに基づいてユーザーをブロックします。以下の例では、 AS Asia )および US United States )の国からユーザーをブロックします。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
# ... place more countries here

Deny from env=BlockCountry

以下の例では、上記の国のユーザーのみが許可されます。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
# ... place more countries here

Deny from all
Allow from env=AllowCountry

mod_geoip とその使用方法の詳細については、http://www.maxmind.com/app/mod_geoipを参照してください。 mod_geoipモジュールの設定に問題がある場合は、コメントでお知らせください。友達と共有することを忘れないでください。