IPA, система подсчета трафика, установка и настройка.
IPA, модульная система подсчета трафика. Считает трафик на основе счетчиков IPFW. Достоинством IPA является то, что она бесплатна и содержит готовые утилиты для построения отчетов по трафику.
Поставим его из портов. Я сразу начинаю ставить модуль под соответствующий файервол, и поскольку я использую IPFW под IPv4, то ставится он так:
cd /usr/ports/net/ipa_ipfw make install clean |
Тут появится небольшой диалог настройки опций сборки:
┌────────────────────────────────────────────────────────────────────┐ │ Options for ipa_ipfw 1.0.1 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] PTHREAD Build pthread safe module │ │ │ │ [ ] DEBUG_INFO Produce debugging info │ │ │ │ [X] IPFW2 Enable IPFW2 support (on FreeBSD < 5.x) │ │ │ │ [X] MAN_KOI8_R Install Russian manual pages │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘ |
Опции тут простые, включаем поддержку ipfw2, и русские маны.
Теперь сам IPA он ставится из /usr/ports/sysutils/ipa:
cd /usr/ports/sysutils/ipa make install clean |
И опять диалог настройки опций сборки:
┌────────────────────────────────────────────────────────────────────┐ │ Options for ipa 2.0.6 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [X] AUTORULES Enable dynamic rules support │ │ │ │ [X] RULES Enable static rules support │ │ │ │ [X] LIMITS Enable limits support │ │ │ │ [X] SUBLIMITS Enable sublimits support │ │ │ │ [X] THRESHOLDS Enable thresholds support │ │ │ │ [X] CTL_CREDS Enable ipactl's messages credentials │ │ │ │ [ ] MEMFUNC_DEBUG Enable ipa_memfunc debugging │ │ │ │ [ ] DEBUG_INFO Produce debugging information │ │ │ │ [X] MAN_KOI8_R Install Russian manual pages │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘ |
В опциях включены основные параметры которые будут использоваться при подсчете трафика. Поддержка динамических правил, поддержка статических правил, возможность задавать лимиты и конечно же русскоязычные маны.
А теперь модуль базы поставим из /usr/ports/databases/ipa_sdb
cd /usr/ports/databases/ipa_sdb/ make install clean |
У него тоже свой диалог настройки:
┌────────────────────────────────────────────────────────────────────┐ │ Options for ipa_sdb 1.0.1 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [X] AUTORULES Enable dynamic rules support │ │ │ │ [X] RULES Enable static rules support │ │ │ │ [X] LIMITS Enable limits support │ │ │ │ [X] THRESHOLDS Enable thresholds support │ │ │ │ [ ] DEBUG_INFO Produce debugging information │ │ │ │ [X] MAN_KOI8_R Install Russian manual pages │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘ |
Для модуля базы опции сборки такие же как и для самого ipa.
Ну, а, если вам нужно использовать модуль под IPv6, то модуль ставится из /usr/ports/net/ipa_ip6fw.
На этом пока с ipa все, нужно настроить файервольные счетчики.
Простейший пример — статические правила подсчета трафика всей сети 192.168.1.0/24:
ipfw add 20 count ip from 192.168.1.0/24 to any in recv xl1 ipfw add 25 count ip from any to 192.168.1.0/24 out xmit xl1 |
Правило 20 служит для подсчета исходящего от локальной сети на внутренний интнерфейс xl1 трафика, а 25 это подсчет входящего трафика во внутреннюю сеть.
Теперь перейдем к настройке ipa на подсчет этого трафика.
Настройки ipa хранятся в файле /usr/local/etc/ipa.conf, выглядит он так:
ac_mod "ipa_ipfw.so"; db_mod "ipa_db_sdb.so"; global { ac_list = ipfw; db_list = sdb; update_time = 5m; append_time = 30m; } rule network { ipfw:rules = 20 25; info = "Статистика трафика сети"; ipfw:maxchunk = 2M; } |
Теперь будем запускать ipa. Для этого, разрешим запуск в /etc/rc.conf:
echo 'ipa_enable="YES"' >> /etc/rc.conf |
и запустим его:
/usr/local/etc/rc.d/ipa start |
И теперь нужно настроить ipastat, у него свой файл настроек /usr/local/etc/ipastat.conf:
st_mod "ipa_st_sdb.so"; global { st_list = sdb; sdb:db_dir = "/var/ipa_sdb"; } rule network{ } |
Теперь можно посмотреть статистику трафика по правилу network:
ipastat -q -r network |
Вывод выглядит так:
Rule : network Info : Статистика трафика сети From : 2009.09.01/00:00:00 To : 2009.09.30/24:00:00 Timestamp | Counter | Per day -----------------------------+----------------------+--------------------- 2009.09.04/12:00:47-12:30:12 | 275763746 | 2009.09.04/12:30:12-13:00:11 | 93731876 | 2009.09.04/13:00:11-13:30:12 | 43535628 | 2009.09.04/13:30:12-14:00:11 | 69997128 | 2009.09.04/14:00:11-14:30:11 | 41360701 | 2009.09.04/14:30:11-15:00:12 | 19348605 | 2009.09.04/15:00:12-15:00:12 | 0 | 543737684 -----------------------------+----------------------+--------------------- * Summary 543737684 (1 day) * Total 543737684 (1 day) |
На этом настройка статистики закончена.
Но теперь немного о недостатках. В этой статистике присутствуют байты, но полностью отсутствует представление куда ушел трафик, нет информации о источнике трафика и получателе. Поэтому в своей практике, мне пришлось отказаться от этой системы учета.
А в целом система стабильная и считает надежно. Так же присутствуют возможности выполнять команды по достижению лимита трафика, возможность выполнять команды при старте системы и ее остановке. В случае, если вы укажете правило со знаком минус, его показания будут отниматься от общей статистики.
В общем если вам нужна простая система статистики, то IPA я вам очень рекомендую.