Добрый день. Возникла задача ограничения пользователей при работе с Интернетом по общему времени, проведенному за текущие сутки в сети. То есть к примеру Пупкину можно провести в Интернете 1 час в день. Есть ли такая возможность в SQUIDe 2.5 (OC FC2)?
>Добрый день. Возникла задача ограничения пользователей при работе с Интернетом по общему
>времени, проведенному за текущие сутки в сети. То есть к примеру
>Пупкину можно провести в Интернете 1 час в день. Есть ли
>такая возможность в SQUIDe 2.5 (OC FC2)?
нет, нужны сторонние программы - биллинги
>>Добрый день. Возникла задача ограничения пользователей при работе с Интернетом по общему
>>времени, проведенному за текущие сутки в сети. То есть к примеру
>>Пупкину можно провести в Интернете 1 час в день. Есть ли
>>такая возможность в SQUIDe 2.5 (OC FC2)?
>нет, нужны сторонние программы - биллинги
Спасибо за ответ. Ссылки какие-нить было бы неплохо. И нельзя ли ограничиться просто скриптами, которые будут периодически запускаться и проверять лог сквида и после превышения обрубать юзера?
>Спасибо за ответ. Ссылки какие-нить было бы неплохо. И нельзя ли ограничиться
>просто скриптами, которые будут периодически запускаться и проверять лог сквида и
>после превышения обрубать юзера? геммор это ! придется все вермя анализоровать лог сквида , а если он большой, то время обработки можен занять приличное время !
Сылки на биллинг
это специфические вещи, включающие в себя СУБД типа mysql ! так что янди гугли или рамблери - впрочем могу дать урлыhttp://www.netams.com/index-rus.html бесплатно, если не нужен саппорт, а он имхо понадобится
http://www.netup.ru/
http://www.lanbilling.ru/
http://traflinux.sourceforge.net/ пока был бесплатно
http://www.lingate.ru/
http://www.onyma.ru/main.htms
http://stg.pochtamt.ru/faq.html
http://www.netams.com/
http://netgatesystem.narod.ru/
http://www.netup.ru/
http://www.onyma.ru/main.htms
http://serega.krasno.ru/billing/
http://nodeny.dp.ua/cgi-bin/nd.pl
http://www.lingate.ru/
http://bgbilling.bitel.ru/
http://www.hub.ru/modules.php?name=Web_Links&l_op=viewlink&c...
в последней урле ссылки на биллинги
что-то бесплатно, но в основном платно !кто-то вот такой еще список выкладывал цитирую :
" TA Billing - http://traflinux.sourceforge.net/
STARGAZER - http://stg.dp.ua/doc.php
FreeNiBS - http://nibs.net.ua/index.php
Вот еще небольшой список - http://opennet.ru/prog/sml/46.shtml
Вообщем есть из чего выбрать. IMHO самые удачные из всего этого многообразия - NeTAMS, Abills и TA Billing (только под Linux)"
>>Спасибо за ответ. Ссылки какие-нить было бы неплохо. И нельзя ли ограничиться
>>просто скриптами, которые будут периодически запускаться и проверять лог сквида и
>>после превышения обрубать юзера? геммор это ! придется все вермя анализоровать лог сквида , а если он большой, то время обработки можен занять приличное время !
>Сылки на биллинг
>это специфические вещи, включающие в себя СУБД типа mysql ! так
>что янди гугли или рамблери - впрочем могу дать урлы
>
>http://www.netams.com/index-rus.html бесплатно, если не нужен саппорт, а он имхо понадобится
>http://www.netup.ru/
>http://www.lanbilling.ru/
>http://traflinux.sourceforge.net/ пока был бесплатно
>http://www.lingate.ru/
>http://www.onyma.ru/main.htms
>http://stg.pochtamt.ru/faq.html
>http://www.netams.com/
>http://netgatesystem.narod.ru/
>http://www.netup.ru/
>http://www.onyma.ru/main.htms
>http://serega.krasno.ru/billing/
>http://nodeny.dp.ua/cgi-bin/nd.pl
>http://www.lingate.ru/
>http://bgbilling.bitel.ru/
>http://www.hub.ru/modules.php?name=Web_Links&l_op=viewlink&c...
>в последней урле ссылки на биллинги
>что-то бесплатно, но в основном платно !
>
>кто-то вот такой еще список выкладывал цитирую :
>
>" TA Billing - http://traflinux.sourceforge.net/
>STARGAZER - http://stg.dp.ua/doc.php
>FreeNiBS - http://nibs.net.ua/index.php
>Вот еще небольшой список - http://opennet.ru/prog/sml/46.shtml
>Вообщем есть из чего выбрать. IMHO самые удачные из всего этого многообразия
>- NeTAMS, Abills и TA Billing (только под Linux)"
Спасибо за сссылочки! Все, полез в Инет...
Мда, биллинги конечно нужны. В смысле они нужны вообще :) А вот в частности наверное не очень.Решение 3-х летней давности на базе linux + ipac-ng + чего-то свое. В принципе идея не нова :)
Ставим, настраиваем ipac-ng, согласно инструкции по эксплуатации.
файлик limit.conf
# Файл конфигурации ограничения трафика. Значения трафика в кБ. 0-неограничен
# Все поля разделены <TAB>
# Поля:
# <IPAC alias> <Адрес> <Пн> <Вт> <Ср> <Чт> <Пт> <Сб> <Вс>
serega 192.168.0.10 20000 15000 15000 15000 15000 15000 15000
dima 192.168.0.11 15000 15000 15000 15000 15000 15000 15000
natali 192.168.0.12 10000 10000 10000 10000 10000 -1 -1
buhgal 192.168.0.13 10000 10000 10000 10000 10000 -1 -1
journ 192.168.0.14 10000 10000 10000 10000 10000 -1 -1
reklama 192.168.0.15 0 15000 0 15000 15000 10000 10000В файлике iptables.tmpl пишем правила какие надо, вроде этого:
/sbin/iptables -A FORWARD -s <ipaddress> -d 10.0.0.0/8 -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -s <ipaddress> -i eth0 -j DROPНу и дальше переодически пускаем limit.pl (корректируем в зависимости от того чего используем в качестве накопителя, а может переписываем совсем. За качество кода не пинать, написано минут за 10 при почти полном отсутствии опыта в перлении):
#!/usr/bin/perl
$LIMIT_FILE="/etc/ipac-ng/limit.conf";
$IPTABLES_TEMPLATE_FILE="/etc/ipac-ng/iptables.tmpl";
$TMP_LIMIT="/etc/ipac-ng/current.tmp";
$IPACSUM="/usr/local/sbin/ipacsum -t today --fixed-quantity K > ".$TMP_LIMIT;
$RC_IPTABLES="/etc/rc.d/init.d/iptables restart > /dev/null";
$FETCHIPAC="/usr/local/sbin/fetchipac -S";my(@exec);
open AAA,"<$LIMIT_FILE";
@lista=<AAA>;
$size=@lista;
close AAA;$| = 1;
system ($IPACSUM);open AAA,"<$TMP_LIMIT";
@tmplist=<AAA>;
#Remove special strings
shift(@tmplist); shift(@tmplist); shift(@tmplist);
$sizelimit=@tmplist;
close AAA;
unlink ($TMP_LIMIT);#Remove space
for ($i=0;$i<$sizelimit;$i++) {
$tmplist[$i] =~ s/\x20//g;
}#Reset local iptables rules
system ($RC_IPTABLES);
#Main loop
for ($i=0;$i<$size;$i++) {
if ( not $lista[$i]=~ /^\#/ ) {
@record=split(/\x09/,$lista[$i]);
$traffic = get_traffic($record[0]);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
if ($wday == 0) { $wday = 7; }
if ((($traffic > $record[$wday+1] ) && ($record[$wday+1] != 0)) || ($record[$wday+1] == -1)) {
print "Close ",$record[1]," ",$record[0],"\n";
update_iptables($record[1]);
system ($FETCHIPAC);
}
}
sub get_traffic {
my(@recordt,$j,$name);
$name = $_[0];
for ($j=0;$j<$sizelimit;$j++) {
if ( $tmplist[$j]=~ /^$name/) {
@recordt=split(/\:/,$tmplist[$j]);
$recordt[1] =~ s/\K//;
return $recordt[1];
}
}
}sub update_iptables {
my(@iptmp,$sizeipt,$k);
open AAA,"<$IPTABLES_TEMPLATE_FILE";
@iptmp=<AAA>;
$sizeipt=@iptmp;
close AAA;
for ($k=0;$k<$sizeipt;$k++) {
if ( not $iptmp[$k]=~ /^\#/ ) {
$iptmp[$k]=~ s/<ipaddress>/$_[0]/g;
system($iptmp[$k]);
}
}
}