Не работает mod_geoip в proftpd на FreeBSD

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
igyrus
рядовой
Сообщения: 34
Зарегистрирован: 2007-11-09 16:06:59

Не работает mod_geoip в proftpd на FreeBSD

Непрочитанное сообщение igyrus » 2015-09-04 11:18:51

Помогите пожалуйста найти проблему.
Имеется FreeBSD 10.1 и работающий proftpd (установлен из портов). Решил прикрутить mod_geoip для фильтрации доступа по странам.
Установил порт proftpd-mod_geoip. В папку /usr/local/share/GeoIP скачал и распаковал GeoIP.dat с maxmind.com.
В proftpd.conf написал

Код: Выделить всё

LoadModule mod_geoip.c
...
<Global>
...
  <IfModule mod_geoip.c>
   GeoIPEngine on
   GeoIPPolicy "deny,allow"
   GeoIPTable /usr/local/share/GeoIP/GeoIP.dat MemoryCache
   GeoIPLog /var/log/proftpd-geoip.log
   GeoIPAllowFilter CountryCode RU
  </IfModule>
<Global> block.
</Global>
Перезапустил proftpd... доступа к серверу нет.
Меняю на GeoIPEngine off - доступ есть.
Файл /var/log/proftpd-geoip.log создаётся, но ни строчки в нём не появляется.
В логах /var/log/proftpd.log и /var/log/messages ни каких ошибок proftpd и ни слова про geoip.
Пробовал вместо бинарного GeoIP.dat текстовый GeoIPCountryWhois.csv.
Пробовал оставить только
GeoIPEngine on
GeoIPPolicy "allow,deny"
и разное прочее шаманство вроде снести порты proftpd и proftpd-mod_geoip и установить proftpd-mod_geoip заново.
Результат один - доступа у ftp нет, и про geoip в логах ни слова.
Подскажите пожалуйста в какую сторону копать.
Может модуль какой ещё нужен?
Proftpd собран с

Код: Выделить всё

'--with-shared=mod_ban:mod_copy:mod_ctrls_admin:mod_deflate:mod_dnsbl:mod_dynmasq:mod_exec:mod_ifsession:mod_ifversion:mod_qos:mod_quotatab:mod_quotatab_file:mod_quotatab_radius:mod_quotatab_sql:mod_radius:mod_ratio:mod_readme:mod_rewrite:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_shaper:mod_site_misc:mod_snmp:mod_sql:mod_sql_passwd:mod_tls:mod_tls_shmcache:mod_unique_id:mod_wrap2:mod_wrap2_file:mod_wrap2_sql'
в proftpd.conf

Код: Выделить всё

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_ifsession.c
LoadModule mod_geoip.c

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35262
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Не работает mod_geoip в proftpd на FreeBSD

Непрочитанное сообщение Alex Keda » 2015-09-13 17:44:37

Что значит - нет доступа?
Порт не слушается, не удаётся авторизоваться? Или что?
Убей их всех! Бог потом рассортирует...

igyrus
рядовой
Сообщения: 34
Зарегистрирован: 2007-11-09 16:06:59

Не работает mod_geoip в proftpd на FreeBSD

Непрочитанное сообщение igyrus » 2015-09-17 20:05:58

Посмотрел повнимательнее в логах proftpd и заметил что при входящем подключении процесс форкается, начинает использовать модуль geoip, база загружается (по Trace geoip:20 пишет в лог <geoip:15>: loaded GeoIP table '/usr/local/share/GeoIP/GeoIP.dat': GEO-106FREE 20150901 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved (type 1) ), а затем процесс для этого соединения завершается (SIGNAL 11).

igyrus
рядовой
Сообщения: 34
Зарегистрирован: 2007-11-09 16:06:59

Не работает mod_geoip в proftpd на FreeBSD

Непрочитанное сообщение igyrus » 2015-11-05 23:00:50

Починил.
У меня ipv6 не используется и, соответственно, proftpd был собран без его поддержки.
Я пересобрал его с поддержкой ipv6, а протокол отключил UseIPv6 off.
Помогло http://bugs.proftpd.org/show_bug.cgi?id=3976

igyrus
рядовой
Сообщения: 34
Зарегистрирован: 2007-11-09 16:06:59

Не работает mod_geoip в proftpd на FreeBSD

Непрочитанное сообщение igyrus » 2015-11-07 0:37:26

Ещё в одну засаду влетел.
Мне понадобилось отключить проверку geoip для адресов из локалки.
Делаю всё по ProFTPD mini-HOWTO. Класс, описывающий внутреннюю сетку у меня уже был и прекрасно работал. В базу пишутся логи действий только внешних пользователей.
Пишу:

Код: Выделить всё

<Class ExtAddr>
    From !192.168.0.0/24
    From !172.22.22.0/24
    Satisfy all
</Class>

<IfClass !ExtAddr>
  GeoIPEngine off
</IfClass>

<IfClass ExtAddr>
  GeoIPEngine on
</IfClass>

<IfModule mod_geoip.c>
  GeoIPPolicy "deny,allow"
  GeoIPTable /usr/local/share/GeoIP/GeoIP.dat IndexCache UTF8
  GeoIPLog /var/log/proftpd-geoip.log
  GeoIPAllowFilter CountryCode RU
</IfModule>
Geoip перестаёт работать. Пропускаются любые адреса, в proftpd-geoip.log тишина.
Комментирую условие

Код: Выделить всё

#<IfClass ExtAddr>
  GeoIPEngine on
#</IfClass>
- geoip работает, страны фильтруются, локалка заблокирована.
Что только куда не переставлял, пока, на авось, не переставил порядок загрузки модулей.
Казалось бы вполне логично добавить новый модуль в конец списка:

Код: Выделить всё

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_ifsession.c
LoadModule mod_geoip.c
Но пока не переставил mod_geoip выше mod_ifsession, условие не работало.

Код: Выделить всё

LoadModule mod_geoip.c
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_ifsession.c
Возможно это где-то и описано, но мне не попадалось.