The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Squid2MySQL для FreeBSD 5.2 для учета трафика через squid (traffic freebsd squid)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: traffic, freebsd, squid,  (найти похожие документы)
From: Василий <vasilisc at rambler.ru> Newsgroups: email Date: Mon, 10 Jul 2004 18:21:07 +0000 (UTC) Subject: Squid2MySQL для FreeBSD 5.2 для учета трафика через squid Оригинал: http://www.uvsw.narod.ru/project/squid2mysql.html Squid2MySQL для FreeBSD 5.2 (08.07.2004 г) Что такое Squid2MySQL? Это авторизация и учет траффика пользователей в Интернет. Есть proxy-сервер Squid (http://www.squid-cache.org/) и база данных MySQL, (http://dev.mysql.com/) Squid занимается кэшированием информации, а MySQL хранит информацию о пользователе (имя, пароль, скаченные URL и т.д). Связующее звено - это Squid2MySQL (http://evc.fromru.com/squid2mysql/download.html) 1.0.0 от Eugene V. Chernyshev для Linux. Для тех, кто использует Linux в качестве OS для серверов - лучше будет посетить сайт автора Squid2MySQL и использовать информацию с авторского (http://evc.fromru.com/squid2mysql/download.html) сайта. Я лишь портировал squid2mysql под FreeBSD и исправил несколько ошибок, о них было сообщено автору в переписке по e-mail. Данная статья описывает этапы и особенности установки исправленной версии squid2mysql под FreeBSD. Поехали ... 1) Должен быть установлен MySQL, Squid и Perl. Проверьте работоспособность данных программ: зайдите в MySQL, сделайте простой запрос к таблице mysql; проверьте Perl командой perl -v; не забудьте сделать для Squid базы командой squid -z. Проверьте DNS командой nslookup host, если с DNS будут проблемы, то не будет работать Squid. 2) Скачайте архив squid2mysql (http://www.uvsw.narod.ru/project/squid2mysql_v.tar.gz) под FreeBSD (~600 Kb) и распакуйте # tar -zxvf squid2mysql_v.tar.gz 3) Зайдите в появившийся каталог squid2mysql_v. Перейдите в подкаталог for_perl и установите модули для Perl DBI-1.42.tar.gz и Msql-Mysql-modules-1.2219.tar.gz или скачайте более новые. # tar -zxvf DBI-1.42.tar.gz # cd DBI-1.42 # perl Makefile.PL # make # make test # make install аналогично установите модуль Msql-Mysql-modules-1.2219.tar.gz 4) Прочтите файл squid2mysql_v/install_info/INSTALL. Скопируйте perl-скрипт squid2mysql и sh-скрипт sqauth в каталог с squid. Например, # cp squid2mysql /usr/local/squid/sbin/squid2mysql # cp sqauth /usr/local/squid/sbin/sqauth Измените при копировании путь к squid, если он у вас в другом каталоге. Perl-скрипт squid2mysql - разбирает логи от Squid и заносит в базу MySQL. Sh-скрипт sqauth - авторизационный скрипт проверяет имя, пароль и сравнивает скаченный объем с лимитом. Если все OK - то скрипт возвращает OK и Squid пускает в Интернет, иначе ERR. Этот скрипт писал я (оригинальный скрипт больше и позволяет лимитировать по дням и неделям), так что по его работе претензии предъявляйте мне на e-mail. (mailto:vasilisc@rambler.ru?Subject=squid2mysql) 5) Создайте командой mkfifo pipe-канал. # mkfifo /var/log/squid/access.log Рекомендую путь оставить таким какой он есть. Автор применил красивый ход. Вместо текстового файла будет находится pipe-канал. Ничегонеподозревающий Squid будет писать логи о юзерах в один конец трубы, а perl-скрипт squid2mysql считывать из другого конца трубы, разбирать и заносить в базу данных MySQL. Если MySQL будет не доступен, то информация временно будет записана в файл /var/log/squid/backup.log 6) Скопируйте mysql.sh и squid.sh из каталога squid2mysql_v/install_info/ в каталог /usr/local/etc/rc.d/ Сделайте эти скрипты запускаемыми для автозапуска MySQL и Squid после рестарта FreeBSD. # chmod +x mysql.sh # chmod +x squid.sh Посмотрите содержимое squid.sh с комментариями #!/bin/sh case "$1" in # разбираем параметр start) /usr/local/squid/sbin/squid2mysql < /var/log/squid/access.log & # Читаем логи Squid через pipe-канал /usr/local/squid/sbin/squid # запускаем Squid echo "Squid starting" # информируем ;; stop) /usr/local/squid/sbin/squid -k shutdown # останавливаем Squid echo "Squid stoping" # информируем ;; *) /usr/local/squid/sbin/squid -k reconfigure # рестартуем Squid echo "Squid restarting" # информируем ;; esac exit 0 7) Каталог site_php - это web-интерфейс для управления пользователями. Для их работы нужно установить Apache и PHP, нужно в php.ini прописать globalregister = on. Мне удобнее управляться с помощью SQL запросов непосредственно к базе данных или с помощью графических программ, поэтому я отказался от их использования. С помощью данных скриптов вы можете дать возможность пользователям менять свой пароль и смотреть свою (и только свою) статистику. Отредактируйте include.php по своему усмотрению. Если у вас возникают вопросы по поводу работы web-интерфейса для squid2mysql, то обращайтесь на авторский (http://evc.fromru.com/squid2mysql/download.html) сайт. 8) Скопируйте squid2mysql_v/var_arch/sqlogarch в /var/arch/squid/sqlogarch squid2mysql_v/var_arch/sqlogupload в /var/arch/squid/sqlogupload Данные скрипты используются из php-скриптов web-интерфейса для управления backup и restore логов. 9) Для того чтобы Squid работал с squid2mysql нужно в squid.conf прописать следующие параметры: # параметры авторизации auth_param basic program /usr/local/squid/sbin/sqauth # путь с скрипту, # который возвращает OK или ERR auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours # ВСЕХ загоняем под proxy acl all src 0.0.0.0/0.0.0.0 acl users proxy_auth REQUIRED http_access allow users http_access deny all # Заставляем Squid проверять не перекачал ли кто ? authenticate_ttl 60 seconds 10) Запустите /usr/local/mysql/bin/mysql. Если вы достаточны сильны в MySQL, то подредактируйте файл squid2mysql.sql Например, такая строка разрешает подсоединяться к базе под именем vasilisc и паролем 123456 c любого хоста сети. GRANT ALL PRIVILEGES ON *.* TO vasilisc@"%" IDENTIFIED BY '123456'; Такая строка дает по умолчанию 30 Mb в месяц лимит maxmonthly bigint(15) NOT NULL default '31457280' Примените схему, которая создаст необходимые таблицы. mysql>\. /path_to/squid2mysql_v/install_info/squid2mysql.sql Могут появляться сообщения об ошибках, но это нормально, так как схема squid2mysql.sql содержит SQL команды удаления таблицы (DROP TABLE) и создания новой (CREATE TABLE) с таким же именем. Но в первый раз таких таблиц НЕТ, поэтому появляются сообщения об ошибках. 11) Рекомендую сделать в squid.conf следущее: cache_effective_user nobody cache_effective_group nogroup То есть Squid будет работать от пользователя nobody и группа nogroup. Не забудьте сделать nobody владельцем каталога Squid. # chown -R nobody:nogroup /usr/local/squid/ Обеспечьте доступ пользователю nobody в каталоги: /var/log/squid/ /var/arch/squid/ 12) Добавьте тестового пользователя в базу данных либо с помощью php-скриптов из каталога site_php, либо непосредственно с консоли MySQL. mysql>\u squidlog mysql>INSERT INTO auth VALUES('vasilisc',PASSWORD('123456'),'N',0,0,31457280); mysql>INSERT INTO usernames VALUES('vasilisc','Alekseenko V N','simple user','OVIT','11-22-33','s@s.ru','2004-08-01'); Или подправьте файл insert_user.sql и вызовите его. mysql>\. /path_to/insert_user.sql Проверьте работоспособность! Если не заработало пройдите все этапы еще раз внимательно. Прочтите логи Squid, MySQL, FreeBSD. Просмотрите содержимое файлов, особенно include.php, sqauth, perl-скрипт squid2mysql, squid.conf. Загляните на оффициальные сайты продуктов, прочтите FAQ. Мои комментарии: 1) Я изменил во всех скриптах имя пользователя для коннекта к MySQL. Был пользователь squidroot с паролем sqroot стал root (это не FreeBSD root, а root MySQL - это разные вещи) c пустым паролем. Это связано с тем, что портирование под FreeBSD происходило нелегко, прибавьте баги в оригинальных скриптах. 2) sqauth - написанный мной авторизационный sh-скрипт. Его работоспособность на моей совести. Он пока упрощен до определения месячного лимита, хотя оригинальный скрипт проверял недельный и дневной лимиты. 3) perl-скрипт squid2mysql - был мной изменен, так как там был баг с удвоением первой URL. Вы посетили сайт первый раз в этот день и размер скаченой html удваивался, потом проблема исчезала до следущего дня. Вот и все, надеюсь все установилось и работает вам на благо! Cкажите спасибо Eugene V. Chernyshev за Squid2MySQL (http://evc.fromru.com/squid2mysql/).

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, deDust (?), 18:58, 26/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос развивающий тему:
    а можно-ли повторить подобный трюк только вместо MySQL использовать ldap ?

    Вроде в хелперах squid'a есть модуль, но остается вопрос об лимитировании трафика

    P.S. Отмазка
    С ldap я не работал, поэтому и интересуюсь насколько реально / практично имплементировать его у себя вместо MySQL

     
  • 1.2, Николай (??), 10:07, 03/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как настроить еще и прозрачный прокси? - выдает ошибку aclAuthenticated: authentication not applicable on accelerated requests.
     
  • 1.3, LAN (??), 15:49, 28/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    хм, насколько я могу понять из описания, набольшой нагрузке это будет падать, squid может писать лог быстрее чем будет считывать скрипт и squid будет впадать в ступор...

    ATAL: logfileWrite: /var/log/squid/access.log: (35) Resource temporarily unavailable

     
  • 1.4, Butsyk A. (?), 15:22, 03/11/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот есть программка для складывания логов в базу Postgresql http://gkm.sumy.ua/~butsyk/s2pg.tar.bz2
     
     
  • 2.5, Butsyk A. (?), 09:30, 23/11/2004 [^] [^^] [^^^] [ответить]  
  • +/
    http://squid2db.sourceforge.net/ - написана на С и есть скрипты для анализа баз данных, настраивается, быстрая, простая, использует только API базы.
     

  • 1.6, Владимир (??), 11:25, 25/03/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все сделал как надо. Работает. Вопрос: если при авторизации в конце имени пользователя добавить пробел, то авторизатор его не учитывает и пускает, а в логи пишется "Пользователь%20", соответственно пользователь с пробелом в конце это уже другой пользователь и трафик не учитывается. Кто может посоветовать вариант решения этой проблемы?
     
  • 1.8, petr999 (?), 10:58, 08/12/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    php-морда-то красивая? где посмотреть?
     
  • 1.9, petr999 (?), 11:23, 08/12/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    /usr/local/squid/sbin/squid2mysql | tail -f /var/log/squid/access.log &
     
  • 1.10, petr999 (?), 11:24, 08/12/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    да, чорт ево дери, теряется пайп. Но мне кажется, что стороны пайпа в этой данной строчке перепутаны местами. Вообще кто пробовал?
    /usr/local/squid/sbin/squid2mysql | tail -f /var/log/squid/access.log &
     
  • 1.11, Sergey Gorbunov (?), 16:46, 25/01/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот такая шняга при попытке доступа к базе через админку - а перловое все нормально работает и коннектится и юзеров пускает....


    Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /usr/local/www/data-dist/admin/include.php on line 18

    Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/data-dist/admin/include.php:18) in /usr/local/www/data-dist/admin/index.php on line 10

    Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/data-dist/admin/include.php:18) in /usr/local/www/data-dist/admin/index.php on line 11

     
  • 1.12, vadim_kh (??), 15:57, 06/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вопрос на засыпку.
    если я делаю (совершенно случайно)
    killall -HUP squid
    либо
    squid -k reconfigure
    то пайп разрывается. как отследить это деляние в perl'овом скрипте?
     
  • 1.13, Shahrzad Moatamedi (?), 10:12, 03/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Hello Friends,

    Has any one installed squid2mysql and got it working?
    I need some help on it. The problem is the when we try
    to login as squidroot it does not authenticate and
    keeps giving back the authentication screen. Please
    help.

    Regards,

    M.Velu

     
  • 1.14, Kh.Serg (?), 10:45, 24/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    авторизация конечно... да...
    PASSWORD char (30) -> char (60)
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру