ວິທີການຕິດຕັ້ງ Mod_GeoIP ສຳ ລັບ Apache ໃນ RHEL ແລະ CentOS


Mod_GeoIP ແມ່ນໂມດູນ Apache ທີ່ສາມາດຖືກ ນຳ ໃຊ້ເພື່ອໃຫ້ມີທີ່ຕັ້ງພູມສາດຂອງທີ່ຢູ່ IP ຂອງຜູ້ເຂົ້າຊົມເຂົ້າໃນ Apache webserver. ໂມດູນນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດ ກຳ ນົດປະເທດ, ອົງການແລະສະຖານທີ່ຂອງນັກທ່ອງທ່ຽວ. ມັນມີປະໂຫຍດໂດຍສະເພາະ ສຳ ລັບ Geo Ad Serving, ເນື້ອຫາເປົ້າ ໝາຍ, ການຕໍ່ສູ້ກັບສະແປມ, ການຊອກຄົ້ນຫາການສໍ້ໂກງ, ການປ່ຽນເສັ້ນທາງ/ການຂັດຂວາງຜູ້ມາຢ້ຽມຢາມໂດຍອີງໃສ່ປະເທດຂອງພວກເຂົາແລະອື່ນໆ.

ໂມດູນ GeoIP ຊ່ວຍໃຫ້ຜູ້ບໍລິຫານລະບົບສາມາດປ່ຽນເສັ້ນທາງຫລືສະກັດກັ້ນການເຂົ້າຊົມເວັບໄຊຕ໌ຕາມສະຖານທີ່ທາງພູມສາດຂອງລູກຄ້າ. ສະຖານທີ່ທາງພູມສາດແມ່ນຮຽນຮູ້ຜ່ານທີ່ຢູ່ IP ຂອງລູກຄ້າ.

Mod_GeoIP ມີສອງລຸ້ນທີ່ແຕກຕ່າງກັນ ໜຶ່ງ ແມ່ນ Free ແລະອີກລຸ້ນ ໜຶ່ງ ແມ່ນຈ່າຍແລະໃຊ້ຖານຂໍ້ມູນ MaxMind GeoIP/GeoCity.

<

  • ສະບັບຟຣີ: ໃນເວີຊັນທີ່ບໍ່ເສຍຄ່າ, ຖານຂໍ້ມູນຂອງເມືອງແລະເມືອງຂອງປະເທດແມ່ນມີຄວາມຖືກຕ້ອງ 99,5%.
  • ສະບັບຈ່າຍ: ໃນລຸ້ນທີ່ຈ່າຍ, ທ່ານຈະໄດ້ຮັບຖານຂໍ້ມູນທັງສອງຢ່າງດ້ວຍຄວາມຖືກຕ້ອງ 99,8% ພ້ອມດ້ວຍບາງລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບທີ່ຢູ່ IP.
  • ຖ້າທ່ານຕ້ອງການກວດສອບຄວາມແຕກຕ່າງລະຫວ່າງລຸ້ນ Free ແລະຈ່າຍ, ກະລຸນາເຂົ້າເບິ່ງທີ່ Maxmind.com.

    ບົດຂຽນນີ້ອະທິບາຍເຖິງວິທີການຕັ້ງແລະຕິດຕັ້ງໂມດູນ Mod_GeoIP ສຳ ລັບ Apache ໃນ RHEL ແລະ CentOS ໂດຍໃຊ້ຫໍສະມຸດ EPEL ກັບເຄື່ອງມືຈັດການຊຸດ YUM.

    ພວກເຮົາສົມມຸດວ່າທ່ານໄດ້ໃຊ້ລະບົບ RHEL ແລະ CentOS ແລ້ວໂດຍມີການຕັ້ງຄ່າ LAMP (Linux, Apache, MySQL, ແລະ PHP) ແລ້ວ. ຖ້າບໍ່, ຫຼັງຈາກນັ້ນອ່ານບົດຄວາມຂອງພວກເຮົາທີ່ພວກເຮົາໄດ້ສະແດງການຕິດຕັ້ງລະບົບປະຕິບັດການທັງສອງກັບ LAMP.

    <

  • ຕິດຕັ້ງ CentOS 7 Minimal.
  • ການຕິດຕັ້ງ CentOS 8 Minimal.
  • <

  • ວິທີການຕິດຕັ້ງ LAMP (Linux, Apache, MySQL, PHP) ໃນ RHEL ແລະ CentOS 7
  • ວິທີການຕິດຕັ້ງ Apache, MySQL/MariaDB, ແລະ PHP ໃນ RHEL ແລະ CentOS 8
  • ໂດຍຄ່າເລີ່ມຕົ້ນ 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
    

    ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະດາວໂຫລດຖານຂໍ້ມູນ Geo City ແລະຖານຂໍ້ມູນປະເທດທີ່ລ້າສຸດເພື່ອສືບຕໍ່ປັບປຸງ.

    # 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, ແລະກະຕຸ້ນໂມດູນທົ່ວ server, ດັ່ງທີ່ສະແດງຢູ່ໃນຂໍ້ຄວາມຂ້າງລຸ່ມນີ້.

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

    ຕັ້ງຄ່າ GeoIPEnable ຈາກ Off to On. ນອກຈາກນີ້, ໃຫ້ແນ່ໃຈວ່າທ່ານເພີ່ມເສັ້ນທາງຢ່າງແທ້ຈິງໃນເອກະສານຖານຂໍ້ມູນຂອງ 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 ພຽງແຕ່ໃນ ຫຼື block ທີ່ທ່ານຈະປະຕິບັດການປ່ຽນເສັ້ນທາງການຈະລາຈອນຕົວຈິງຫຼືຕັນ.

    ເພື່ອທົດສອບໂມດູນ mod_geoip ເຮັດວຽກຢ່າງຖືກຕ້ອງກັບ Apache, ພວກເຮົາຕ້ອງສ້າງເອກະສານ PHP ທີ່ມີຊື່ວ່າ testgeoip.php ພາຍໃຕ້ໄດເລກະທໍລີຮາກຂອງ Apache (ເຊັ່ນ: 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 ໂດຍອັດຕະໂນມັດທຸກໆເດືອນ. ພຽງແຕ່ໃສ່ ຕຳ ລາຕໍ່ໄປນີ້ພາຍໃຕ້ /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 (ອາຊີ). ວິທີນີ້ທ່ານສາມາດປ່ຽນເສັ້ນທາງຜູ້ໃຊ້ໃດ ໜຶ່ງ ໂດຍອີງໃສ່ລະຫັດເຂດຂອງເຂົາເຈົ້າ.

    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]

    ຕົວຢ່າງນີ້ຈະກີດຂວາງຜູ້ໃຊ້ໂດຍອີງໃສ່ລະຫັດປະເທດທີ່ GeoIP ກຳ ນົດ. ຕົວຢ່າງຂ້າງລຸ່ມນີ້ຈະສະກັດຜູ້ໃຊ້ຈາກ 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, ກະລຸນາແຈ້ງໃຫ້ພວກເຮົາຮູ້ຜ່ານ ຄຳ ເຫັນແລະກະລຸນາຢ່າລືມແບ່ງປັນກັບ ໝູ່ ຂອງທ່ານ.