URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 430
[ Назад ]

Исходное сообщение
"Ограничение по объему трафика за определенный срок"

Отправлено Begemoth , 29-Янв-03 10:00 
Можно ли сделать (при помощи Squid или др программы) ограничение по количеству скаченных мегабаит, скажем в неделю, т.е. если юзер перекачал определенный лимит уже в среду, то его до понедельника отключить. Практически все проксики под винду на это способны, а вот в *NIX я пока решения не нашел.

Содержание

Сообщения в этом обсуждении
"RE: Ограничение по объему трафика за определенный срок"
Отправлено Михаил , 30-Янв-03 18:47 
меня тоже очень интересует этот вопрос, но пока все поиски безуспешны :(
кто что найдет - мыльте, плиз!

"RE: Ограничение по объему трафика за определенный срок"
Отправлено netscorpion , 31-Янв-03 10:32 
Не только можно но и нужно, схема работы проста до безобразия, в Squid-е делаеш авторизацию по пользователям, какимнибуль скриптом перелопачиваеш лог и в случае перебора лимита пользователя блокируеш.
Все ето надо делать по таймеру примерно раз в 10мин.
Соответственно по истечении периода пользователя можно опять включить.
У меня реализована, только половина:
1. Авторизация пользователей данные находятся в MySQL (кстати можно   использовати встроенные методы авторизации)
2. Переброска лога в MySQL.
3. Подсчет данных за месяц, неделю, день доделана не до конца


"RE: Ограничение по объему трафика за определенный срок"
Отправлено Begemoth , 31-Янв-03 12:22 
Тут человек какую-то утилиту предложил, называется ipa что-ли, говорит, что она во фришные порты входит. Я пока не смотрел.

"RE: Ограничение по объему трафика за определенный срок"
Отправлено Михаил , 03-Фев-03 17:23 
>Тут человек какую-то утилиту предложил, называется ipa что-ли, говорит, что она во
>фришные порты входит. Я пока не смотрел.

я тоже про такую читал, но тот адресок, на который посылали, оказался неработающим :(

где-то проскочила идея - отправить логи сквида в пайп, а скрипт будет брать данные из пайпа и непрерывно накручивать счетчик по каждому юзверю отдельно. т.е. не лопатить многометровый лог каждые 10 минут, а просто прибавить по одному числу на каждый запрос.
может кто-то посдкажет, как это сделать? а именно - как отправить логи в пайп, и как потом их оттуда вытащить скриптом?


"RE: Ограничение по объему трафика за определенный срок"
Отправлено netscorpion , 04-Фев-03 10:37 
>>Тут человек какую-то утилиту предложил, называется ipa что-ли, говорит, что она во
>>фришные порты входит. Я пока не смотрел.
>
>я тоже про такую читал, но тот адресок, на который посылали, оказался
>неработающим :(
>
>где-то проскочила идея - отправить логи сквида в пайп, а скрипт будет
>брать данные из пайпа и непрерывно накручивать счетчик по каждому юзверю
>отдельно. т.е. не лопатить многометровый лог каждые 10 минут, а просто
>прибавить по одному числу на каждый запрос.
>может кто-то посдкажет, как это сделать? а именно - как отправить логи
>в пайп, и как потом их оттуда вытащить скриптом?

У меня проблемма не только в ограничении обьемма скачиваемой информации, но и в контроле, тоесть я должен отслеживать кто, гдеи когда, что забирал.
Поэтому приходится сбрасываль логи в базу, для дальнейшей обработки, это на много удобнее нежели просматривать весь лог, или использовать тотже SARG (кстати не плохой анализатор).

А по поводу обьемов, то это зависит от канала и количества пользователей у меня их 12 штук, и каждые 10 минут я сбрасываю лог. Не знаю как у кого у меня тока проблем с затыками в базе или проблеммами по передачи лога не было.


"RE: Ограничение по объему трафика за определенный срок"
Отправлено Михаил , 04-Фев-03 15:32 
>У меня проблемма не только в ограничении обьемма скачиваемой информации, но и
>в контроле, тоесть я должен отслеживать кто, гдеи когда, что забирал.
>
>Поэтому приходится сбрасываль логи в базу, для дальнейшей обработки, это на много
>удобнее нежели просматривать весь лог, или использовать тотже SARG (кстати не
>плохой анализатор).
>
>А по поводу обьемов, то это зависит от канала и количества пользователей
>у меня их 12 штук, и каждые 10 минут я сбрасываю
>лог. Не знаю как у кого у меня тока проблем с
>затыками в базе или проблеммами по передачи лога не было.

сейчас у меня стоит SARG каждые 10 минут, но даже в тестовом режиме (около 5 пользователей) он лопатит 2 мега дневного лога порядка 20 секунд с полной загрузкой диска и процессора, что весьма неприятно при работе. а что будет, когда пользователей будет  около 100?

может, кто-то подкинет идейку, как сюда прикрутить пайп?


"RE: Ограничение по объему трафика за определенный срок"
Отправлено netscorpion , 04-Фев-03 15:46 
>>у меня их 12 штук, и каждые 10 минут я сбрасываю
>>лог. Не знаю как у кого у меня тока проблем с
>>затыками в базе или проблеммами по передачи лога не было.
>
>сейчас у меня стоит SARG каждые 10 минут, но даже в тестовом
>режиме (около 5 пользователей) он лопатит 2 мега дневного лога порядка
>20 секунд с полной загрузкой диска и процессора, что весьма неприятно
>при работе. а что будет, когда пользователей будет  около 100?

Вопрос на засыпку, а на хрена запускать SARG каждые 10 минут запускать?
Он очеть долго генерит отчеты.
Кстати если необходимо просто подсчитывать трафик можно
воспользоватся чемнибуть меанее тяжеловесным, или сомому написать, кстати лог прокручавается достаочно быстро, у меня он конечно не большой, но если очень приспичит не надо забывать о ротации лога, и если хочеш можеш проводить ротацию после каждого запуска счетчика



"RE: Ограничение по объему трафика за определенный срок"
Отправлено Michael , 05-Фев-03 08:41 
>Вопрос на засыпку, а на хрена запускать SARG каждые 10 минут запускать?
чтобы иметь оперативную статистику в течение дня.

видимо, избежать периодического перелопачивания лога пока избежать не удастся (пусть даже и не SARG-ом) - необходимо ограничивать ежедневный объем пользователей и/или вводить квоты на этот объем...

если возможно - подскажите что-нибудь менее монстроидальное...


"RE: Ограничение по объему трафика за определенный срок"
Отправлено netscorpion , 05-Фев-03 11:09 
>если возможно - подскажите что-нибудь менее монстроидальное...
Посмотри вот этот скриптик, в принцепе весьма шустрый, но производит расчет только по IP.

http://www.noolab.ru/docs/scripts/pstat/description.html

P.S. На http://squid.directnet.ru/Scripts/ есть масса всяких анализаторов, но какие из них самые шустрые этого я не могу сказать



"RE: Ограничение по объему трафика за определенный срок"
Отправлено MityOk , 07-Фев-03 17:58 
>>Вопрос на засыпку, а на хрена запускать SARG каждые 10 минут запускать?
>чтобы иметь оперативную статистику в течение дня.
Но ведь не обязательно ТАК статистику собирать...
>видимо, избежать периодического перелопачивания лога пока избежать не удастся (пусть даже и
>не SARG-ом) - необходимо ограничивать ежедневный объем пользователей и/или вводить квоты
>на этот объем...

>если возможно - подскажите что-нибудь менее монстроидальное...
Ну хорошо, пусть квоты по каждому юзеру в MySQL.
А если сделать ipchains (например) -A output -d <адрес_клиента> -s <адрес_сквида> 3128,
а потом каждую минуту через скрипт снимать ipchains -L -v (можно еще и -Z) и складывать (можно с суммированием на нужный период) в ту же базу, а при надобности просто выкидывать юзера из acl и kill -HUP <PID сквида>.
Тогда это все быстрее получится. У меня 60 юзеров, лог за неделю - до 100Мб...


"RE: Ограничение по объему трафика за определенный срок"
Отправлено Lex , 05-Фев-03 07:18 
>1. Авторизация пользователей данные находятся в MySQL (кстати можно   использовати
>встроенные методы авторизации)
Кстати как делаешь авторизацию в MySQL? Встроенными средствами я обошелся, но хотелось бы...
И еще - хочу сделать чтобы каждый пользователь мог смотреть свою статичтику через браузер. Как выяснить через apache имя уже зарегистрированного в squid пользователя? Не спрашивать же у него имя и пароль еще раз.


"RE: Ограничение по объему трафика за определенный срок"
Отправлено netscorpion , 05-Фев-03 11:21 
>Кстати как делаешь авторизацию в MySQL? Встроенными средствами я обошелся, но хотелось бы...

Можно использовать скрипт из squid2mysql, но у меня он не пошел поэтому пришлось переписать самому.

>И еще - хочу сделать чтобы каждый пользователь мог смотреть свою
>статичтику через браузер. Как выяснить через apache имя уже
>зарегистрированного в squid
>пользователя? Не спрашивать же у него имя и пароль еще раз.

Нарисуй чтонибуть в таком духе на PHP

if (!($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"SquidLog\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "<html><h2>$auth_bail_out</h2></html>\n";
    exit;
    }

Описание использование переменной $PHP_AUTH_USER есть в мунале по PHP также там найдеш использование Header - ов.
Cоответственно по проверке авторизации у тебя либо пользователя попросят зарегистрироватся или прпопустят для просмотра статистики



"RE: Ограничение по объему трафика за определенный срок"
Отправлено Евгений , 05-Фев-03 09:03 
>Можно ли сделать (при помощи Squid или др программы) ограничение по количеству
>скаченных мегабаит, скажем в неделю, т.е. если юзер перекачал определенный лимит
>уже в среду, то его до понедельника отключить. Практически все проксики
>под винду на это способны, а вот в *NIX я пока
>решения не нашел.
Вообще уже готовое решение есть для этого. Скачай прогу squid2mysql. Ее найди на freshmeat.net


"RE: Ограничение по объему трафика за определенный срок"
Отправлено inn , 07-Фев-03 18:45 
Вот тут решение проблеммы.
http://explosives.narod.ru/

"Ограничение по объему трафика за определенный срок"
Отправлено neomag , 17-Сен-03 16:16 
хочу всем напомнить что трафик состоит не только из HTTP
например smtp, winmx,napster, icq, irc (dcc) по которым можно будет укачать что-угодно в обход squid,

пэтому все лог-анализаторы идут лесом.

еще например при лимите у юзера в 50 Мб, при израсходованных 49
юзер ставит качать фильм ~700 mb а скрипт узнает о превышении
после того как файл будет уже получен и запись о нем появится в логах,
и будет 749 :))