ng_ipacct - работает с использованием netgraph и выполнен в виде подгружаемого модуля ядра.
Новая реализация проекта ipacctd. Формат управления и статистики как у Cisco (есть checkpoint) и ipacctd.
На сегодняшний день - одна из лучших систем учета трафика для FreeBSD.URL: ftp://ftp.wuppy.net.ru/pub/FreeBSD/local/kernel/ng_ipacct/
Обсуждается: http://www.opennet.me/prog/info/1393.shtml
У считалок подобного типа (работающих в режиме ядра) есть один серьъезный недостаток: они иногда весят сервера...
ни разу ни один сервер не подвесила, хотя стоит и на production серверах с достаточно высокой нагрузкой на процессоре и интерфейсе
Написал небольшую заметку по использованию ng_ipacct
http://citrin.pp.ru/my/ng_ipacct.html
У меня уже год на основе ng_ipacct считается трафик клиентов. Надстроил над ним что-то похожее на билинговую систему на perl-скриптах с таблицами клиентов, тарифов, IP-адресов, проплат и т.п. в MySQL, с отключением IP, системой предупреждений по e-mail и сейчас дописываю сайт статистики для клиентов. На модуль за все это время - никаких нареканий.
За все это время
просьба модераторов удалить последнее тафтологийное предложение моего поста - случайный Enter.. :)
Всё бы хорошо, но, например, для tun интерфейсов она трафик попросту не считает. Что касается стабильности - за несколько лет, на ветках 4.х-5.х - ни одной проблемы - поставил и забыл.
sudo ipfw l
00045 tee 3021 ip from any to any out xmit gif*
00047 tee 3022 ip from any to any out xmit tun*
При необходимости можно разбирать на in/out, хотя мне проще скриптами.Вешаем сокеты на прослушку (версия ng_ipacct должна быть позже 2002-02-28 для поддержки комманды dlt)
#!/bin/sh
. /etc/rc.conf
IFACE=div0
nodename=${IFACE}_ip_acct
socketname=${IFACE}_sock
hookprefix=$IFACE/usr/sbin/ngctl -f- <<-SEQ
### dummy hook, to create a node
mkpeer ipacct ctl ctl
name .:ctl ${nodename}
### "incoming" hook
mkpeer ${nodename}: ksocket ${hookprefix}_in inet/raw/divert
name ${nodename}:${hookprefix}_in ${socketname}_in
msg ${socketname}_in: bind inet/0.0.0.0:3021
### "outgoing" hook
mkpeer ${nodename}: ksocket ${hookprefix}_out inet/raw/divert
name ${nodename}:${hookprefix}_out ${socketname}_out
msg ${socketname}_out: bind inet/0.0.0.0:3022
rmhook .:ctl
SEQ/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} dlt RAW
/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} v ${VERBOSE}
/usr/local/sbin/ipacctctl ${nodename}:${hookprefix} th ${THRESHOLD}
>sudo ipfw lа с pf как можно такое провернуть?
Извиняюсь за тупой вопрос а с squid работать будет?