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} |