LINUX.ORG.RU

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

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

Пробовал как то sarg испольховать... так он каждый раз разные результаты выдавал, при том что в это время инетом никто не пользовался...

nau
()

Вполне обхожусь своими "костылями". На отработку лога squid-а в 25М тратится 2-3 сек. При превышении лимита трафика юзверя выкидывает из passwd. Интервал по крону - 5 минут. Дёшево и сердито, и главное начальство довольно :)

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

ну-ну, продолжайте строить и использовать подпорочки и костыльчики. :)

anonymous
()

Дизайн какой-то чудный - под сам текст треть места на странице, остальное фон.

fagot ★★★★★
()

Эх. Помню как года 3 назад писал программку для обсчета логов в реальном времени для Internet-кафе. Пронцип как у "tail -f".
Как только пользователь привысил лимит - его сразу отрубают. И не надо ждать 5 минут и нагружать процессор при обсчете логов.
Программа до сих пор считает трафик в этом заведении. Все довольны.

Так что и на Squid'e можно нормально обсчитвать трафик. Без всяких "костылей".

PS.
Sarg - всегда правильно обсчитывал логи.

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

А если юзер поставил тянуться десятигигабайтный файл, который вытянется целиком и попадет в лог одной строкой.
А лимит, к примеру 100M.
Как твоим методом достигается нужный результат?

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

Ну как. Объясняешь начальству -- так, мол, и так... не доглядели :( Ну и вазелинчику баллон трёхлитровый за спиной держишь... Так, на всякий ;)

Хорошо бы в реальном времени трафф считать ;)

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

а можно указать в squid.conf delay_parameters, например если он запрашивает файлы больше N то снижать скорость до 1200kbs, пусть тянет :-)

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

Ну это не вариант. И к тому же размер файла не всегда заранее известен

green ★★★★★
()

Люди, расскажите как _правильно_ сделать учёт трафика. Если быть совсем точным, то нужен не только учёт трафика, а полноценный биллинг.
Условия задачи таковы:
есть комп подключённый к инету через кабельный модем (eth0) и к локальной сетке в 20 компов (eth1). На компе с инетом стоит линукс с 2.6 ядром, на остальных компах в сетке винда 98/XP. Хочется дать народу из сетки инет, но обязательно нужен нормальный учёт трафика, т.к. цена за Мб инета довольно высока и на шару давать пользовать инет у меня нет ни средств, ни желания.
Требования к системе учёта:
1. нужно считать сколько мегабайт входящего и исходящего трафика использовал каждый из пользователей;
2. нужно дать возможность народу пользоваться как можно большим кол-вом различного сетевого софта использующего разные протоколы (http, ftp, irc, icq, jabber, ssh, smtp, pop3, imap4 и т.д.). Следовательно учёт трафика через squid'овские логи отпадает;
3. необходимо также сделать систему учёта устойчивой к попыткам пользователей поменять свой ip и/или mac адрес. Юзера они ведь хитрые некоторые точно попытаются посидеть в инете на халяву и/или за чужой счёт. :(
4. биллинг скорее всего должен быть организован по prepaid схеме, т.е. ко мне приходит юзер и оплачивает наперёд 100 Мб трафика, после этого он может пользоваться интернетом до тех пор, пока он не израсходует эти 100 Мб. Как только он исчерпал свой лимит интернет для него сразу же обрубается;
5. нужен хотя бы простенький веб интерфейс, через который каждый пользователь смог бы посмотреть кол-во использованного инета, а также сколько мегабайт у него осталось.

Согласно пункту 2 подходящим решением является учёт трафика с помощью цепочек iptables. Может быть существуют ещё какие-нибудь варианты учёта? Мне кто-то говорил про пакет net-acct в дебиане, это может помочь?
По пункту 3 есть подозрение что для этого нужно использовать pptpd. Так ли это? Что ещё можете посоветовать?

Очень прошу помочь, т.к. народ без инета страдает :) Прошу прощения если где-то в своих рассуждениях я неправ - для меня это новая тема.

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

По п.3 - лучше вместо pptpd выбрать pppoe. Ко всему прочему обезопасишь себя от подмены пользователем IP-шника твоего маршрутизатора.

По существу: именно такая схема - pppoe+iptables+mysql+web с завязкой на состояние лицевого счета клиента поднимается мной по заказу знакомого на его маршрутизаторе. Так что будут вопросы - пиши на vitalka_at_technodesign.ru.

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

> А если юзер поставил тянуться десятигигабайтный файл, который вытянется целиком и попадет в лог одной строкой. А лимит, к примеру 100M.

Для сквида есть патчик, после которого информация в access.log попадает кусочками (см. ftp://services.td-net.ru/pub/squid4mysql/). Так что можно закачки блокировать и в процессе.

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

dlja traffika : ipac-ng dlja togo ctobi authit i sledit ctob ne obdurjali ja slishal cto radius server horosh

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

> pppoe+iptables+mysql+web

20 пользователей = 20 процессов pppd на сервере? Жирно.

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

Спмописным биллингом, ясное дело. В этом деле каждый изобретает свой собвственный велосипед. У меня велосипед образца 1998го года, с костыляи образцов 2000го и 2001го годов ;)

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

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

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

Я бы стал работать на уровне файрволла - применительно к FreeBSD ipfw > лог на всех интерфейсах. Извини, с Линуксом никогда не работал, думаю пакеты там тоже можно считать, а потом обрабатывать статистику.

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

Кстати на фре(в 4 и 5) почему-то сквид если redirect указан выпадает с ошибкой типа не могу еще задачу поднять. Сам перегружается - далее работает нормально. С правами все нормально - иначе он бы вообще не поднялся. Все работает, но это бесит! В чем причина, так и не понял ((( Причем squid -k reconfigure нет проблем. Кто мне скажет где я что не дописал и в чем я не прав?

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

помню пару лет назад что-то подобное было
кажется решилось все увеличением параметра redirect_children

HellAngel ★★
()

Господа, а чем Вам не нравится NetAMS для подсчета трафика? Работает чУдно, считает все, что нужно. Документация на русском, примеры конфигов есть. А что еще то нужно?

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

traffic

> man arp - ключ -f либо как правильно советуют - PPPoE, а кто говорит что 20 PPPoE сеансов - пусть очнётся - PIV/Opteron стоит меньше 150USD.
как альтернатива - P100-166 и мать с socket5/7 + 4xdlink-580tx - получаете 16 портов + ещё можно пару isa 3c509b воткнуть:-)
> биллинг скорее всего должен быть организован по prepaid схеме
PPPoE опять же решает эту проблему - фактически можно применить dial-up технологии (RADIUS), под которых написана просто ТУЧА программ да даже можно и свою написать (как сделали мы для обычного dial-up, применив FreeRADIUS и написав небольшой скрипт для pppd для учёта предоплатников)
для PPPoE - всё точно также. на самом деле - RADIUS - это тоже круто. только сразу с БД завяжитесь - проще будет стат-ку снимать и редактировать записи.
> с помощью цепочек iptables
советую посмотреть на QUEUE - я писал прогу под это для учета в игровом клубе под asta - это несложно.
net-acct - плоха тем что полузется pcap со всеми вытекющими.
у ipac-ng - свои гуси но по крайне мере меня он устроил.:-)
с bugtraq: "pptpd flawed by design".:-)

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

traffic

> Попробуй netbilling
он труп.
по сравнению с ipac-ng - отстой.

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

traffic

> чем Вам не нравится NetAMS
сложный он в настройке и какой-то слишком монстроидальный (c++?)

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

>А лимит, к примеру 100M.
>Как твоим методом достигается нужный результат?
Никак. Заказчик был предупрежден об этом.
Это его как раз и устраивает.

Как еще кроме squid'а (или дрyгого proxy) с авторизацией вести учет, если некоторые пользователи работают на терминальном сервере или по X11-протоколу.

anonymous
()
Ответ на: traffic от mumpster

Ну так сразу и URL на патчи бы дал или ключевые слова для гугля ;)

green ★★★★★
()

Ну с "дискретным биллингом все ясно" - есть некие счетчики (iptables, ipfw, traffd - по вкусу) и вы раз в час с них статистику снимаете. А вот как организовать эффективный (не жрущий все процессорное время) биллинг в реальном времени? поделитесь опытом/идеями?

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

Traffic

> дискретным биллингом
в смысле - дискретынй?
он в любом случае - дискретный. по определению.
Вы имеете, наверное, в виду т.н. :"online billing"?
дык с помошью iptables можно это легко организовать:
QUEUE и своя прога - руби пожалуйста на лету!
вопрос лишь в том чтобы праивльно организовать быстрый просмотр таблицы в памяти (видимо hash/btree, может ещё что-то типа patricia)
недоделанный образец можно взять на моём хомяке.

mumpster ★★★★★
()
Ответ на: Traffic от mumpster

в смысле на лету? вот тут поподробней плиз :) принимая через пайп информацию о пакетах? и записывая каждый пакет в БД? а мускуль раком не встанет?

anonymous
()
Ответ на: yo от mumpster

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

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

У разных юзеров, разумеется, разный лимит. И этот лимит не статический, само собой.

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

yo

> через пайп
я где-то это слово сказал?
я сказал QUEUE. это RTNETLINK. man iptables.
каждый - не надо. но вот лимиты через QUEUE сделать - элементарно.

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

traffic

> лимит превышен, но есть еще открытые коннекшены
если по превышению лимита делать -k reconfigure - то точно сбросит :-)
а вообще - таки-да, проблемка. честно говоря - мне ещё лично не надо было этим заниматься. всё равно начальство обычно устраивает по границе дня.

mumpster ★★★★★
()
Ответ на: traffic от mumpster

-k reconfigure таки не вариант, потому как он всех сбросит. И далеко не все коннекшены которые он собросит можно будет потом попытаться открыть заново.

green ★★★★★
()
Ответ на: yo от mumpster

у меня нет iptables ;-) у меня есть ipfw, ipf, pf ;-) или traffd

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

traffic

ну и чо вы тут делаете тогда?
я вам ничем не помогу.

mumpster ★★★★★
()

чем логи мурыжить не проще ли собрать сквид с snmp и выковыривать время от времени суммарный трафик по каждому IP командой типа:

snmpwalk -Cc -O u -c public -v 1 localhost:3401 .1.3.6.1.4.1.3495.1.5.2.1.3

получаем вывод типа : enterprises.3495.1.5.2.1.3.172.21.2.113 = Counter32: 722 enterprises.3495.1.5.2.1.3.172.24.4.123 = Counter32: 3231 enterprises.3495.1.5.2.1.3.172.23.17.123 = Counter32: 6569 enterprises.3495.1.5.2.1.3.172.23.32.117 = Counter32: 2835 enterprises.3495.1.5.2.1.3.172.23.18.120 = Counter32: 29 enterprises.3495.1.5.2.1.3.172.23.35.130 = Counter32: 15 enterprises.3495.1.5.2.1.3.172.19.43.132 = Counter32: 1087 enterprises.3495.1.5.2.1.3.172.23.23.119 = Counter32: 9034

выковыриваем адрес и килобайты, сравниваем с заданным порогом, попал за порог - айпишник в файл, http_access deny all _файл_, squid -k reconfigure. вот такое имхо

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

и рестарт сквиду в 12 ночи для сброса счетчиков

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

Этот вариант предполагает расчет и лимитирование траффика по IP.
Но в некоторых местах с одного IP в разное время могут работать разные пользователи.
И лимитировать нужно именно пользователей. Вот тут и приходится парсить логи.

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

Грин, а ведь можно сделать правило по привязке к id юзера.

Что нибудь типа, это для OpenBSD.

pass in on fxp0 inet proto tcp from any to any port www user lenka \

keep state

Потом смотришь счетчик по этому правилу, и принимаешь решение

ИМХО гораздо более оперативнее и проще чем логи парсить.

Sun-ch
()
Ответ на: комментарий от Sun-ch

А кто сказал что юзера локальные? юзера ходят с совсем других тачек. Через squid. Откуда firewall узнает для какого там юзера сейчас squid тянет ентот файл... Нет, пускать всех напрямую тоже не предлагать (да и как оно узнает что то что для x.x.x.10 сейчас тянется э то для юзера вася, а юзер лена оттуда ушел 5 минут назад)

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

Дык юзер авторизоватся должен через соху, тогда правило станет активным

и сколько ему отдали по этому правилу и считается.

А откуда реально трафик идет из инета или из локального кеша его не

касается вроде так?

Sun-ch
()
Ответ на: комментарий от green

И вообще логи парсить под большой нагрузко - тухлое дело.

Статистику со сквида можно собирать чере SNMP, глянь на файл mib.txt

CacheClientEntry ::= SEQUENCE {

Там счетчики типа cacheClientHttpKb и т.д.

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