IPA, система подсчета трафика, установка и настройка во FreeBSD

IPA, модульная система подсчета трафика. Считает трафик на основе счетчиков IPFW. Достоинством IPA является то, что она бесплатна и содержит готовые утилиты для построения отчетов по трафику.

Поставим его из портов. Я сразу начинаю ставить модуль под соответствующий файервол, и поскольку я использую IPFW под IPv4, то ставится он так:

cd /usr/ports/net/ipa_ipfw

make install clean

Тут появится небольшой диалог настройки опций сборки:

---------------------------------------------------------------------¬

¦ Options for ipa_ipfw 1.0.1 ¦

¦ -----------------------------------------------------------------¬ ¦

¦ ¦ [X] IPFW2 Enable IPFW2 support (on FreeBSD < 5.x) ¦ ¦

¦ ¦ [X] MAN_KOI8_R Install Russian manual pages ¦ ¦

¦ ¦ ¦ ¦

+-L------------------------------------------------------------------+

¦ [ OK ] Cancel ¦

L---------------------------------------------------------------------

Опции тут простые, включаем поддержку 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 ¦ ¦

¦ ¦ ¦ ¦

+-L------------------------------------------------------------------+

¦ [ OK ] Cancel ¦

L---------------------------------------------------------------------

В опциях включены основные параметры которые будут использоваться при подсчете трафика. Поддержка динамических правил, поддержка статических правил, возможность задавать лимиты и конечно же русскоязычные маны.

А теперь модуль базы поставим из /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 ¦ ¦

¦ ¦ ¦ ¦

+-L------------------------------------------------------------------+

¦ [ OK ] Cancel ¦

L---------------------------------------------------------------------

Для модуля базы опции сборки такие же как и для самого 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 я вам очень рекомендую.

http://www.hilik.org.ua/ipa-система-подсчета-трафика-установка/

Обновлено: 12.03.2015