Alexander Lobanovich <bucks@plesk.com> wrote in message
news:90g3co$394$1@irs.ru...
> > Некоторые из этих функций выполняет IP Accounting Daemon (IPA) под FreeBSD.
> > Возможно дополнительные функции, которыми обладает IPA позволят
реализовать
> > требуемые задачи.
>
> А посмотреть на работающий ipa.conf можно?
>
> > Загрузить IP Accounting Daemon можно на http://www.simon.org.ua/
>
IPA смотрит на правила IP Firewall или IP Filter (можно и то и другое) и на
основании счётчиков обновляет информацию в базе. Например есть некоторые
правила IP Firewall 100, 101 и 200.2 (.2 - это третье правило из всех правил
#200), которые считают выходящий трафик на провайдера X пришем:
global {
update_db_time = 1m 30s
# обновлять информацию в базе каждые полторы минуты
acl = alexander !%staff %wheel
# разрешить просматривать правила пользователю alexander, не разрешать
группе staff и разрешить группе wheel
}
rule ISP_X _out {
ipfw = 100 101 200.2
info = Сумарный выходящий трафик на провайдера X
}
Допустим надо из предыдущего правила вычитать какой-то трафик, напрмер под
номером 101, тогда пишем:
rule ISP_X_out {
ipfw = 100 -101 200.2
# ....
}
Аналогично делается для IP Filter:
rule aaa {
ipfil = i@1 i@23 i10@1
# ipfil считает трафик для правил incoming под номерами 1 и 23, а также из
группы 10 под номером 1
}
Пожно поставить лимиты:
rule aaa {
ipfil = i@1 i@23 i10@1
limit 100k_lim {
byte_limit = 100k
zero_time = +d
# zero_time - обнулить лимит в конце дня
reach {
exec = что-то запустить если лимит будет достигнут
exec(alex) = ещё что-то запустить если лимит будет достигнут, но
от имени юзера alex
}
expire {
expire_time = +w
# expire_time - лимит истекает в конце недели
exec = что-то запустить когда наступит expire_time
}
startup {
if_limit_is_reached {
exec = что-то запустить при startup'e если лимит достигнут
}
}
}
}
Режим подсчёта по времени занесён в TODO.
Я могу прислать ipa.conf, который я лично использую, но он не интересен, так
как там подсчитывается трафик по четырем правилам IP Firewall.