RHEL, CentOS എന്നിവയിൽ അപ്പാച്ചെക്കായി Mod_GeoIP എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം


സന്ദർശകന്റെ ഐപി വിലാസത്തിന്റെ ഭൂമിശാസ്ത്രപരമായ സ്ഥാനം അപ്പാച്ചെ വെബ്uസെർവറിലേക്ക് ലഭിക്കുന്നതിന് ഉപയോഗിക്കാവുന്ന ഒരു അപ്പാച്ചെ മൊഡ്യൂളാണ് Mod_GeoIP. സന്ദർശകന്റെ രാജ്യം, സ്ഥാപനം, സ്ഥാനം എന്നിവ നിർണ്ണയിക്കാൻ ഈ മൊഡ്യൂൾ നിങ്ങളെ അനുവദിക്കുന്നു. ജിയോ ആഡ് സെർവിംഗ്, ടാർഗെറ്റ് ഉള്ളടക്കം, സ്പാം ഫൈറ്റിംഗ്, വഞ്ചന കണ്ടെത്തൽ, സന്ദർശകരെ അവരുടെ രാജ്യത്തെ അടിസ്ഥാനമാക്കി റീഡയറക്uടുചെയ്യൽ/ബ്ലോക്ക് ചെയ്യൽ എന്നിവയ്uക്കും അതിലേറെ കാര്യങ്ങൾക്കും ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.

ജിയോഐപി മൊഡ്യൂൾ, ക്ലയന്റിൻറെ ഭൂമിശാസ്ത്രപരമായ സ്ഥാനം അനുസരിച്ച് വെബ് ട്രാഫിക് റീഡയറക്ട് ചെയ്യാനോ തടയാനോ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാരെ അനുവദിക്കുന്നു. ക്ലയന്റ് ഐപി വിലാസം വഴിയാണ് ഭൂമിശാസ്ത്രപരമായ സ്ഥാനം പഠിക്കുന്നത്.

Mod_GeoIP ന് രണ്ട് വ്യത്യസ്ത പതിപ്പുകൾ ഉണ്ട് ഒന്ന് സൗജന്യവും മറ്റൊന്ന് പണമടച്ചതും MaxMind GeoIP/GeoCity ഡാറ്റാബേസുകളും ഉപയോഗിക്കുന്നു.

  1. സൗജന്യ പതിപ്പ്: സൗജന്യ പതിപ്പിൽ, ജിയോ സിറ്റിയും കൺട്രി ഡാറ്റാബേസുകളും 99.5% കൃത്യതയോടെ ലഭ്യമാണ്.
  2. പണമടച്ചുള്ള പതിപ്പ്: പണമടച്ചുള്ള പതിപ്പിൽ, IP വിലാസത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിപുലമായ വിശദാംശങ്ങളോടുകൂടിയ രണ്ട് ഡാറ്റാബേസുകളും 99.8% കൃത്യതയോടെ നിങ്ങൾക്ക് ലഭിക്കും.

സൗജന്യ പതിപ്പും പണമടച്ചുള്ള പതിപ്പും തമ്മിലുള്ള കൂടുതൽ വ്യത്യാസങ്ങൾ പരിശോധിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ദയവായി Maxmind.com സന്ദർശിക്കുക.

YUM പാക്കേജ് മാനേജർ യൂട്ടിലിറ്റിയുള്ള EPEL ശേഖരം ഉപയോഗിച്ച് RHEL, CentOS എന്നിവയിൽ അപ്പാച്ചെക്കായി Mod_GeoIP മൊഡ്യൂൾ എങ്ങനെ സജ്ജീകരിക്കാമെന്നും ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഈ ലേഖനം വിശദീകരിക്കുന്നു.

പ്രവർത്തിക്കുന്ന ഒരു ലാമ്പ് (ലിനക്സ്, അപ്പാച്ചെ, MySQL, കൂടാതെ PHP) സജ്ജീകരണത്തോടുകൂടിയ RHEL, CentOS സിസ്റ്റം നിങ്ങൾ ഇതിനകം പ്രവർത്തിപ്പിക്കുന്നുണ്ടെന്ന് ഞങ്ങൾ അനുമാനിക്കുന്നു. ഇല്ലെങ്കിൽ, LAMP ഉപയോഗിച്ച് രണ്ട് ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുടെയും ഇൻസ്റ്റാളേഷൻ ഞങ്ങൾ കാണിച്ചിരിക്കുന്ന ഞങ്ങളുടെ ലേഖനങ്ങൾ വായിക്കുക.

  1. CentOS 7 മിനിമലിന്റെ ഇൻസ്റ്റാളേഷൻ.
  2. CentOS 8 മിനിമലിന്റെ ഇൻസ്റ്റാളേഷൻ.

  1. RHEL, CentOS 7 എന്നിവയിൽ LAMP (Linux, Apache, MySQL, PHP) എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  2. RHEL, CentOS 8 എന്നിവയിൽ Apache, MySQL/MariaDB, PHP എന്നിവ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

സ്ഥിരസ്ഥിതിയായി mod_Geoip RHEL/CentOS ഒഫീഷ്യൽ റിപ്പോസിറ്ററിക്ക് കീഴിൽ ലഭ്യമല്ല, അതിനാൽ ഞങ്ങൾ മൂന്നാം കക്ഷി EPEL ശേഖരണം ഇൻസ്റ്റാൾ ചെയ്ത് പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്.

# yum install epel-release
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [On RHEL 8]

നിങ്ങളുടെ സിസ്റ്റത്തിൽ EPEL റിപ്പോസിറ്ററി പ്രവർത്തനക്ഷമമാക്കിക്കഴിഞ്ഞാൽ, അവയുടെ ഡിപൻഡൻസി പാക്കേജുകൾക്കൊപ്പം താഴെ പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിച്ച് നിങ്ങൾക്ക് mod_geoip ഇൻസ്റ്റാൾ ചെയ്യാം.

# 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/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 എന്ന വരി ഓഫിൽ നിന്ന് ഓണിലേക്ക് സജ്ജമാക്കുക. കൂടാതെ, നിങ്ങൾ ജിയോഐപി ഡാറ്റാബേസ് ഫയലിലേക്ക് സമ്പൂർണ്ണ പാത്ത് ചേർക്കുന്നുവെന്ന് ഉറപ്പാക്കുക.

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

മാറ്റങ്ങൾ പ്രതിഫലിപ്പിക്കുന്നതിന് അപ്പാച്ചെ സേവനം പുനരാരംഭിക്കുക.

# systemctl restart httpd
OR
# service httpd restart

എന്നിരുന്നാലും, ജിയോഐപി മൊഡ്യൂൾ സെർവർ-വൈഡ് ഓണാക്കാൻ ശുപാർശ ചെയ്യുന്നില്ല. നിങ്ങൾ യഥാർത്ഥത്തിൽ ട്രാഫിക് റീഡയറക്uഷൻ അല്ലെങ്കിൽ ബ്ലോക്ക് ചെയ്യുന്ന ലൊക്കേഷൻ> അല്ലെങ്കിൽ ബ്ലോക്കുകളിൽ മാത്രമേ ജിയോഐപി മൊഡ്യൂൾ പ്രവർത്തനക്ഷമമാക്കാവൂ.

mod_geoip മൊഡ്യൂൾ അപ്പാച്ചെയിൽ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് പരിശോധിക്കുന്നതിന്, അപ്പാച്ചെ റൂട്ട് ഡയറക്uടറിയിൽ (ഉദാ. /var/www/html) testgeoip.php എന്ന പേരിൽ ഒരു PHP ഫയൽ സൃഷ്uടിക്കേണ്ടതുണ്ട്.

# 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 വിലാസവും രാജ്യ വിശദാംശങ്ങളും നിങ്ങൾക്ക് ലഭിക്കും.

ജിയോഐപി ഡാറ്റാബേസ് എല്ലാ മാസവും ആരംഭിക്കും. അതിനാൽ, ജിയോഐപി ഡാറ്റാബേസ് കാലികമായി നിലനിർത്തുന്നത് വളരെ പ്രധാനമാണ്. ഡാറ്റാബേസിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് ഡൗൺലോഡ് ചെയ്യുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിക്കുക.

# 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

എല്ലാ മാസവും ജിയോഐപി ഡാറ്റാബേസിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് സ്വയമേവ ഡൗൺലോഡ് ചെയ്യുന്ന ഒരു ചെറിയ ഷെൽ സ്ക്രിപ്റ്റ് ഞങ്ങൾ എഴുതിയിട്ടുണ്ട്. ഇനിപ്പറയുന്ന ഏതെങ്കിലും സ്ക്രിപ്റ്റ് /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 (ഏഷ്യ) ലേക്ക് സജ്ജമാക്കിയ രാജ്യ കോഡിനെ അടിസ്ഥാനമാക്കി ഉപയോക്താക്കളെ റീഡയറക്ട് ചെയ്യും. ഇതുവഴി നിങ്ങൾക്ക് ഏത് ഉപയോക്താക്കളെയും അവരുടെ കൗണ്ടി കോഡ് അടിസ്ഥാനമാക്കി റീഡയറക്uടുചെയ്യാനാകും.

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

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

ഈ ഉദാഹരണം ജിയോഐപി സജ്ജമാക്കുന്ന രാജ്യ കോഡ് അടിസ്ഥാനമാക്കി ഉപയോക്താക്കളെ തടയും. ചുവടെയുള്ള ഉദാഹരണം AS (ഏഷ്യ), യുഎസ് (യുണൈറ്റഡ് സ്റ്റേറ്റ്സ്) എന്നീ രാജ്യങ്ങളിൽ നിന്നുള്ള ഉപയോക്താക്കളെ തടയും.

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 മൊഡ്യൂൾ സജ്ജീകരിക്കുന്നതിൽ നിങ്ങൾക്ക് എന്തെങ്കിലും പ്രശ്uനമുണ്ടെങ്കിൽ, ദയവായി അഭിപ്രായങ്ങളിലൂടെ ഞങ്ങളെ അറിയിക്കുക, അത് നിങ്ങളുടെ സുഹൃത്തുക്കളുമായി പങ്കിടാൻ മറക്കരുത്.