Сен 22 2009

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 я вам очень рекомендую.


Украинская Баннерная Сеть