Содержание

ipcad (Cisco IP accounting simulator)

Ipcad (Cisco IP accounting simulator) — это программа для учета трафика, которая может вести подсчет несколькими механизмами, например через интерфейсы BPF, libpcap и iptables ULOG.

Задача

Компьютер:

ЦП: Intel Celeron, 900 MHz
ОЗУ: 192 Мб (SDRAM)
НЖМД: SAMSUNG SP0411N (40 Гб, 7200 RPM, Ultra-ATA/133)
OC: FreeBSD 7.2-RELEASE-p4

Прозрачный прокси-сервер Squid proxy настройка со статистикой LightSquid установлен. В лог попадает в основном http-трафик. Ipcad будет собирать статистику, идущем в обход прокси, по другим портам (Использование ssh, ssh-keygen, sshpass с примерами, Раздел FTP: Протокол FTP, серверы, клиенты FTP для Linux и Windows, jabber и т.д.) и сбрасывать в лог Squid. Логи Squid разбирает LightSquid.

Установка ipcad

> cd /usr/ports/net-mgmt/ipcad
> make install clean
> echo 'ipcad_enable="YES"' >> /etc/rc.conf
> mkdir /var/log/ipcad

Настройка ipcad

> ee /usr/local/etc/ipcad.conf
# GLOBAL OPTIONS
# Опция capture-ports включает/отключает дополнительные поля в статистике, такие как: TCP- и UDP-порты, а также
# типы ICMP-пакетов. Однако включение данной опции увеличивает потребление памяти, снижает скорость подсчёта
# трафика и в ряде случаев искажает вывод через RSH.

capture-ports enable;

# INTERFACE OPTIONS

interface tun0; # внешний интерфейс
interface rl0;  # локальный интерфейс
interface rl1;  # локальный интерфейс

# Разделять статистику по каждому IP-адресу для подсети 192.168.0.0/24. «aggregate 192.168.0.0/24» указывает
# ipcad-диапазон адресов сети. «strip 32» означает, что в статистику необходимо заносить все 32 бита
# адреса, принадлежащего данному адресному диапазону
aggregate 192.168.0.0/24 strip 32;
aggregate 10.90.90.0/24 strip 32;
# остальные агрегировать по первым 24 битам
aggregate 0.0.0.0/0 strip 24;

#aggregate 3128-3128    into 3128;      /* Protect these ports */
aggregate 150-1023      into 1023;      /* General low range */
aggregate 20-21 into 21;
aggregate 22-23 into 22;
aggregate 25 into 25;
aggregate 80-81 into 0;
aggregate 110 into 110;
aggregate 443 into 443;
aggregate 3128 into 0;

# RSH SERVER OPTIONS
# Настройки rsh-сервера, с помощью которого будет просматриваться статистика.
 
rsh enable at 127.0.0.1;
 
# Правила, указанные ниже, описывают политики доступа к статистике ipcad. Root может полностью управлять
# (делать backup, просматривать и изменять таблицы подсчёта). Все остальные могут лишь просматривать статистику
rsh root@127.0.0.1 admin;     
rsh root@127.0.0.1 backup;    
rsh root@127.0.0.1;           
rsh 127.0.0.1 view-only;      
 
# «Время жизни» и тайм-аут IP-пакета
rsh ttl = 3;
rsh timeout = 30;

chroot = /var/log/ipcad;

# Опцией dumpfile задаётся путь к файлу, в который по умолчанию будут складываться данные статистики
dumpfile = ipcad.dump;
 
# OTHER OPTIONS
 
pidfile = ipcad.pid;
 
# Опция memory_limit задаёт количество памяти для хранения содержимого одного потока данных.
# Синтаксис следующий: memory_limit = <количество>[{k|m|e}] ;
# где k - Кб; m - Мб; e – количество строк таблицы данных
memory_limit = 1m;
> /usr/local/etc/rc.d/ipcad start

Просмотр статистики ipcad

Для управления статистикой ipcad используется rsh. Общий синтаксис команд для ipcad выглядит следующим образом:

rsh host command

где 'host' — это хост, на котором ведется статистика, а 'command' — это сама команда. В рассматриваемом случае значением 'host' является localhost.

Полный список команд можно посмотреть по команде rsh localhost help. А именно:

show ip accounting - показать статистику
clear ip accounting - сбросить статистику до контрольной точки. Если контрольная точка не задана, то статистика сбрасывается в ноль
show ip accounting checkpoint - показать статистику сохраненную в контрольных точках
clear ip accounting checkpoint - сбросить все контрольные точки
show ip cache flow - показать кэш NetFlow
show interface <iface> - показать счетчик интерфейса
dump [<path>] - сохранить текущую статистику в файл <path>. Если не указывать, то статистика сохранится в dumpfile, указанный в конфигурационном файле ipcad.conf
restore [<path>] - восстановить статистику
import [<path>] - импортировать (добавить) статистику
stat - показать текущее состояние работы ipcad
show version - показать версию и uptime ipcad'а
shutdown - завершить работу ipcad

Скрипт для снятия статистики.

> ee ipcadstat.sh
#!/bin/sh
net="192.168.1"
ttime=`/usr/bin/rsh localhost sh ip accounting | grep 'Accounting data saved'|awk '{print ($4)}'`
/usr/bin/rsh localhost clear ip accounting
/usr/bin/rsh localhost show ip accounting checkpoint | grep $net | awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200", 
$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}'  >>/usr/local/squid/logs/access.log