Документация по ОС FreeBSD Среда, 24.04.2024, 14:54
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Squid

Руководство по установке squid2mysql под FreeBSD [2010]
Данная статья описывает этапы и особенности установки исправленной версии squid2mysql под FreeBSD.

Что такое Squid2MySQL? Это авторизация и учет трафика пользователей в Интернете. Есть proxy-сервер Squid и база данных MySQL, Squid занимается кэшированием информации, а MySQL хранит информацию о пользователе (имя, пароль, скаченные URL и т.д).

Связующее звено — это Squid2MySQL 1.0.0 от Eugene V. Chernyshev для Linux. Для тех, кто использует Linux в качестве OS для серверов, лучше будет посетить сайт автора Squid2MySQL и использовать информацию с авторского сайта. Я лишь портировал 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 под 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 и пускает Squid в Интернет, иначе — ERR. Этот скрипт писал я (оригинальный скрипт больше и позволяет лимитировать по дням и неделям), так что по его работе претензии предъявляйте мне на e-mail.

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 &
      /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, то обращайтесь на авторский сайт.

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://www.nixp.ru/articles/Руководство-по-установке-squid2mysql-под-FreeBSD.html
Категория: Squid | Добавил: oleg (07.05.2010) | Автор: vasilisc
Просмотров: 1031 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024