Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Программа сбора статистики для последующей ее обработки биллингом.


NfSen

Nfsen — сборщик и анализатор Netflow с открытым исходным кодом, отображает статистику в веб интерфейсе в виде графиков.

Перед установкой Nfsen должен быть установлен Nfdump

Для установки Nfdump в Ubuntu/Debian

Блок кода
apt-get install nfdump

В CentOS:

Блок кода
sudo yum install nfdump

...

Для продолжение установки Nfsen установим необходимые компоненты:

Блок кода
add-apt-repository universe 
apt-get install apache2 php libapache2-mod-php librrds-perl librrdp-perl librrd-dev libmailtools-perl build-essential autoconf rrdtool libio-socket-inet6-perl

Скачаем Nfsen и распакуем:

Блок кода
mkdir /srv/nfsen 
cd /srv/nfsen 
wget https://sourceforge.net/projects/nfsen/files/stable/nfsen-1.3.8/nfsen-1.3.8.tar.gz 
tar xzfv nfsen-1.3.8.tar.gz

Создадим файл конфигурации и откроем его в текстовом редакторе:

Блок кода
cd nfsen-1.3.8/etc 
cp nfsen-dist.conf nfsen.conf 
nano nfsen.conf

...

Если Ubuntu/Debian то в файле /srv/nfsen/etc/nfsen.conf 

  1. Изменить USER, WWWUSER и WWWGROUP на www-data
  2. В хеше %sources указать IP оборудования, которое должно совпадать с IP, указанного в Настройка > Сервер доступа
Блок кода
title/srv/nfsen/etc/nfsen.conf
$BASEDIR = "/srv/nfsen";
$PREFIX  = '/usr/bin';
$USER    = "www-data";
$WWWUSER  = "www-data";
$WWWGROUP = "www-data";
 
%sources = (
    'upstream1'    => { 'port' => '555', 'col' => '#0000ff', 'IP' =>'195.158.00.000' 'type' => 'netflow' },
    'upstream2'    => { 'port' => '555', 'col' => '#00ff00', 'IP' =>'195.158.00.111' 'type' => 'netflow' },
 );


Запустим скрипт установки Nfsen:

Блок кода
cd .. 
./install.pl ./etc/nfsen.conf

Запустим nfsen:

Блок кода
/srv/nfsen/bin/nfsen start

В конфигурации мы указал upstream1 с портом 555, по этому после запуска nsfsen он автоматически запустит nfcapd на порту 555 и будет писать данные в директорию /srv/nfsen/profiles-data/live/upstream1/.....

Для автозапуска при старте операционной системы выполним команды:

Блок кода
ln -s /srv/nfsen/bin/nfsen /etc/init.d/nfsen 
update-rc.d nfsen defaults 20

Осталось настроить конфигурацию веб сервера либо просто создать символическую ссылку в www директорию (после этого можно будет открыть nfsen в браузере, например http://ixnfo.com/nfsen/nfsen.php):

Блок кода
ln -s /srv/nfsen/www/ /var/www/html/nfsen 
ln -s /var/www/nfsen/ /var/www/html/nfsen

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

Блок кода
cd /srv/nfsen/bin 
./nfsen reconfig

Через некоторое время должны появится данные на графиках, также через tcpdump можно посмотреть приходят ли данные от сенсора:

Блок кода
tcpdump port 555 -e -n

Убедимся что nfsen запускается при запуске операционной системы:

Блок кода
systemctl is-enabled nfsen 
systemctl is-enabled nfdump 
systemctl enable nfsen 
systemctl status nfsen

Если в операционной системе установлен flow-tools, то можно отключить его так:

Блок кода
systemctl is-enabled flow-capture 
systemctl disable flow-capture 
systemctl status flow-capture 
systemctl stop flow-capture

...

Для сбора данных c Nfsen добавление данных в базу данных нужно добавить вызов файла traffic2sql на крон каждый час в /etc/crontab . В поле [NAS_IDS] указать NAS_ID. Для проверки вывода данных с потока поставить DEBUG=8.

По умолчанию путь для программы Nfdump указана по адресу '/usr/bin/nfdump'. Если программа установлена по другому пути - можно задать через аргумент FLOW_NFDUMP=/usr/local/bin/nfdump

Блок кода
* */1 * * * root /usr/abills/libexec/traffic2sql [NAS_IDS] NFSEN=1 flowdir=/srv/nfsen/profiles-data/live/upstream1/

...

Установка flow-tools (1)

ipcad

Установка на FreeBSD и Debianна Debian


Блок кода
apt-get install libpcap-dev 
apt-get install build-essential
apt-get install linux-libc-dev
apt-get install rsh-client


View file
nameipcad-3.7.3.tar.gz
height150

Блок кода
titleСкачиваем ipcad
wget http://lionet.info/soft/ipcad-3.7.3.tar.gz
tar -xvzf ipcad-3.7.3.tar.gz
cd ipcad-3.7.3
Блок кода
titleПравим файл headers.h:
nano headers .h


Блок кода
titleИщем
ifdef HAVE_LINUX_NETLINK_H
include <linux/netlink.h>
endif


Блок кода
titleМеняем на
//ifdef HAVE_LINUX_NETLINK_H
include <linux/netlink.h>
//endif


Блок кода
titleВ файл main.c добавляем:
include "signal.h"


Блок кода
titleВ файл pps.c добавляем:
include "headers.h" 
include "signal.h"


Блок кода
titleВ файл servers.h добавляем:
include "signal.h"


Блок кода
titleУстанавливаем
./configure
make
make install


Блок кода
titleПравим /usr/local/etc/ipcad.conf:
nano /usr/local/etc/ipcad.conf
Блок кода
# Интерфейсы для сбора статистики
interface eth0;
# детализация по портам
#capture-ports enable;
 
# Агрегировать порты, уменьшает размер базы детализации
#aggregate 1024-65535    into 65535;     /* Aggregate wildly */
#aggregate 3128-3128     into 3128;      /* Protect these ports */
#aggregate 150-1023      into 1023;      /* General low range */
 
# Експортирование статистики на адрес 127.0.0.1 порт 9996
netflow export destination 127.0.0.1 9996;
netflow export version 5;       # NetFlow export format version {1|5}
netflow timeout active 30;      # Timeout when flow is active, in minutes
netflow timeout inactive 15;    # Flow inactivity timeout, in seconds
netflow engine-type 73;         # v5 engine_type; 73='I' for "IPCAD"
netflow engine-id 1;            # Useful to differentiate multiple ipcads.
 
dumpfile = ipcad.dump;
chroot = /var/ipcad/;
pidfile = ipcad.pid; 
 
rsh enable at 127.0.0.1;
memory_limit = 16m;


Блок кода
titleСоздаем папку для логов:
mkdir /var/ipcad/
Блок кода
titleЗапускаем ipcad:
ipcad

Запуск скрипта обработки статистики

...

Блок кода
*/5 * * * * root /usr/abills/libexec/traffic2sql [NAS_IDS] flowdir=/usr/abills/var/log/ipn/

Параметры:

Блок кода
traffic2sql [NAS_IDS] [Options]

Пример вызова для серверов с ID 1,2,3:

Блок кода
/usr/abills/libexec/traffic2sql 1,2,3 flowdir=/usr/abills/var/log/ipn/

...