Страница 1 из 1
Лимиты на трафик
Добавлено: 2007-08-25 19:29:37
aliet
Доброго времени суток!
Есть гейт на фре 5.4. Нужно ограничить интернет-трафик пользователей. Как реализовать по возможности проще и быстрее?
Re: Лимиты на трафик
Добавлено: 2007-08-25 19:42:56
dikens3
Смотря как ходят пользователи, только squid?
Тогда список составляешь, и меняешь по крону (удаляешь пользователя из списка) при превышении лимита.
Re: Лимиты на трафик
Добавлено: 2007-08-25 22:40:59
Alex Keda
aliet писал(а):Доброго времени суток!
Есть гейт на фре 5.4. Нужно ограничить интернет-трафик пользователей. Как реализовать по возможности проще и быстрее?
неправильный вопрос - как итог невозможно ответить.
вариантов как у тя организована раздача инета - просто масса....
Re: Лимиты на трафик
Добавлено: 2007-08-26 9:38:04
aliet
dikens3 писал(а):Смотря как ходят пользователи, только squid?
Тогда список составляешь, и меняешь по крону (удаляешь пользователя из списка) при превышении лимита.
На гейте nat+ipfw. Сквид есть, но мне же не только http резать надо! У нас народ активно почту пользует и фтп - их тоже резать надо по общей сумме.
lissyara писал(а):неправильный вопрос - как итог невозможно ответить.
вариантов как у тя организована раздача инета - просто масса....
Статистика по трафику собирается через netflow, потом запихивается в базу мускула. Хотел сделать запрос к базе по крону - рещение не прошло, т.к. база огромна, запрос выполняется долго - получится сильно неоперативно

Re: Лимиты на трафик
Добавлено: 2007-08-26 10:29:53
Alex Keda
ну так суммируй по дням в отдельную таблицу
Re: Лимиты на трафик
Добавлено: 2007-08-26 11:50:29
dikens3
У меня такое действо (запрос + блок ) занимает одну минуту в сумме. Но на всех пользователей.
переделывай базу, индексы включай и т.д.
Re: Лимиты на трафик
Добавлено: 2007-08-30 10:00:33
aliet
dikens3 писал(а):У меня такое действо (запрос + блок ) занимает одну минуту в сумме. Но на всех пользователей.
переделывай базу, индексы включай и т.д.
У меня база размером 4,5 Гб, запрос занимает около 5 минут, соотв. ~10Мб\сек - скорость винта

Подскажи, плз, как у тебя база организована и каким образом ты пользователей блокируешь?
lissyara писал(а):ну так суммируй по дням в отдельную таблицу
А смысл? у меня просто база огромная

хотя организована она наверное неоптимально - у меня там поля IP отправителя и получателя - текстовые, а остальные - int. Храню инфу за 100 дней, все, что старше по крону ночью убивается. Подскажи, как базу оптимизировать? может резать ее по месяцам? и как потом в ipfw правила через скриптик добавить, для блокирования пользователей?
Re: Лимиты на трафик
Добавлено: 2007-08-30 10:08:41
Alex Keda
и правда....
какой смысл - пробегать по миллиону записей, если можно по сотне....
Re: Лимиты на трафик
Добавлено: 2007-08-30 10:36:01
dikens3
Ну я завёл у каждого пользователя поля Лимит и Реальное количество прошедшего трафика.
В течении дня данные прошедшего трафика изменяются и сравниваются с лимитом. + ещё поле, ACTIVE=Y или N
Согласно этим полям я выдираю IP-Адреса ACTIVE=Y и создаю таблицу в IPFW
А в конце для забиваю траффик в логи, уже суммированный как мне надо.
Получается на каждого пользователя около 10 записей в день.
Re: Лимиты на трафик
Добавлено: 2007-09-04 10:35:59
aliet
dikens3 писал(а):
Согласно этим полям я выдираю IP-Адреса ACTIVE=Y и создаю таблицу в IPFW
А в конце для забиваю траффик в логи, уже суммированный как мне надо.
Получается на каждого пользователя около 10 записей в день.
Можно эту часть поподробнее расписать? ЖЕлательно прямо в виде how-to

Re: Лимиты на трафик
Добавлено: 2007-09-04 13:07:18
dikens3
У меня времени нет писать How-to. (Я давно учёт писал, и сам нифига не помню, рабираться лень)
Сделано в базе postgresql и pgbash
Код: Выделить всё
# Блокируем превысивших лимит траффика
exec_sql -qATB "UPDATE \"$groups\" SET active='N' WHERE world > traffic;"
Типа того. :-)
У меня список IP действующих пользователей (active=Y) скидывается в файл и потом:
Код: Выделить всё
ipfw table 3 f
mynets=$(cat activeusers)
for ip in $mynets
do
ipfw table 3 add $ip
done
Примерно так.