обрубание трафика по достижении общей квоты

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-07-30 21:52:43

знаю что повторяюсь, да простит меня lissyara, но вопрос так и не был решён, а вернуться к нему всё таки пришлось

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

на гейте: FreeBSD6.2, IPFW, Squid, Rejik, Lightsquid
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Хостинговая компания 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/

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Fastman » 2007-07-31 0:25:20

Только сегодня поднял и оттестил SAMS. Да, считает WEB FTP, но это основной траффик, поэтому достаточно обычно.
Не могу точно сказать нравится или нет - но пока просто в восторге от web-админки. Ставится из портов - конфигурация минимальна.
У меня FreeBSD 6.1, SQUID, PHP5+Apache22+mySQL 5.x - с этой связкой SAMS реально работает. Автоматически обрубает пользователей превысивших свой лимит.
Главное в жизни здоровье и любовь, остальное я все куплю.

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-07-31 6:53:59

а может ли SAMS обрубать пользователей когда они превысят общий лимит, а не персональный...ну скажем, включить всех пользователей, кроме админа, в одну группу и установить ей лимит, а админа в другую группу - без лимитов?
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Fastman » 2007-07-31 9:26:24

На самом деле можно, все что он делает - добавляет в squid.conf - acl-ы
Можно и без него обойтись написав пару скриптов на shell+trafd.
Я сам ставил его из-за удобной админки и хранения логов в mysql.

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-01 0:30:02

Help me...у меня FreeBSD 6.2, MySQL 5.0.27, Apache 1.3.37, PHP5-5.2.3, Squid 2.6.13, SAMS 20070524.

установил из портов, файлы конечно же легли не по тем местам, которые описаны тут: http://sams.perm.ru/ , но я их нашёл и попытался создать пользователя sams в MySQL (по инструкции) и так далее. Собственно "так далее так и не получилось". Пользователя не создаёт ни вручную ни с помощью тех самых скриптов. Соответственно и базу в MySQL не создаёт, так как нет пользователя...

пробовал в sams.conf прописывать root, от его имени создаёт базу
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-01 15:58:35

и ещё вопрос, АТС некоторое время "забирает" на соединение. То есть, реально я только набрал номер и услышал гудки (1 сек), а АТС в логи пишет 7секунд. Можно ли автоматом эти 6 секунд обрубать в ATSlog ? А то время не корректно отображается в статистике
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

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

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Alex Keda » 2007-08-01 17:30:47

кто мешает пройтись по БД и вычесть нужное время, пометив в отдельной колонке, что вычел...
Убей их всех! Бог потом рассортирует...

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-01 21:17:48

э..это как делается то? Я так не умею :( SQL второй раз в жизни щупаю...
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

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

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Alex Keda » 2007-08-01 21:45:31

ну, добавляешь ещё одну колонку, updated int(1), а потом по крону скриптом делаешь чё-то типа такого

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

UPDATE `table` SET `duration`=`duration` - 9 WHERE `updated`!='1'
UPDATE `table` SET `updated`='1'
в один запрос запихать навскидку немогу :(
Убей их всех! Бог потом рассортирует...

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-03 15:28:24

блин, я уже умаялся искать софтину которая бы делала вот это:

на контору даётся 2Гб инета, трафик проходит через гейт (FreeBSD6.2 + IPFW + Squid (ARP авторизация) + Rejik + Lightsquid + MySQL5) и раздаётся сетке (около 35 Windows машин), нужно при достижении ОБЩЕГО трафика этой величины(2Гб), обрубать инет всем, кроме одного компа (админского).

Пожелания: хотелось бы что бы Rejik продолжал функционировать и Squid тоже (именно с ARP аворизацией)

нужно что бы кто то написал: "Да, такая то софтина 100% это умеет делать, сам проверял". Потому что пока все доводы из области предположений или считаются персональные квоты каждого (а предположить кому сколько понадобиться каждый месяц не представляется возможным). Не хочется "трахаться" с каждой софтиной поочереди, что бы в конце концов понять - это не то.
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

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

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Alex Keda » 2007-08-03 15:43:10

помоему я уже писал, но всё же ещё раз - shell умеет.
Убей их всех! Бог потом рассортирует...

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-03 16:10:29

shell это который командный интертрепатор ???
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Аватара пользователя
sevalex77
сержант
Сообщения: 163
Зарегистрирован: 2006-08-18 12:56:56
Откуда: Ульяновск
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение sevalex77 » 2007-08-03 16:13:49

Вот скрипт для Lightsquid обрубания траффика юзерам превысившим лимит

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

#!/usr/bin/perl 
# 
# LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL 
# 
# This program is free software; you can redistribute it and/or 
# modify it under the terms of the GNU General Public License 
# as published by the Free Software Foundation; either version 2 
# of the License, or (at your option) any later version. 
# 
# detail see in gnugpl.txt 
# Show mont user list 
 
use File::Basename; 
push (@INC,(fileparse($0))[1]); 
 
require "lightsquid.cfg"; 
require "common.pl"; 
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime; 
$year=sprintf("%02d",$year+1900); 
$month=sprintf("%02d",$mon+1); 
 
$filter="$year$month"; 
 
@daylist=glob("$reportpath/$filter*"); 
 
foreach $daypath (sort @daylist) { 
  open FF,"<$daypath/.total"; 
#  GetRealName($daypath,"?"); # init realname for day 
  while (<FF>) { 
    ($user,$size,$hit)=split; 
    $h{$user}{size}+=$size; 
    $h{$user}{hit}+=$hit; 
  }   
  close FF; 
} 
 
  open FF,"</usr/local/squid/limit"; 
  while (<FF>) { 
    ($user,$limit)=split; 
    $tt{$user}{limit}=$limit; 
  }   
  close FF; 
 
    open FF,">","/usr/local/squid/blocked_users"; 
 
foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys     %h) { 
    print FF ("$user\n") if ($h{$user}{size} > $tt{$user}{limit}); 
} 
close FF; 
 
exec '/usr/local/squid/sbin/squid -k reconfigure' 
 
"Принять решение намного легче, если у тебя нет выбора"

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Fastman » 2007-08-03 18:24:54

sevalex77 писал(а):Вот скрипт для Lightsquid обрубания траффика юзерам превысившим лимит
В этом случае будет учтен только HTTP(FTP) трафик, а человеку видимо нужно ОБЩИЙ как я понял.

Самый простой выход, считать трафик на внешнем интерфейсе (trafd - вполне адекватное по моему решение) + скрипт который по достижению лимита будет посредством ipfw добавлять правила для зарубания всех кроме одной машины.
Главное в жизни здоровье и любовь, остальное я все куплю.

reLax
лейтенант
Сообщения: 638
Зарегистрирован: 2007-04-08 5:50:16

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение reLax » 2007-08-03 20:14:01

Как вариант /usr/ports/sysutils/ipa ?

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-03 20:56:23

reLax писал(а):Как вариант /usr/ports/sysutils/ipa ?
а это что за зверь?

мне желательно конечно за ВСЕМ трафиком следить, но за неимением вариантов согласен и на HTTP и FTP, всё равно юзеры другое вряд ли будут использовать
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Аватара пользователя
Raven2000
-=_UNIX_=-
Сообщения: 4427
Зарегистрирован: 2006-10-29 17:59:13
Откуда: Там, где нас нет.
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Raven2000 » 2007-08-04 9:50:31

Тебе подойдет 3proxy tiny free proxy server
3proxy это маленький многоплатформный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии). Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining), ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д. (3proxy). Он создан в рассчете на то, чтобы быть маленьким и простым (я бы хотел сказать еще и безопасным, но пока поостерегуюсь - сервер в стадии бета-тестирования) и в то же время функциональным. Он может быть скомпилирован как с помощью Visual C так и с помощью gcc. Версия под Win32 использует родные библиотеки (т.е. не требуется Cygwin или другие POSIX-эмуляторы), поддерживается установка в качестве сервиса. На сегодняшний день работоспособность проверена на Windows 98/NT/2000/2003/XP/x64, FreeBSD/i386, NetBSD/i386, OpenBSD/i386, Linux/i386, Linux/PPC, Linux/Alpha, Mac OS X/PPC, Solaris 10/i386. Полный список возможностей см. Release Notes и Changes.
3proxy является FreeWare и может быть использован по лицензии GNU/GPL или под собственной лицензией. Начиная с версии 0.6 Используется лицензия типа BSD, позволяющая, так же, использовать LGPL, Apache License и многие другие совместимые типы лицензирования.
Он и делает счетчика на каждого узверя и можно вем статистику через него + каналы режет по группам + можно что бы сожрали например весь траф а почту оставить нужно
В общем мне понравился супер даже под винду пашет на +5
Port 3proxy-0.5.3h
Шестерки в портах нету качай тут
Если что помогу с конфигом. Эта прога очень интерестна 300кило для маздая и работает без проблем так что рекомендую.
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-04 23:26:00

там приведён пример конфига, в нём есть следующие строки:
...листы доступа к различным службам и адресам
ограничение пропускной способности канала каждого пользователя (чтобы пользователь не съел весь канал
качая кучу файлов в несколько потоков :) )
ограничение трафика пользователя на день, неделю и месяц
ведение журналов через ODBC (по моему такого нет ни в одном proxy) и syslog и т.д
авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам
К недостаткам можно отнести это отсутствие кэширования информации :-|. Но в с последнее время Inernet контент становится все более динамическим (то есть не поддающийся кэшированию) и может быть для кого то экономия в 25%
трафика за счет его кэширования не будет столь критична. Для тех кому же критична, автор предлагает пока использовать цепочку из 2х серверов и в качестве кэша такие сервера как wwwoffle или им подобные, либо ждать появления поддержки кеша в 3proxy :)...
1. листы доступа...у меня сейчас стоит Squid+Rejik (И режик мне очень помогает.), есть ли возможность редиректа в этой проксе?
2. авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам - у меня авторизация сейчас по MAC адресу. А как в этой проксе быть?
3. WEB морда для просмотра отчёта по трафикам имеется?
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-04 23:36:21

sevalex77 писал(а):Вот скрипт для Lightsquid обрубания траффика юзерам превысившим лимит

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

#!/usr/bin/perl 
# 
# LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL 
# 
# This program is free software; you can redistribute it and/or 
# modify it under the terms of the GNU General Public License 
# as published by the Free Software Foundation; either version 2 
# of the License, or (at your option) any later version. 
# 
# detail see in gnugpl.txt 
# Show mont user list 
 
use File::Basename; 
push (@INC,(fileparse($0))[1]); 
 
require "lightsquid.cfg"; 
require "common.pl"; 
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime; 
$year=sprintf("%02d",$year+1900); 
$month=sprintf("%02d",$mon+1); 
 
$filter="$year$month"; 
 
@daylist=glob("$reportpath/$filter*"); 
 
foreach $daypath (sort @daylist) { 
  open FF,"<$daypath/.total"; 
#  GetRealName($daypath,"?"); # init realname for day 
  while (<FF>) { 
    ($user,$size,$hit)=split; 
    $h{$user}{size}+=$size; 
    $h{$user}{hit}+=$hit; 
  }   
  close FF; 
} 
 
  open FF,"</usr/local/squid/limit"; 
  while (<FF>) { 
    ($user,$limit)=split; 
    $tt{$user}{limit}=$limit; 
  }   
  close FF; 
 
    open FF,">","/usr/local/squid/blocked_users"; 
 
foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys     %h) { 
    print FF ("$user\n") if ($h{$user}{size} > $tt{$user}{limit}); 
} 
close FF; 
 
exec '/usr/local/squid/sbin/squid -k reconfigure' 
 
а как им пользоваться?и что в нём что?
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-04 23:48:30

видимо прийдётся остановиться на выборе между NETAMS и SAMS. Что посоветуете?
1.NETAMS, как я понимаю, вещь более серьёзная чем SAMS. Какой трафик считает NETAMS? Будет ли работать NETAMS вместе со Squid или в этом нет необходимости? Но как мне тогда прикрутить к NETAMS Rejik?Как с аутентификацией по MAC?
2.SAMS просто человеческая морда к управлению сквидом, правильно? То есть режик останется и вообще гемороя в настройке видимо будет минимум. Но и трафик он только HTTP считает, правильно? Как с аутентификацией по MAC?
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

gyurza2000
лейтенант
Сообщения: 895
Зарегистрирован: 2007-07-08 23:53:20
Откуда: SPb
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение gyurza2000 » 2007-08-05 0:45:29

что то душа больше к SAMS лежит :)
Xeon X5460, RAM 8Gb, FreeBSD 13.1-RELEASE on amd64, Apache 2.4, PHP 7.3.30, MySQL 5.7, Exim 4.95_5, Dovecot 2.3.19.1

Аватара пользователя
Raven2000
-=_UNIX_=-
Сообщения: 4427
Зарегистрирован: 2006-10-29 17:59:13
Откуда: Там, где нас нет.
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Raven2000 » 2007-08-05 10:30:08

1. листы доступа...у меня сейчас стоит Squid+Rejik (И режик мне очень помогает.), есть ли возможность редиректа в этой проксе?
Да
2. авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам - у меня авторизация сейчас по MAC адресу. А как в этой проксе быть?
тоже есть
3. WEB морда для просмотра отчёта по трафикам имеется?
Есть
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

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

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Alex Keda » 2007-08-05 10:35:08

слово сквид - это почти всегда ответ - есть :)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Fastman
ст. лейтенант
Сообщения: 1236
Зарегистрирован: 2006-07-07 10:20:38
Откуда: Минск. РБ

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение Fastman » 2007-08-05 11:24:33

gyurza2000 писал(а):что то душа больше к SAMS лежит :)
только советую не ставить чтение squid лога через пайп. Там 2 варианта - либо делается fifo файл через который все пишется в mysql напрямую, либо допустим раз в 5 минут запускается парсер сквидовского лога. выбирай 2 вариант. может только у меня так, но промучавшись 2 дня с 1 вариантом - забыл как страшный сон ) А во вторых сквидовский лог остается целым и невредимым )
Главное в жизни здоровье и любовь, остальное я все куплю.

Аватара пользователя
sevalex77
сержант
Сообщения: 163
Зарегистрирован: 2006-08-18 12:56:56
Откуда: Ульяновск
Контактная информация:

Re: обрубание трафика по достижении общей квоты

Непрочитанное сообщение sevalex77 » 2007-08-05 16:49:33

gyurza2000 писал(а):
sevalex77 писал(а):Вот скрипт для Lightsquid обрубания траффика юзерам превысившим лимит

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

#!/usr/bin/perl 
# 
# LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL 
# 
# This program is free software; you can redistribute it and/or 
# modify it under the terms of the GNU General Public License 
# as published by the Free Software Foundation; either version 2 
# of the License, or (at your option) any later version. 
# 
# detail see in gnugpl.txt 
# Show mont user list 
 
use File::Basename; 
push (@INC,(fileparse($0))[1]); 
 
require "lightsquid.cfg"; 
require "common.pl"; 
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime; 
$year=sprintf("%02d",$year+1900); 
$month=sprintf("%02d",$mon+1); 
 
$filter="$year$month"; 
 
@daylist=glob("$reportpath/$filter*"); 
 
foreach $daypath (sort @daylist) { 
  open FF,"<$daypath/.total"; 
#  GetRealName($daypath,"?"); # init realname for day 
  while (<FF>) { 
    ($user,$size,$hit)=split; 
    $h{$user}{size}+=$size; 
    $h{$user}{hit}+=$hit; 
  }   
  close FF; 
} 
 
  open FF,"</usr/local/squid/limit"; 
  while (<FF>) { 
    ($user,$limit)=split; 
    $tt{$user}{limit}=$limit; 
  }   
  close FF; 
 
    open FF,">","/usr/local/squid/blocked_users"; 
 
foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys     %h) { 
    print FF ("$user\n") if ($h{$user}{size} > $tt{$user}{limit}); 
} 
close FF; 
 
exec '/usr/local/squid/sbin/squid -k reconfigure' 
 
а как им пользоваться?и что в нём что?
Создаешь например файл block.pl, который содержит этот срипт в любой директории, например в /usr/local/etc/squid. Запихиваешь его в рутовый cron, например раз в 10 минут. Создаешь также файл limit и blocked_users /usr/local/etc/squid. В limit добавляешь квоты для каждого юзера. У меня авторизация по логину и паролю. Соответственно будет так: user 100000000 - ''этот пользователь может скачать 100 mb за месяц, трафик обнуляется в конце месяца. Добавляешь пользователя по одному в строке с его квотой. После превышения этот пользователь добавиться в blocked_users. В конфиге squid прописываешь

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

acl users proxy_auth REQUIRED
acl banusers proxy_auth "/usr/local/etc/squid/blocked_users"
http_access allow aolaccess banusers
http_access deny banusers
http_access allow users
http_access deny all
"Принять решение намного легче, если у тебя нет выбора"