From: Василий <vasilisc at rambler.ru>
Newsgroups: email
Date: Mon, 10 Jul 2004 18:21:07 +0000 (UTC)
Subject: Squid2MySQL для FreeBSD 5.2 для учета трафика через squid
Что такое 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
Измените при копировании путь к 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.
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'
Примените схему, которая создаст необходимые таблицы.
Могут появляться сообщения об ошибках, но это нормально, так как схема
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/).
1298 Прочтений • [Squid2MySQL для FreeBSD 5.2 для учета трафика через squid (traffic freebsd squid)] [08.05.2012] [Комментариев: 0]