Навигация
Системное Администрирование Решения на открытых кодах Структура сети Компьютерные сети малых предприятий Сеть с централизованным управлением Управление с помощью групповых политик Организация почтового обслуживания Взаимодействие с глобальной сетью Безопасность Виртуализация Парядок настройки и определения неисправностей Средства управления системами Автоматизация установки программного обестичения Решение проблем с компьютером Разное
 
 
Избранное
Pathping. Traceroute на стероидах.
FreeNAS: создаём сетевое хранилище (NAS)
Iperf - утилита для тестирования пропускной способности сети.
Средство против «сетевой слепоты»
Преимущества и недостатки RAID 6
Дисковые массивы RAID
Надежнее, чем RAID 5
Унификация корпоративных коммуникаций
Exchange и SAN: не все так просто
Cisco против Meru
 
 
Системное Администрирование - Установка и настройка системы подсчета трафика Ipcad + Flow-tools + MySQL

Довольно часто на Linux форумах задаются вопросы по поводу систем подсчета трафика.

В данной статье подробно описана установка и проходящего через сетевой интерфейс компьютера с ОС Linux.

 

Как это работает

На компьютере трафик с сетевого интерфейса которого мы собираемся снимать статистику необходимо установить программу «сенсор» - задача которого будет состоять в том, чтобы производить захват сетевых пакетов проходящих через необходимый сетевой интерфейс и обеспечить дальнейшую передачу этой информации программе «коллектору». Коллектор - занимается тем, что собирает данные, которые предоставляются ему сенсорами и сохраняет их в хранилище (файлы, база данных и т.д.) для дальнейшей обработки.

Для определенности предположим:

  • У Вас имеется локальная сеть имеющая сетевую адресацию 192.168.0.0/24.
  • В качестве шлюза в интернет выступает компьютер с ОС Linux имеющий 2 сетевых интерфейса eth0 – смотрит в интернет, eth1 – смотрит в локальную сеть и имеет ip адрес 192.168.0.1.

 

Установка и настройка сенсора

На данный момент существует несколько решений позволяющих производить захват сетевых пакетов проходящих через сетевой интерфейс. В настоящем руководстве приводится описание установки и настройки ipcad и softflowd.

Я являюсь приверженцем RPM Based дистрибутивов (RHEL, Fedora, ASPLinux и т.д.) поэтому приведу описание установки и настройки этих программ для этих дистрибутивов.

 

ipcad

Домашняя страница проекта http://ipcad.sourceforge.net/.

Тем пользователям у кого на шлюзе установлен дистрибутив ASP Linux достаточно установить пакет ipcad (он входит в стандартную поставку дистрибутива) с помощью yum:

  • yum install ipcad
    

или с помощью команды rpm выполнив:

  • rpm -ihv ipcad-*.rpm
    

из каталога содержащего rpm пакеты дистрибутива.

Пользователям других дистрибутивов основанных на RPM пакетах можно посоветовать пересобрать пакет ipcad из пакета с исходными текстами ipcad-*.src.rpm взять который можно с ftp сервера ftp://ftp.asplinux.ru.

 

Пересборка пакета ipcad

Скачайте src.rpm пакета ipcad :

  • wget ftp.asplinux.ru/pub/i386/updates/11.2/SRPMS/ipcad-3.6.6-2.112asp.src.rpm
    

Из каталога в который Вы скачали пакет ipcad выполните:

  • rpmbuild –rebuild ipcad-3.6.6-2.112asp.src.rpm
    

 

Установка

После пересборки пакета установите его командой:

  • rpm -ihv /usr/src/redhat/RPMS/i386/ipcad-3.6.6-2.112asp.src.rpm
    

 

Настройка ipcad

Отредактируйте файл /etc/ipcad.conf чтобы его содержание было следующим:

  • interface eth1;
    netflow export destination 127.0.0.1 9990;
    netflow export version 5;
    pidfile = /var/run/ipcad.pid;
    dumpfile = ipcad.dump;
    

Тем самым мы сказали сенсору чтобы он захватывал пакеты приходящие/проходящие через сетевой интерфейс eth1 Linux сервера и отдавал эту информацию коллектору который будет «ловить» эту информацию на интерфейсе 127.0.0.1 порту 9990.

Добавьте ipcad в автоматический запуск при старте системы:

  • chkconfig --level 345 ipcad on
    

 

Softflowd

Домашняя страница проекта http://www.mindrot.org/projects/softflowd/

Последняя версия пакета на момент написания статьи была 0.9.8.

 

Сборка RPM пакета

Скачайте исходные тексты с сайта проекта:

  • wget http://www.mindrot.org/files/softflowd/softflowd-0.9.8.tar.gz
    

Скопируйте исходные тексты в каталог /usr/src/asplinux/SOURCES/:

  • cp softflowd-0.9.8.tar.gz /usr/src/asplinux/SOURCES/
    

Из архива softflowd-0.9.8.tar.gz извлеките 2 файла softflowd.init, softflowd.sysconfig они должны находиться в каталоге /usr/src/asplinux/SOURCES/, затем выполните команду:

  • rpmbuild -ta  softflowd-0.9.8.tar.gz
    

Собранный RPM пакет будет находиться в каталоге /usr/src/asplinux/RPMS/i386/

 

Установка

Установите собранный пакет командой:

  • rpm -ihv /usr/src/asplinux/RPMS/i386/softflowd-0.9.8-1.fc4.i386.rpm
    

 

Настройка softflowd

Перейдите в каталог /etc/sysconfig отредактируйте файл softflowd сделав его содержимое таким:

  •  SOFTFLOW_PROG=/usr/sbin/softflowd
     SOFTFLOW_OPTS="-v 5 -i eth1 -n127.0.0.1:9990"
    

Для запуска softflowd выполните:

  • service softflowd start
    

Добавьте softflowd в автоматический запуск при старте системы:

  • chkconfig --level 345 softflowd on
    

 

Настройка и запуск коллектора flow-capture

Коллектор flow-capture входит в состав пакета flow-tools страница проекта которого http://www.splintered.net/sw/flow-tools/.

С страницы проекта можно уже собранные RPM пакеты flow-tools а также пакеты с исходным кодом src.rpm из которых Вы можете пересобрать бинарный RPM пакет для своего дистрибутива.

Для запуска коллектора нам предварительно необходимо создать каталог в котором flow-capture будет сохранять данные статистики:

  • mkdir /var/flow/
    mkdir /var/flow/flow-data
    

Теперь нам нужно запустить flow-capture для этого выполните:

  • /usr/bin/flow-capture -N 3 -w /var/flow/flow-data 0/127.0.0.1/9990
    

Создадим rc.d скрипт чтобы управлять работой (запуск, остановка, перезапуск, определение состояния) flow-capture можно было с помощью стандартных средств. В каталоге /etc/rc.d/init.d создайте файл с именем flow-capture следующего содержания:

  •  #!/bin/sh
     #
     # flow-tools Tool set for working with NetFlow data
     #
     # chkconfig:    - 44 44
     # description:  flow-tools.
     #
     # processname: flow-capture
     # pidfile: /var/run/flow-capture.pid
    
     # Source function library
     . /etc/rc.d/init.d/functions
    
     # Get network config
     . /etc/sysconfig/network
    
     RETVAL=0
    
     start() {
            echo -n $"Starting Flow-capture daemon: "
            daemon /usr/bin/flow-capture -w /var/flow/flow-data 0/127.0.0.1/9990
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/flow-capture
            return $RETVAL
     }
    
     stop() {
            echo -n $"Stopping Flow-Capture daemon: "
            killproc flow-capture
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/run/flow-capture.pid /var/lock/subsys/flow-capture
            return $RETVAL
     }
    
     restart() {
            stop
            start
     }
    
     reload() {
            return $RETVAL
     }
    
    
     case "" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      status)
            status flow-capture
            ;;
      restart)
            restart
            ;;
      condrestart)
            [ -f /var/lock/subsys/flow-capture ] && restart || :
            ;;
      reload)
            reload
            ;;
      *)
            echo $"Usage: {full-story} {start|stop|status|restart|condrestart|reload}"
            exit 1
     esac
    
     exit $?
    

Добавьте flow-capture в автоматический запуск при старте системы:

  • chkconfig –add flow-capture
    chkconfig --level 345 flow-capture on
    

 

Работа с данными статистики используя утилиты из пакета flow-tools

Итак данные статистики собираются, и находятся в каталоге /var/flow/flow-data. Flow-capture хранит эти данные в своем формате который не посмотреть в обычном редакторе. В пакет flow-tools входят утилиты для обработки таких данных.

Допустим нам необходимо извлечь суммарную информацию о том, сколько входящего трафика потребил каждый из компьютеров локальной сети за февраль 2007 года.

Для решения этой задачи нам необходимо: 1. Создать файл mynet.acl следующего содержания:

  • ip access-list standard mynetwork permit 192.168.0.0 0.0.0.255
    ip access-list standard mynetwork deny any
    

2. Создать файл febrary.sh следующего содержания:

  • #!/bin/bash
    flow-cat /var/flow/flow-data/2007/2007-02 | flow-filter -fmynet.acl -S mynetwork | flow-stat -f9 -S2>febrary-input.stat
    

3. Сделайте файл febrary.sh исполняемым

  • chmod +x  febrary.sh
    

4. Запустите файл febrary.sh в результате выполнения данного скрипта должен создаться обычный текстовый файл febrary-input.stat содержимое которого и есть необходимая Нам статистика. В данном файле будет содержаться 4 колонки разделенных друг от друга пробелами:

  • # IPaddr         flows                 octets                packets
    #
    192.168.0.2    276280                6016806821            5491368
    192.168.0.3    212039                191908595             1505926
    192.168.0.4    18424                 115110305             868002
    192.168.0.5    31343                 51992385              282471
    192.168.0.6    60896                 29306026              209770
    192.168.0.7    44195                 22203563              240147
    192.168.0.8    3873                  19004654              34104
    

Теперь попробуем разобраться в том, что же мы сделали.

Мы создали файл с описанием сети статистику по трафику которой мы хотим получить.

Обратите внимание, что сеть задается в инвертированном виде т.е. вместо 255.255.255.0 мы задали 0.0.0.255.

Затем в скрипте мы последовательно запускаем утилиты из пакета flow-tools в конвейере т.е. Результат выполнения предыдущей команды передается на обработку следующей.

Первой командой мы выполнили flow-cat /var/flow/flow-data/2007/2007-02 тем самым мы указали какой каталог со статистикой мы хотим использовать для обработки. Утилита flow-cat сама разберется какие подкаталоги находятся в каталоге заданном параметром, и возьмет оттуда все файлы со статистикой для последующей обработки.

Результат работы команды flow-cat мы передаем на дальнейшую обработку команде flow-filter которой в качестве параметров указываем откуда взять информацию о интересующих нас сетях, и какого рода трафик нас интересует -fflow.acl -S mynetwork, если бы Нас интересовал исходящий трафик необходимо было бы вместо -S mynetwork указать -D mynetwork.

Уже полученный результат отдается на обработку утилите flow-stat которой в свою очередь мы сообщаем какие поля из полученной статистики нас интересуют, и какого рода сортировку в полученных данных необходимо выполнить flow-stat -f9 -S2>febrary-input.stat так как мы указали утилите flow-filter, что Нас интересует входящий трафик, то произведем выборку утилитой flow-stat по адресу назначения (-f9) с сортировкой по 3 полю (нумерация полей начинается с 0) т.е. полученный результат сортируется по количеству байт т.е. По объему потребленного трафика и результат будет записан в файл febrary-input.stat.

Таким образом выполняя последовательность команд flow-cat, flow-filter, flow-stat с различными параметрами мы легко можем получать статистику потребления трафика в интересующем нас виде. Также полезными для получения статистики могут оказаться утилиты flow-print, flow-report. Более подробную информацию о возможных параметрах утилит пакета flow-tools смотрите соответствующие man страницы.




 
 
 
 
Поиск по сайту
Google Поиск


Яндекс поиск
 
 
Полезное
 
 
 
 
 
systemzone.ru 2014