LINUX.ORG.RU

Новая версия SAMS для управления пользователями работающими через Squid


0

0

SAMS (Squid Account Management System) - программное средство для настройки и администрирования доступа пользователей к прокси-серверу SQUID с использованием авторизации ntlm в домене Windows, basic и по ip адресу.

Поддерживается отключение пользователей при превышении заданного лимита и ограничение трафика по группам. В качестве БД используется MySQL.

В новой версии добавлена поддержка работы с ActiveDirectory, добавлена работа с диапазонами бесплатных ip адресов, введена возможность задания размера Мегабайта и Килобайта так, как их считает ваш провайдер :) и др.

>>> Подробности

а проблема закачки больших файлов решена?

т.е. если у меня лимит 100 MB, а я делаю 10 запросов в течение 30 сек. на скачивание 10 файлов размером 700 MB каждый?

anonymous
()

>В качестве БД используется MySQL

а libbdi использовать не судьба? нафик этот глючный мусккль

anonymous
()

Сразу говорю - фуфло.

Адреса (подсети?) могут быть не только бесплатные, но и просто отличаться ценой от остальных. А еще есть различия по времени суток, дню недели и т.д. На слабых серверах, обслуживающих до 25 машин тоже не покатит. Потом - провайдеры как правило считают НЕ чистый траффик, а траф на интерфейсе, так что расхождение у сквида с ним будет серьезное и "возможность задания размера Мегабайта и Килобайта так, как их считает ваш провайдер" - это не выход. А если стоимость трафа меняется в зависимости от месячного потребления?

Вобщем, дай Бог мне дописать свою биллинговую систему.

k0l0b0k.

anonymous
()
Ответ на: комментарий от anonymous

Каждый админ должен настроить sendmail, написать биллинг.... ? :)

AngryElf ★★★★★
()

Не программа, а жёсткий глюк. У меня всего два активных пользователя, и несколько отрубленных - пускает всех. Пользователей при превышении трафика не отрубает, с двадцатого раза начала считать трафик, сначала были сплошные segfault при парсинге правильного лога squid'a, флаги оптимизации все выключены, пробовал gcc 2.95.3, 3.3.6, 3.4.4 (сейчас, правда, после двух перезагрузок снова трафик перестала считать - хотя я в системе ниодного файла не трогал). PHP интерфейс написан с register globals = on ... Грустно

birdie ★★★★★
()
Ответ на: комментарий от anonymous

IMHO самс и биллинговая система это немного разные вещи.
Самс просто позволяет упростить задачу управления squid'ом.

Если не секрет на чем основана твоя билинговая система???
Т.е. каким образом ты получаешь трафик с сетевого интерфейса???

tugrik ★★
()
Ответ на: комментарий от birdie

Странно, я год назад ставил эту систему в одну контору - работает до сих как часы. И при переполнении квоты пользователей отрубала (правда в случае скачки больших файлов файл сначала докачивался, а потом траффик отключался). Там, правда, не надо было извращаться с различной стоимостью траффика.

volodja
()
Ответ на: комментарий от birdie

глюков там конечно хватает. у меня пользователей больше 50.
всех отрубает нормально и трафик считает тоже.

tugrik ★★
()
Ответ на: комментарий от volodja

>правда в случае скачки больших файлов файл сначала докачивался, а потом траффик отключался

в том-то и проблема. в приведенном выше примере скачаются все 10 (7000MB), т.к. все запросы были сделаны еще до того как данные о первом попали в access.log

anonymous
()
Ответ на: комментарий от anonymous

Дык назначение этой проги не считать весь трафик, а рулить доступом юзеров по http. Ну и еще одно достоинство - собираемая по юзерам статистика: можно аргументированно надавать по башке за лишний трафик

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

anonymous
()
Ответ на: комментарий от tugrik

на iptables. все почти работает, с провом совпадает, а вот проблема - прозрачного проксирования+кеш нету :(. патч customlog для squid - недоделка.

anonymous
()
Ответ на: комментарий от birdie

ХЗ. У меня RH8. Прблемы при заводке были. Но в конце концов все заработало.

tugrik ★★
()

Ну кого же может заинтересовать такая поделка с уродливым ВЕБ-интерфейсом?

anonymous
()
Ответ на: комментарий от tugrik

> -j LOG ??? > в инете говорят что при таком подходе если сервак сильно нагрузить > будет потеря траффика.

У нас на -j ULOG (а забирает ipcad) потерь нет даже если логать два гигабита в секунду (forward трафика с гигабитного интерфейса на гигабитный, логается там и там - тестировали в жестких условиях пропуская этот самый гигабит). pcap в этих условиях давал очень большие потери...

anonymous
()
Ответ на: комментарий от anonymous

Действительно, это ж не билинг что вы пристали. segfault действительно присутствует при парсе логов squid но это обходится использованием samsdaemon который каждые N вычитывает данные. Он еще ни разу не упал.

zgen ★★★★★
()

Да вобщем-то кого интересует быстрый отруб клиентов, могут посмотреть http://stc.nixdev.org/ . Там есть необходимые патчи для SQUID и модули отруба.

anonymous
()
Ответ на: комментарий от anonymous

Почти весь цивилизованный мир уже перешел на безлимитные тарифы. Они умные - уже давно поняли, что считать трафик и управлять квотами существенно дороже, чем скачанные гигабайты дорвавшихся до халявы необузданных "качков".

К тому времени, когда наши самоделкины доведут таки до ума собственные биллинговые системы, эта проблема и у нас перестанет быть актуальной.

anonymous
()

народ, никого не хочется обижать, но у вас только http по сети бегает ? ну гон же, настройте себе нормальный учет трафика... вот нет таки охота бороться с частными случаями ? не требуйте от прокси делать то, что ему не положено...

W ★★★★★
()
Ответ на: комментарий от anonymous

>У нас на -j ULOG (а забирает ipcad) потерь нет даже если логать два гигабита в секунду (forward трафика с гигабитного интерфейса на гигабитный, логается там и там - тестировали в жестких условиях пропуская этот самый гигабит). pcap в этих условиях давал очень большие потери...

Имеет значение не скорость, а кол-во пакетов в секунду. Я точно знаю, что на 50k pps у вас уже тоже были бы нехилые расхождения.

anonymous
()
Ответ на: комментарий от anonymous

>> Почти весь цивилизованный мир уже перешел на безлимитные тарифы. >> бла-бла считать трафик и управлять квотами дороже чем скачанные >> гигабайты

Зайдите на squid-cache.org в раздел squid-based products и посмотрите на список коммерческих решений на его основе. Вот первое в списке:

CacheMARA Key Features: Cache Proxy User Authentication via LDAP or NT Domain Content Control from Blue Coat Certified Bandwidth Limitation Graphical Statistics

большого различия в функционале нет. разве только в том. что оно

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

поставляется сразу на железяке.

anonymous
()
Ответ на: комментарий от anonymous

подобная система, вернее родоначальник этойб работает у нас уже лет 5 и без пролем, единственное нет у ней web-морды, да и как-то не нужно ибо админится все это несколько иначе

anonymous
()
Ответ на: комментарий от W

>народ, никого не хочется обижать, но у вас только http по сети бегает ? ну гон же, настройте себе нормальный учет трафика... вот нет таки охота бороться с частными случаями ? не требуйте от прокси делать то, что ему не положено...

Нормальный учёт трафика? Например, у меня есть куча бездисковых терминалов, которые висят на одном серваке и ходят с него в инет. Как я по ip вычислю кто куда ходил и сколько скачал?

Шире на вещи надо смотреть. Основной трафик у меня и так считается. Расхождения, конечно, есть, но не существенные - по статистике сквида вполне можно выявить злостных "качков" :)

zenith ★★★
()
Ответ на: комментарий от zenith

а у вас что почта,фтп... не используется ? странный вы какой-то....

anonymous
()
Ответ на: комментарий от anonymous

написал тут простенький парсер access.log, загоняющий данные по трафику в СУБД.
морда ко всему этому пишеться за полчаса
может кому пригодиться.

#!/usr/bin/perl
use DBI;
use URI;

$database="squid_edu";
$db_server="localhost";
$user="squid_edu";
$password="***";
$dbh=DBI->connect("DBI:mysql:$database:$db_server",$user,$password) ;

# удаляем вчерашние темповые таблицы
$del_query_ulsu="delete from ulsu_tmp";
$del_query_peer="delete from peer_tmp";
$del_query_out="delete from out_tmp";

$dbh->do($del_query_ulsu);
$dbh->do($del_query_peer);
$dbh->do($del_query_out);

# сразу после ротации squid обрабатываем его access.log
#$log_file="/usr/local/traffic/access.log.test";
#$log_file="/home/se/edu/logs/access.log.0";
$log_file="/usr/local/squid/logs/access.log.0";

# массивы надо заполнить адресами пиринговых сетей
@ulsu=('uven.ru','ulsu.ru','ulstu.ru','80.250.180','62.76.32','62.76.33','62.76. 34','62.76.35');
@peer=('mv.ru','ul.ru');

open (F, $log_file);
@access_log=<F>;
close (F);

# парсим лог файл и пихаем его в mysql
foreach (@access_log)
{
chomp($_);
($timestamp, $elapsed, $client_ip, $result_codes, $size, $method, $url, $ident, $hierarhy_code, $type)
= split (/\s+/,$_);
if (!($result_codes =~ /^NONE/ || $url =~ /^cache_object:/ || $url=~ /^error:/ || $result_codes=~/DENIE
D/))
{
# squid не дописывает в url тип протокола при методе connect, дописываем чтобы не вылетал URI
if ($method eq "CONNECT" && $url !~ /^https:/i)
{
$url = "https://$url";
}
##$url=~ s/'/_/;
# получаем из url имя хоста
$uri = URI->new ($url);
$uri = $uri->canonical;
$host = $uri->host;
# конвертируем время из unixtime в формат mysql DATE
($day, $month, $year) = (localtime ($timestamp)) [3, 4, 5];
$month++;
$year += 1900;
$dt="$year-$month-$day";
# не считаем трафик взятый из кеша
if ($result_codes !~ /_HIT/)
{
# определяем тип трафика и пихаем его в одну из трёх временных таблиц
# проверяем входит ли в имя хоста эл-т @ulsu и @peer
$ulsu_found=0;
$peer_found=0;
foreach $ulsu_cur (@ulsu){
if ($host=~m/$ulsu_cur/){
$ulsu_found=1;
last;
}
}
foreach $peer_cur (@peer){
if ($host=~m/$peer_cur/){
$peer_found=1;
last;
}
}
# заполняем временные таблицы
if ($ulsu_found){
$query="insert into ulsu_tmp (dt,ip,dst_url,size) VALUES (\"$dt\", \"$client_ip
\", \"$host\",\"$size\")";
}
elsif ($peer_found){
$query="insert into peer_tmp (dt,ip,dst_url,size) VALUES (\"$dt\", \"$client_ip
\", \"$host\",\"$size\")";
}
else {
$query="insert into out_tmp (dt,ip,dst_url,size) VALUES (\"$dt\", \"$client_ip\
", \"$host\",\"$size\")";
}
$dbh->do($query);

}
}


}

# средствами mysql суммируем трафик(с совпадающими полями dt, dst_url, ip) и добавляем его к итоговым таблицам
$query_sum_ulsu="insert into ulsu select dt, ip, dst_url, sum(size) as size_sum from ulsu_tmp group by dt, ip,
dst_url";
$query_sum_peer="insert into peer select dt, ip, dst_url, sum(size) as size_sum from peer_tmp group by dt, ip,
dst_url";
$query_sum_out="insert into out select dt, ip, dst_url, sum(size) as size_sum from out_tmp group by dt, ip, dst
_url";

$dbh->do($query_sum_ulsu);
$dbh->do($query_sum_peer);
$dbh->do($query_sum_out);

$dbh->disconnect();

se ★★
()

MakcuM кидай на мыло выложу.

NoName
()
Ответ на: комментарий от zenith

> Например, у меня есть куча бездисковых терминалов, которые висят на одном серваке и ходят с него в инет. Как я по ip вычислю кто куда ходил и сколько скачал?

вообще, к вменяемому прокси прикручивается авторизация. в случае, если тонкие клиенты ходят rdesktop'ом на terminal server, отлично прикручивается и работает ntlm-авторизация, например. а во всех других случаях -- прикрутить отдельную базу на авторизацию вовсе несложно (учитывая, что создание бездисковых клиентов во всех остальных случаях уже подразумевает определенную квалификацию).

anonymous
()
Ответ на: комментарий от anonymous

>Ну кого же может заинтересовать такая поделка с уродливым ВЕБ-интерфейсом?

Знаешь лучше?

anonymous
()
Ответ на: комментарий от anonymous

>Почти весь цивилизованный мир уже перешел на безлимитные тарифы.

Ага. Рассказывали мне, как купил один наш у немцев безлимитку. Через 1.5 месяца пришел представитель провайдера, дал 200 марок отступных и расторгнул договор.

anonymous
()
Ответ на: комментарий от anonymous

>вообще, к вменяемому прокси прикручивается авторизация.

Естественно, так и сделано в отношении http и socks прокси. Логи обоих прокси-серверов парсятся и скидываются в базу. Сам движок не представляет никаких сложностей (у меня 300-400 строк). Вот с веб-мордой пришлось основательно повозиться.

По поводу сабжа. Как здесь уже правильно заметили, register globals = on - это несерьёзно :)

zenith ★★★
()
Ответ на: комментарий от zenith

Как раз выбираю чем будем выпускать в инет сетку ~50 компов, AD, DHCP. Можно просто через NAT, можно через squid - разницы нет, лишь бы трафик считался, отрубалось исправно и авиризация была по логину/паролю. Что еще есть на рынке кроме SAMS?

anonymous
()
Ответ на: комментарий от anonymous


anonymous (*) (31.08.2005 13:02:20)

если нужно много протоколов выпускать, то тут решение вида nat+pptp+счетчики iptables, скриптом по времени в mysql

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.