NetTOOLSLib home page


GoGeoIP - установка и использование на Apache/Centos 7

GeoIP - программное обеспечения для определения расположение по IP адресу.
Данная возможность очень востребована в разработке веб сайтов, настройки систем фильтрации трафика и т.д. для создания разных алгоритмов поведения систем в зависимости от географического расположения.

В данной статье рассматривается вариант подключения MaxMind GeoIP бесплатного варианта базы данных.

- Подключение репозитория EPEL (рассмотрение данного вопросы есть в отдельной статье на сайте)


# yum install epel-release



- Установка Mod_GeoIP (модуль для Apache)


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



Далее необходимо скачать посление версии баз 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



Подключение Mod_GeoIP к Apacheche, внесение изменения в конфигурационный файл


/etc/httpd/conf.d/geoip.conf

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



Перезапуск Apache для применения изменений


# systemctl restart httpd



Проверка работы GeoIP

создаем тестовую страницу, в нашем примере /var/www/html/geoip_test.php со следующим содержанием


<html>
<head>
<title>What is my IP address - determine or retrieve my IP address</title>
</head>
<body>
<?php

$ipaddress = getenv(REMOTE_ADDR);
$country = getenv(GEOIP_COUNTRY_NAME);
$country_code = getenv(GEOIP_COUNTRY_CODE);
echo "<br/>Your country : $country ( $country_code ) ";
?>
</body>
</html>



Проверяем в браузере http://yousite/geoip_test.php

Базы GeoIP обновляются раз в месяц, для поддержания актуальность баз необходимо их обновлять вручную или через планировщик задание crontab

- Пример использования GeoIP

Приведенный ниже код позволяет перенаправлять пользователей на сайты в зависимости от географического раположения


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

# редирект
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
RewriteRule ^(.*)$ https://www.tecmint.com$1 [R,L]



Блокировка пользователей в зависимости от географического расположения


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

SetEnvIf GEOIP_COUNTRY_CODE AT BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
# список стран с запрещенным доступом ....



Deny from env=BlockCountry

Разрешен доступ пользователей в зависимости от географического расположения


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

SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
# ... страны с разрешенным доступом

Deny from all
Allow from env=AllowCountry



- Заключение

Данная статья рассматривает использование программного обеспечения GeoIP. Дополнительную информацию можно получить на сайте производителя http://www.maxmind.com

Go


NetTOOLSLib home page
(online network tools and utilities)