IPCAD - учет трафика Linux Печать
Автор: Administrator   
20.10.10 10:17

IPCAD - учет трафика Linux

 

Для учета трафика проходящего через сетевые интерфейсы сервера нужен IPCAD (IP accounting daemon)
Взять исходные тексты можно тут

Итак .. у нас Ubuntu 9.04 и исходники ipcad-3.7.3

Для начала ставим необходимые пакеты
Я работаю сразу под root поэтому sudo пользоваться буду только один раз.

# sudo -i
# apt-get install libpcap-dev build-essential linux-libc-dev
# wget http://lionet.info/soft/ipcad-3.7.3.tar.gz
# tar -xvzf ipcad-3.7.3.tar.gz
# cd ipcad-3.7.3
# ./configure
# make


у меня в процессе выдало ошибку

loop-ipq.c: In function 'process_ipq':
loop-ipq.c:106: error: 'NF_ACCEPT' undeclared (first use in this function)
loop-ipq.c:106: error: (Each undeclared identifier is reported only once
loop-ipq.c:106: error: for each function it appears in.)
make: *** [loop-ipq.o] Error 1


непонятно безобразие ... что бы его победить придется кое-что подправить

#nano /usr/include/linux/netfilter.h


В файле netfilter.h закоментировать

//enum nf_inet_hooks {
//      NF_INET_PRE_ROUTING,
//      NF_INET_LOCAL_IN,
//      NF_INET_FORWARD,
//      NF_INET_LOCAL_OUT,
//      NF_INET_POST_ROUTING,
//      NF_INET_NUMHOOKS
//};

//enum {
//      NFPROTO_UNSPEC =  0,
//      NFPROTO_IPV4   =  2,
//      NFPROTO_ARP    =  3,
//      NFPROTO_BRIDGE =  7,
//      NFPROTO_IPV6   = 10,
//      NFPROTO_DECNET = 12,
//      NFPROTO_NUMPROTO,
//};

//union nf_inet_addr {
//      __u32           all[4];
//      __be32          ip;
//      __be32          ip6[4];
//      struct in_addr  in;
//      struct in6_addr in6;
//};


Теперь

# ./configure
# make
# make install


#whereis ipcad
ipcad: /usr/local/bin/ipcad /usr/local/etc/ipcad.conf


/usr/local/etc/ipcad.conf - конфигурационный файл
/usr/local/etc/ipcad.conf.default - на случай если захотим вернуться к настройкам по умолчанию
/usr/local/etc/ipcad.conf.simple - упрощенный файл конфигурации

конфигурирование, за основу взят /usr/local/etc/ipcad.conf.simple

# cd /usr/local/etc
# cp ipcad.conf.simple ipcad.conf
# nano ipcad.conf


В сервер два сетевых интерфейса

eth0 - 192.168.0.18 -  локальную сеть
eth1 - 192.168.47.22 - DMZ (для простоты можно считать что в internet)

Настройка

#
# Simple configuration file for ipcad.
# Copyright (c) 2001, 2002, 2003, 2004
#       Lev Walkin < Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. >.
#
# Please see ipcad.conf.default file or ipcad.conf(5) manual page for
# complete file format explanation.
#

#capture-ports enable;   # Enable ports capturing for RSH (no effect on Net$
capture-ports enable;   # Позволяет записывать порты в статистику
buffers=64k;            #Размер буферов, используемых для передачи статистики ядром


# Specify interfaces.
#interface eth0;         # Listen on Ethernet interface...
#interface eth1;         # ...and another onw.
#interface ppp*;         # Listen on all PPP interfaces.
interface eth1 input-only netflow-disable; считаем только входящий трафик для интерфейся eth1
#протокол, разработанный компанией Cisco и предназначенный для сбора информации об IP-трафике внутри сети, он нам #не нужен


# Preserve internal IP ranges, aggregate external ones.
# Разделять статистику по IP адресу для подсетей 192.168.0.0/16 172.16.0.0/12
# полезно если бы мы собирали статистику для локальной сети
#aggregate 192.168.0.0/16 strip 32; /* Don't aggregate 192.168.0.0 */
#aggregate 172.16.0.0/12 strip 32; /* Don't aggregate 172.16.0.0 */
#aggregate 0.0.0.0/0 strip 24;   /* Drop the last octet of all other IPs */

# Aggregate port numbers.
# Обьеденять заданый диапазон портов в один порт
#aggregate 1024-65535    into 65535;     /* Aggregate wildly */
#aggregate 3128-3128     into 3128;      /* Protect these ports */
#aggregate 150-1023      into 1023;      /* General low range */

# Настройки rsh-сервера, с помощью которого будет просматриваться статистика.
rsh enable at 127.0.0.1;
rsh [email protected] admin;       /* Can shutdown ipcad */
rsh 127.0.0.1 view-only;        /* Other users can view current tables */


# Uncomment this to export NetFlow information to specified destination.
# netflow export destination 127.0.0.1 9996;

#chroot = /tmp;
pidfile = /var/run/ipcad.pid; # Will be created under /tmp

# Dump file for -r and -s command line options.
#dumpfile = ipcad.dump;
dumpfile = /var/log/ipcad/ipcad.log #Файл для записи и извелечения статистики при перезапуске ipcad, автоматически не создается

Создаем dump файл

# mkdir -m 700 /var/log/ipcad
# touch /var/log/ipcad/ipcad.log
# chmod 600 /var/log/ipcad/ipcad.log


Врямя запустить IPCAD

# /usr/local/bin/ipcad -h - покажет список доступных команд
# /usr/local/bin/ipcad -v - выведет информацию о версии
# /usr/local/bin/ipcad -с - задаст конфигурационный файл
# /usr/local/bin/ipcad -d - запустит как демон
# /usr/local/bin/ipcad -r - импортирует данные из dump файла при запуске
# /usr/local/bin/ipcad -s - запишет данные в dump файл при выходе

# /usr/local/bin/ipcad -rds
Opening eth1... [LCap] [ERSH] eth1: Input-only feature not supported by PCAP.
Can't initialize: Operation not permitted

Упс, тут говорят что Input-only директива в конфиге не поддерживается библиотекой pcap
В справке к ipcad написано, что "input-only" должна поддерживаться ядром, как это победить я не нашел, поэтому просто убрал её из ipcad.conf
input-only: Use kernel feature of counting only incoming packets.

NOTE: "input-only" directive must be supported by kernel.    Probably, you
were noticed about it during the compilation process if it was not sup-
ported.  FreeBSD 3.x and elder kernels do not support this feature.

# /usr/local/bin/ipcad -rds
Opening eth1... [LCap] [ERSH] Initialized as 1
Configured RSH Server listening at 127.0.0.1
Warning: /var/log/ipcad/ipcad.log: empty file.
Daemonized.


Теперь всё ок.

Для управления статистикой ipcad используется rsh, настройки которого [rsh] задаются в конфигурационном файле ipcad.conf (о чём говорится в «Настройка ipcad»).
Общий синтаксис команд для ipcad выглядит следующим образом:
rsh host comand
где host – это хост, на котором ведётся статистика, а comand – это сама команда. В рассматриваемом случае значением host является localhost.
По команде:
rsh localhost help
доступен полный список команд.
А именно:
n  show ip accounting – показать статистику.
n  clear ip accounting – сбросить статистику до контрольной точки. Если контрольная точка не задана, то статистика сбрасывается в ноль.
n  show ip accounting checkpoint – показать статистику, сохранённую в контрольных точках.
n  clear ip accounting checkpoint – сбросить все контрольные точки.
n  show ip cache flow – показать кэш NetFlow.
n  show interface <iface> – показать счётчик интерфейса <iface>.
n  dump [<path>] – сохранить текущую статистику в файл <path>. Если <path> не указывать, то статистика сбросится в dumpfile, указанный в конфигурационном файле ipcad.conf.
n  restore [<path>] – восстановить статистику.
n  import [<path>] – импортировать (добавить) статистику.
n  stat – показать текущее состояние работы ipcad.
n  show version – показать версию и uptime ipcad.
n  shutdown – завершить работу ipcad.
Для просмотра статистики достаточно:
rsh localhost show ip accounting

#rsh localhost dump - сбросит статистику в ipcad.log


последний штрих ... я добавлю команду перезапуска ipcad в cron

# m h  dom mon dow   command
0 * * * * killall ipcad && /usr/local/bin/ipcad -rds

такая запись будет перезапускать ipcad каждый час.

 

оригинал: http://sgww.livejournal.com/8340.html

apt-get install rsh-client

{jcomments on}

Последнее обновление 20.10.10 10:19