Страница 1 из 2
обрубание трафика по достижении общей квоты
Добавлено: 2007-07-30 21:52:43
gyurza2000
знаю что повторяюсь, да простит меня lissyara, но вопрос так и не был решён, а вернуться к нему всё таки пришлось
уже давно не могу придумать как решить с наименьшим геморроем задачку:
на контору даётся 2Гб инета, трафик проходит через гейт и раздаётся сетке, нужно при достижении трафика этой величины(2Гб), обрубать инет всем, кроме одного компа.
на гейте: FreeBSD6.2, IPFW, Squid, Rejik, Lightsquid
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-07-31 0:25:20
Fastman
Только сегодня поднял и оттестил SAMS. Да, считает WEB FTP, но это основной траффик, поэтому достаточно обычно.
Не могу точно сказать нравится или нет - но пока просто в восторге от web-админки. Ставится из портов - конфигурация минимальна.
У меня FreeBSD 6.1, SQUID, PHP5+Apache22+mySQL 5.x - с этой связкой SAMS реально работает. Автоматически обрубает пользователей превысивших свой лимит.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-07-31 6:53:59
gyurza2000
а может ли SAMS обрубать пользователей когда они превысят общий лимит, а не персональный...ну скажем, включить всех пользователей, кроме админа, в одну группу и установить ей лимит, а админа в другую группу - без лимитов?
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-07-31 9:26:24
Fastman
На самом деле можно, все что он делает - добавляет в squid.conf - acl-ы
Можно и без него обойтись написав пару скриптов на shell+trafd.
Я сам ставил его из-за удобной админки и хранения логов в mysql.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-01 0:30:02
gyurza2000
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, от его имени создаёт базу
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-01 15:58:35
gyurza2000
и ещё вопрос, АТС некоторое время "забирает" на соединение. То есть, реально я только набрал номер и услышал гудки (1 сек), а АТС в логи пишет 7секунд. Можно ли автоматом эти 6 секунд обрубать в ATSlog ? А то время не корректно отображается в статистике
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-01 17:30:47
Alex Keda
кто мешает пройтись по БД и вычесть нужное время, пометив в отдельной колонке, что вычел...
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-01 21:17:48
gyurza2000
э..это как делается то? Я так не умею

SQL второй раз в жизни щупаю...
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-01 21:45:31
Alex Keda
ну, добавляешь ещё одну колонку, updated int(1), а потом по крону скриптом делаешь чё-то типа такого
Код: Выделить всё
UPDATE `table` SET `duration`=`duration` - 9 WHERE `updated`!='1'
UPDATE `table` SET `updated`='1'
в один запрос запихать навскидку немогу

Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 15:28:24
gyurza2000
блин, я уже умаялся искать софтину которая бы делала вот это:
на контору даётся 2Гб инета, трафик проходит через гейт (FreeBSD6.2 + IPFW + Squid (ARP авторизация) + Rejik + Lightsquid + MySQL5) и раздаётся сетке (около 35 Windows машин), нужно при достижении ОБЩЕГО трафика этой величины(2Гб), обрубать инет всем, кроме одного компа (админского).
Пожелания: хотелось бы что бы Rejik продолжал функционировать и Squid тоже (именно с ARP аворизацией)
нужно что бы кто то написал: "Да, такая то софтина 100% это умеет делать, сам проверял". Потому что пока все доводы из области предположений или считаются персональные квоты каждого (а предположить кому сколько понадобиться каждый месяц не представляется возможным). Не хочется "трахаться" с каждой софтиной поочереди, что бы в конце концов понять - это не то.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 15:43:10
Alex Keda
помоему я уже писал, но всё же ещё раз - shell умеет.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 16:10:29
gyurza2000
shell это который командный интертрепатор ???
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 16:13:49
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'
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 18:24:54
Fastman
sevalex77 писал(а):Вот скрипт для Lightsquid обрубания траффика юзерам превысившим лимит
В этом случае будет учтен только HTTP(FTP) трафик, а человеку видимо нужно ОБЩИЙ как я понял.
Самый простой выход, считать трафик на внешнем интерфейсе (trafd - вполне адекватное по моему решение) + скрипт который по достижению лимита будет посредством ipfw добавлять правила для зарубания всех кроме одной машины.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 20:14:01
reLax
Как вариант /usr/ports/sysutils/ipa ?
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-03 20:56:23
gyurza2000
reLax писал(а):Как вариант /usr/ports/sysutils/ipa ?
а это что за зверь?
мне желательно конечно за ВСЕМ трафиком следить, но за неимением вариантов согласен и на HTTP и FTP, всё равно юзеры другое вряд ли будут использовать
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-04 9:50:31
Raven2000
Тебе подойдет
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кило для маздая и работает без проблем так что рекомендую.
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-04 23:26:00
gyurza2000
там приведён пример конфига, в нём есть следующие строки:
...
листы доступа к различным службам и адресам
ограничение пропускной способности канала каждого пользователя (чтобы пользователь не съел весь канал
качая кучу файлов в несколько потоков

)
ограничение трафика пользователя на день, неделю и месяц
ведение журналов через ODBC (по моему такого нет ни в одном proxy) и syslog и т.д
авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам
К недостаткам можно отнести это отсутствие кэширования информации
. Но в с последнее время Inernet контент становится все более динамическим (то есть не поддающийся кэшированию) и может быть для кого то экономия в 25%
трафика за счет его кэширования не будет столь критична. Для тех кому же критична, автор предлагает пока использовать цепочку из 2х серверов и в качестве кэша такие сервера как wwwoffle или им подобные, либо ждать появления поддержки кеша в 3proxy

...
1. листы доступа...у меня сейчас стоит Squid+Rejik (И режик мне очень помогает.), есть ли возможность редиректа в этой проксе?
2. авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам - у меня авторизация сейчас по MAC адресу. А как в этой проксе быть?
3. WEB морда для просмотра отчёта по трафикам имеется?
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-04 23:36:21
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'
а как им пользоваться?и что в нём что?
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-04 23:48:30
gyurza2000
видимо прийдётся остановиться на выборе между NETAMS и SAMS. Что посоветуете?
1.NETAMS, как я понимаю, вещь более серьёзная чем SAMS. Какой трафик считает NETAMS? Будет ли работать NETAMS вместе со Squid или в этом нет необходимости? Но как мне тогда прикрутить к NETAMS Rejik?Как с аутентификацией по MAC?
2.SAMS просто человеческая морда к управлению сквидом, правильно? То есть режик останется и вообще гемороя в настройке видимо будет минимум. Но и трафик он только HTTP считает, правильно? Как с аутентификацией по MAC?
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-05 0:45:29
gyurza2000
что то душа больше к SAMS лежит

Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-05 10:30:08
Raven2000
1. листы доступа...у меня сейчас стоит Squid+Rejik (И режик мне очень помогает.), есть ли возможность редиректа в этой проксе?
Да
2. авторизацию пользователей ко всем proxy службам по имени и паролю или по ip адресам - у меня авторизация сейчас по MAC адресу. А как в этой проксе быть?
тоже есть
3. WEB морда для просмотра отчёта по трафикам имеется?
Есть
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-05 10:35:08
Alex Keda
слово сквид - это почти всегда ответ - есть

Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-05 11:24:33
Fastman
gyurza2000 писал(а):что то душа больше к SAMS лежит

только советую не ставить чтение squid лога через пайп. Там 2 варианта - либо делается fifo файл через который все пишется в mysql напрямую, либо допустим раз в 5 минут запускается парсер сквидовского лога. выбирай 2 вариант. может только у меня так, но промучавшись 2 дня с 1 вариантом - забыл как страшный сон ) А во вторых сквидовский лог остается целым и невредимым )
Re: обрубание трафика по достижении общей квоты
Добавлено: 2007-08-05 16:49:33
sevalex77
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