Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  hosting
  mod_gzip
  mod_log_sql
  mod_geoip
  mod_bandwidth
  mod_accounting
  mod_bunzip2
  mod_mp3
  mod_shapvh
  mod_limitipconn
  mod_sqlinclude
  mod_auth_imap
  webalizer
  Apache + SSL
  auth_ldap
  Настройка AWStats
  apache 2.0
  mod_auth_external
  CMS - TYPO3
  phpBB-2/3
  mod_ntlm
  mod_ntlm2
  Nginx+php+fcgi
  OTRS на Apache1
  OTRS на Apache20
  ApacheStats
  mod_evasive
  Lighttpd
  nginx+php-fpm+mysql
  php + mssql
  MySQL + кодировки
  svn+apache+trac
  php5-oci8
  Lighttpd + Apache
  CMS Drupal 6.9
  Apache22+MySQL
  Оптимизация хоста для CMS
  блокировка spam на www
  PostgreSQL 8
  Apache 22 + PHP5 + suPHP
  lighttpd + mod_uploadprogress
  VirtualBox + phpVirtualBox
  DNS API
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> WWW —> mod_geoip

Модуль определения географического положения по IP - mod_GeoIP

Автор: lissyara.


    Неплохой модуль для apache1.3 - по IP посетителя определяется его страна, регион и город. Может пригодиться, чтобы зарубить левых посетителей - китайцев, например, или америкосов. Всё равно им у меня на сайте делать нечего :) Итак, ставим из портов:

/usr/home/lissyara/>
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='mod_geoip'
Port:   mod_geoip-1.2.7
Path:   /usr/ports/www/mod_geoip
Info:   An Apache module that provides the country code of the client's IP
Maint:  seanc@FreeBSD.org
B-deps: GeoIP-1.3.14 apache-1.3.34_3 expat-1.95.8_3 perl-5.8.7_2
R-deps: GeoIP-1.3.14 apache-1.3.34_3 expat-1.95.8_3 perl-5.8.7_2
WWW:    http://www.maxmind.com/app/mod_geoip

Port:   mod_geoip2-1.1.7
Path:   /usr/ports/www/mod_geoip2
Info:   An Apache module that provides the country code of the client's IP
Maint:  jau@iki.fi
B-deps: GeoIP-1.3.14 apache-2.0.55_2 expat-1.95.8_3 libiconv-1.9.2_1 perl-5.8.7_2
R-deps: GeoIP-1.3.14 apache-2.0.55_2 expat-1.95.8_3 libiconv-1.9.2_1 perl-5.8.7_2
WWW:    http://www.maxmind.com/app/mod_geoip

/usr/ports/>cd /usr/ports/www/mod_geoip
/usr/ports/www/mod_geoip/>make && make install && make clean
......................................
......................................
************************************************************
Please edit your apache.conf or httpd.conf to enable and
setup this module.

You can always refer to the useful documents held in
${PREFIX}/share/doc/mod_geoip/, where ${PREFIX} is
typically /usr/local.

When it's done, do the following to take effect:

  apachectl configtest  (and correct any errors reported)
  apachectl restart

************************************************************
/usr/ports/www/mod_geoip/>pkg_info | grep "[Gg]eo"
GeoIP-1.3.14        Find the country that any IP address or hostname originates
mod_geoip-1.2.7     An Apache module that provides the country code of the clie
/usr/ports/www/mod_geoip/>

Он за собой тащит собственно GeoIP - из него ему нужна БД. После установки редактируем конфиг апача - раскомментруем модуль mod_geoip:
/usr/local/etc/apache/httpd.conf

LoadModule geoip_module       libexec/apache/mod_geoip.so
AddModule mod_geoip.c

И добавляем такие строки:

<IfModule mod_geoip.c>
##### модуль GeoIP начался
#
# Включаем модуль
GeoIPEnable     On
# Указываем путь к БД (в доках говориться, что
# надо тока если местоположение БД нестандартное, но
# какое считается стандартным - нигде не нашёл - потому
# на всякий случай указываю) - БД инсталлится вместе с
# портом GeoIP.
GeoIPDBFile     /usr/local/share/GeoIP/GeoIP.dat
# Следующая директива устанавливает где применяется модуль
# GeoIP (по крайней мере я так понял) - тока в примечаниях apache (Notes),
# только в переменных окружения (Env) или везде (All - по дефолту):
GeoIPOutput     All
# заставляет проверять БД GeoIP.dat чтобы определить, обновлялась ли БД
# нужно чтобы не перезапускать апач при обновлении БД
GeoIPFlags      CheckCache

###### пример блокировки отдельных стран
# Блокируем косоглазеньких - всё равно ничё не поймут
SetEnvIf        GEOIP_COUNTRY_CODE      CN      BlockCountry
# Блокируем америкосов - тоже ничё не поймут, тупые слишком.
SetEnvIf        GEOIP_COUNTRY_CODE      US      BlockCountry
# Что мы, собствено, делаем по вышеуказанным правилам,
# это должно быть в директории которую блокируем, т.е. внутри
# <Directory "/usr/local/www/data">
# ...............
#Deny from env=BlockCountry
# </Directory>
</IfModule>

После чего перезапускаем апач, и пробуем, что у нас получилось, таким скриптиком, на php:

<pre>
Откуда припёрся:
<?php
$country_code = apache_note("GEOIP_COUNTRY_CODE");
$region = apache_note("GEOIP_REGION");
$country_name = apache_note("GEOIP_COUNTRY_NAME");
$city = apache_note("GEOIP_CITY");
echo "Код страны: " . $country_code . "\n";
echo "Регион:     " . $region . "\n";
echo "Имя страны: " . $country_name . "\n";
echo "Город:      " . $city . "\n";
?>
</pre>

Вот его вывод, для московского IP:
Откуда припёрся:
Код страны: RU
Регион:
Имя страны: Russian Federation
Город:

Если заходить с частного IP (192.168.x.x) то не покажет ничего :) Почему не показал регион и город - я так думаю что нас считают страной дикой, где кроме медведей, ядерных ракет, и людей в телогрейках и шапках-ушанках ничего и нету... Кстати, в примерах, на сайте автора модуля, был пример, как заблокировать доступ с региона RU. Я же в ответ привёл примёр как залочить буржуев :) Пшли нах :)

P.S. Добавлено по итогам первого комментария. Где взять базы - тут лежит какая-то программа, не вникал. К ней идуд базы. Надо поставить `expert`-версию, после чего установятся базы. Базы копируем куда надо, правим чутка конфиг:
<IfModule mod_geoip.c>
##### модуль GeoIP начался
#
# Включаем модуль
GeoIPEnable     On
# Указываем путь к БД (в доках говориться, что
# надо тока если местоположение БД нестандартное, но
# какое считается стандартным - нигде не нашёл - потому
# на всякий случай указываю) - БД инсталлится вместе с
# портом GeoIP.
GeoIPDBFile     /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile     /usr/local/share/GeoIP/GeoIPCity.dat
GeoIPDBFile     /usr/local/share/GeoIP/GeoIPOrg.dat
# Следующая директива устанавливает где применяется модуль
# GeoIP (по крайней мере я так понял) - тока в примечаниях apache (Notes),
# только в переменных окружения (Env) или везде (All - по дефолту):
GeoIPOutput     All
# заставляет проверять БД GeoIP.dat чтобы определить, обновлялась ли БД
# нужно чтобы не перезапускать апач при обновлении БД
GeoIPFlags      CheckCache

###### пример блокировки отдельных стран
# Блокируем косоглазеньких - всё равно ничё не поймут
SetEnvIf        GEOIP_COUNTRY_CODE      CN      BlockCountry
# Блокируем америкосов - тоже ничё не поймут, тупые слишком.
SetEnvIf        GEOIP_COUNTRY_CODE      CN      BlockCountry
# Что мы, собствено, делаем по вышеуказанным правилам,
# это должно быть в директории которую блокируем, т.е. внутри
# <Directory "/usr/local/www/data">
# ...............
#Deny from env=BlockCountry
# </Directory>
</IfModule>

После чего доступно больше данных (судя по всему есть ещё база провайдеров, т.к. ISP у меня не высвечивается):
<pre>
<b>Откуда припёрся</b>
<?php
$country_code = apache_note("GEOIP_COUNTRY_CODE");
$region = apache_note("GEOIP_REGION");
$country_name = apache_note("GEOIP_COUNTRY_NAME");
$city = apache_note("GEOIP_CITY");
$connect_type = apache_note("GEOIP_NETSPEED");
$dma_code = apache_note("GEOIP_DMA_CODE");
$area_code = apache_note("GEOIP_AREA_CODE");
$latitude = apache_note("GEOIP_LATITUDE");
$longitude = apache_note("GEOIP_LONGITUDE");
$postal_code = apache_note("GEOIP_POSTAL_CODE");
$organization = apache_note("GEOIP_ORGANIZATION");
$isp = apache_note("GEOIP_ISP");

echo "Код страны:  " . $country_code . "\n";
echo "Регион:      " . $region . "\n";
echo "Имя страны:  " . $country_name . "\n";
echo "Город:       " . $city . "\n";
echo "Скорость:    " . $connect_type . "\n";
echo "dma_code:    " . $dma_code . "\n";
echo "area_code:   " . $area_code . "\n";
echo "latitude:    " . $latitude . "\n";
echo "longitude:   " . $longitude . "\n";
echo "postal_code: " . $postal_code . "\n";
echo "Организация: " . $organization . "\n";
echo "Провайдер:   " . $isp . "\n";

?>

Откуда припёрся
Код страны: RU
Регион: 48
Имя страны: Russian Federation
Город: Moscow
Скорость:
dma_code: 0
area_code: 0
latitude: 55.752201
longitude: 37.615601
postal_code:
organization:Network of NICEVT
isp:

Половина пунктов не вполне понятна... Ну да и не важно.



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=5663.

размещено: 2006-01-29,
последнее обновление: 2006-02-17,
автор: lissyara

оценить статью:

jails, 2006-02-12 в 12:05:20

Для того что бы модуль показывал регион и город необходимы еще 2 базы: GeoIPCity.dat(19,359,354 байт) и GeoIPOrg.dat(81,218,923 байт), автор за них требует денег. Но выход есть, пишите на мыло поделюсь рецептом.

Тим, 2006-02-17 в 2:43:45

А нужно ли мудрить - они устаревшую на месяц базу предоставляют в виде GeoLite City http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

Проверю, сообщу...

Solltex, 2006-05-27 в 16:03:45

A kak sdelat redirekt im

BigHarry, 2006-12-09 в 22:55:00

По поводу фразу в предисловии:
"зарубить левых посетителей - китайцев, например, или америкосов. Всё равно им у меня на сайте делать нечего"
Я бы не советовал торопится рубить америкосов, а то потом будете недоумевать, почему гугль не индексирует ваш сайт...

123, 2007-10-08 в 12:51:53

!!

Alexey, 2007-12-22 в 1:52:05

Спасибо, хорошая статья.

Хочется добавить, что доп базы (GeoIPCity / GeoIPOrg) можно нарыть здесь:
_http_://_weblogexpert_._com_/_download.htm_

Zer0, 2008-04-11 в 18:32:08

могу поделиться базами
1,1M    GeoIP.dat
24M    GeoIPCity.dat
99M    GeoIPOrg.dat
Сцылко

Edik, 2008-10-31 в 8:34:37

Да. Спасибо. Очень все понятно написано, осталось только взять и проглотить. :)
А сайт очень онравился, добавил в закладки и временно подпишусь на рассылку :)

Mauzer, 2009-03-11 в 18:43:26

а ты лиссиара оказывается шовинист а???

Time, 2009-03-30 в 11:32:15

Как седлать чтобы он видел тачки из локалки?

Zer0, 2009-03-30 в 18:09:21

никак, да и смысла то?

Time, 2009-03-31 в 5:05:47

Да просто хотел сделать локальный сервачек вот и все:)

don, 2009-07-14 в 1:09:16

все хорошо, только ненаписано, что надо установить до этого http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz ... без него однако не работает, хотя может он в стандарте уже идет, но у меня не было

adre, 2009-11-24 в 12:09:11

2Zer0 ваши базы по ссылки актуальны? они всымысле которые полные, которые платные? =)

Zer0, 2009-11-24 в 14:45:09

  1088038  4 янв  2008 GeoIP.dat
29198413 20 ноя  2008 GeoIPCity.dat
 3697929 28 авг  2008 GeoIPISP.dat
103863410  2 янв  2008 GeoIPOrg.dat
раз в год лезу в инет ищу базы
это те базы что в архиве, в этом году не до них было

Zer0, 2009-11-24 в 15:20:19

  1088038  4 янв  2008 GeoIP.dat
43765917 24 ноя 14:13 GeoIPCity.dat
 3697929 28 авг  2008 GeoIPISP.dat
103863410  2 янв  2008 GeoIPOrg.dat
80271539 24 ноя 14:17 GeoIP.tar.bz2
чуток обновил;-)

mihagriha, 2014-04-10 в 23:02:04

www.latlong.ru
поиск географических координат, расширенный geo ip


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 38 чел.
За последние 30 мин было: 219 человек
За сегодня было
2915 показов,
730 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0526 секунд
Из них PHP: 31%; SQL: 69%; Число SQL-запросов: 77 шт.
Исходный размер: 131698; Сжатая: 23318