IPCad + NetFlow - собираем и "сливаем" статистику траффика

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b23daa45dd8186ce06594f5e1074c10f' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Собственно есть настроенный сервер статистики. Статистика с маршрутизаторов сливается на сервер по <a href=\"http://xgu.ru/wiki/NetFlow\">NetFlow</a>&nbsp;с помощью самописного скрипта и использованием <a href=\"http://ru.wikipedia.org/wiki/Netgraph\">netgraph</a>.&nbsp; Решил этот скрипт вынести и сливать потоки с помощью ipcad.</p>\n<p>Приступаем к установке ipcad из системы портов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/net-mgmt/ipcad &amp;&amp; make install clean</strong></td>\n</tr>\n</tbody>\n</table>\n<p>По завершению установки,&nbsp;следуя инструкциям, добавляем в rc.conf строку запуска:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo \'### IPCAD\' &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo \'ipcad_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Далее редактируем конфигурационный файл&nbsp;<strong>/usr/local/etc/ipcad.conf</strong>&nbsp;до следующего содержания:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td bgcolor=\"#333333\">\n<p><span style=\"color: #00ff00\"># Опция \'capture-ports\' включает/отключает дополнительные поля&nbsp;в статистике,<br />\n # такие, как TCP- и UDP-порты, а также типы&nbsp;ICMP-пакетов. Однако включение<br />\n # данной опции увеличивает&nbsp;потребление памяти, снижает скорость подсчета <br />\n # трафика и,&nbsp;в ряде случаев, искажает вывод через RSH</span></p>\n<p><span style=\"color: #00ccff\">capture-ports disable;</span></p>\n<p><span style=\"color: #00ff00\"># Размер буферов, используемых для передачи статистики ядром</span></p>\n<p><span style=\"color: #00ccff\">buffers = 64k</span></p>\n<p><span style=\"color: #00ff00\"># Перечень сетевых интерфейсов, на которых считается проходящий трафик.<br />\n # Рассматривается случай шлюза с двумя сетевыми интерфейсами в различные<br />\n # сегменты локальной сети.</span></p>\n<p><span style=\"color: #00ccff\">interface vlan3;<br />\n interface vlan5;</span></p>\n<p><span style=\"color: #00ff00\"># Настройки Netflow. Указываем IP-адрес и порт,&nbsp;куда &quot;сливать&quot; статистику.</span></p>\n<p><span style=\"color: #00ccff\">netflow export destination 192.168.206.66 2002;<br />\n netflow export version 5;</span></p>\n<p><span style=\"color: #00ff00\"># Задаем путь к файлу, в который по умолчанию&nbsp;будут складываться данные<br />\n # собранной статистики.</span></p>\n<p><span style=\"color: #00ccff\">dumpfile = ipcad.dump;</span></p>\n<p><span style=\"color: #00ff00\"># Настройка безопасности. Указываем каталог, относительно которого будем<br />\n # chroot-ить&nbsp;ipcad.</span></p>\n<p><span style=\"color: #00ccff\">chroot = /tmp/ipcad;</span></p>\n<p><span style=\"color: #00ff00\"># Путь к pid-файлу.</span></p>\n<p><span style=\"color: #00ccff\">pidfile = ipcad.pid;</span></p>\n<p><span style=\"color: #00ff00\"># Опция \'memory_limit задает количество памяти для хранения&nbsp;содержимого<br />\n # одного потока данных.&nbsp;Синтаксис следующий: memory_limit = &lt;количество&gt;[{k|m|e}] ;<br />\n # где \'k\' -- килобайты, \'m\' -- мегабайты, \'e\' -- количество строк таблицы # данных.</span></p>\n<p><span style=\"color: #00ccff\">memory_limit = 10m;<br />\n </span>&nbsp;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Рассмотрим более детально указанные опции:</p>\n<ul>\n<li><strong>interface </strong>- указываем интерфейсы, на которых считается проходящий трафик;</li>\n<li><strong>netflow export destination</strong> - указываем,&nbsp;куда &quot;сливать&quot; информацию о проходящем трафике;</li>\n<li><strong>netflow export version</strong> - указываем версию netflow;</li>\n<li><strong>dumpfile </strong>- путь к файлу, в который по умолчанию будут складываться данные статистики;</li>\n<li><strong>chroot </strong>- задаем каталог для chroot;</li>\n<li><strong>pidfile </strong>-&nbsp;путь к файлу, в котором хранится идентификатор процесса;</li>\n<li><strong>memory_limit</strong> -&nbsp;&nbsp;количество памяти для хранения содержимого одного потока данных.</li>\n</ul>\n<p>Создаем каталог для chroot и пытаемся запустить ipcad:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># mkdir /tmp/ipcad</strong><br />\n <strong># sh /usr/local/etc/rc.d/ipcad start</strong><br />\n Starting ipcad.<br />\n Opening vlan3... [LCap] [4096] Initialized as 1<br />\n Opening vlan5... [LCap] [4096] Initialized as 2<br />\n Configured NetFlow destination at 192.168.206.66:2002<br />\n Can\'t open dump file ipcad.dump<br />\n Daemonized.</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Проверяем, действительно ли запущен процесс:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># ps -ax | grep ipcad</strong><br />\n 54041&nbsp; ??&nbsp; S&lt;s&nbsp;&nbsp;&nbsp; 0:00,92 /usr/local/bin/ipcad -rds -c /usr/local/etc/ipcad.conf</td>\n</tr>\n</tbody>\n</table>\n<p>Ну и проверим,&nbsp;действительно ли сливаются потоки:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># tcpdump -ni vlan3 dst port 2002</strong><br />\n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode<br />\n listening on vlan3, link-type EN10MB (Ethernet), capture size 96 bytes<br />\n 16:59:23.458178 IP 192.168.35.64076 &gt; 193.227.206.66.20002: UDP, length 1464<br />\n 16:59:23.458242 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464<br />\n 16:59:23.458297 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464<br />\n 16:59:23.458354 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464<br />\n 16:59:23.458409 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464<br />\n 16:59:23.458465 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464<br />\n 16:59:23.458522 IP 192.168.206.35.64076 &gt; 192.168.206.66.2002: UDP, length 1464</p>\n<p>...</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Поздравляю, все работает...</p>\n', created = 1767424545, expire = 1767510945, headers = '', serialized = 0 WHERE cid = '2:b23daa45dd8186ce06594f5e1074c10f' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767424545, expire = 1767510945, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767424545, expire = 1767510945, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Собственно есть настроенный сервер статистики. Статистика с маршрутизаторов сливается на сервер по NetFlow с помощью самописного скрипта и использованием netgraph.  Решил этот скрипт вынести и сливать потоки с помощью ipcad.

Приступаем к установке ipcad из системы портов:

# cd /usr/ports/net-mgmt/ipcad && make install clean

По завершению установки, следуя инструкциям, добавляем в rc.conf строку запуска:

# echo '### IPCAD' >> /etc/rc.conf
# echo 'ipcad_enable="YES"' >> /etc/rc.conf

Далее редактируем конфигурационный файл /usr/local/etc/ipcad.conf до следующего содержания:

# Опция 'capture-ports' включает/отключает дополнительные поля в статистике,
# такие, как TCP- и UDP-порты, а также типы ICMP-пакетов. Однако включение
# данной опции увеличивает потребление памяти, снижает скорость подсчета
# трафика и, в ряде случаев, искажает вывод через RSH

capture-ports disable;

# Размер буферов, используемых для передачи статистики ядром

buffers = 64k

# Перечень сетевых интерфейсов, на которых считается проходящий трафик.
# Рассматривается случай шлюза с двумя сетевыми интерфейсами в различные
# сегменты локальной сети.

interface vlan3;
interface vlan5;

# Настройки Netflow. Указываем IP-адрес и порт, куда "сливать" статистику.

netflow export destination 192.168.206.66 2002;
netflow export version 5;

# Задаем путь к файлу, в который по умолчанию будут складываться данные
# собранной статистики.

dumpfile = ipcad.dump;

# Настройка безопасности. Указываем каталог, относительно которого будем
# chroot-ить ipcad.

chroot = /tmp/ipcad;

# Путь к pid-файлу.

pidfile = ipcad.pid;

# Опция 'memory_limit задает количество памяти для хранения содержимого
# одного потока данных. Синтаксис следующий: memory_limit = <количество>[{k|m|e}] ;
# где 'k' -- килобайты, 'm' -- мегабайты, 'e' -- количество строк таблицы # данных.

memory_limit = 10m;
 

Рассмотрим более детально указанные опции:

  • interface - указываем интерфейсы, на которых считается проходящий трафик;
  • netflow export destination - указываем, куда "сливать" информацию о проходящем трафике;
  • netflow export version - указываем версию netflow;
  • dumpfile - путь к файлу, в который по умолчанию будут складываться данные статистики;
  • chroot - задаем каталог для chroot;
  • pidfile - путь к файлу, в котором хранится идентификатор процесса;
  • memory_limit -  количество памяти для хранения содержимого одного потока данных.

Создаем каталог для chroot и пытаемся запустить ipcad:

# mkdir /tmp/ipcad
# sh /usr/local/etc/rc.d/ipcad start
Starting ipcad.
Opening vlan3... [LCap] [4096] Initialized as 1
Opening vlan5... [LCap] [4096] Initialized as 2
Configured NetFlow destination at 192.168.206.66:2002
Can't open dump file ipcad.dump
Daemonized.

Проверяем, действительно ли запущен процесс:

# ps -ax | grep ipcad
54041  ??  S<s    0:00,92 /usr/local/bin/ipcad -rds -c /usr/local/etc/ipcad.conf

Ну и проверим, действительно ли сливаются потоки:

# tcpdump -ni vlan3 dst port 2002
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan3, link-type EN10MB (Ethernet), capture size 96 bytes
16:59:23.458178 IP 192.168.35.64076 > 193.227.206.66.20002: UDP, length 1464
16:59:23.458242 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464
16:59:23.458297 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464
16:59:23.458354 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464
16:59:23.458409 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464
16:59:23.458465 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464
16:59:23.458522 IP 192.168.206.35.64076 > 192.168.206.66.2002: UDP, length 1464

...

 Поздравляю, все работает...

Ваша оценка: Нет Средняя: 5 (4 голоса)

Вставай, Україно!

Литература

Новая русскоязычная поисковая система "Иван Сусанин"