Traffic Reg Software  
English version    С момента открытия сайта прошло: 14 лет 6 месяцев 18 дней  auto
Статьи  Настройка Softflowd 
 

Настройка агента Softflowd для сбора статистики по протоколу Netflow в роутере FreeBSD
(для последующей обработки пакетов Netflow в программе учета трафика TMeter)

Протокол Netflow представляет собой набор средств, позволяющих получать информацию о сетевом трафике с удаленных маршрутизаторов. Изначально разработанный компанией Cisco для собственных устройств, протокол Netflow получил множество реализаций для других операционных систем. В данной статье идет речь об установке и настройке агента softflowd для сбора информации о проходящем через роутер Freebsd сетевом трафике. Фактически пакет Netflow предсталяет собой UDP-пакет, в котором содержится информация до 30 сессий TCP/IP прошедших через роутер.

Установка агента softflowd

#cd /usr/ports/net-mgmt/softflowd
#make all
#install clean

Запуск softflowd

После того, как softflowd был установлен, необходимо выбрать интерфейс, мониторинг которого будет производиться, указать IP адрес и UDP порт коллектора. Например, для интерфейса rl0 и коллектора 192.168.201.187:8818 запуск softflowd будет выглядеть следующим образом:

#softflowd -i rl0 -n 192.168.201.187:8818 

Проверка softflowd

Softflowd включает в себя программу контроля softflowctl, с помощью которой можно проверить работоспособность softflow:

#softflowctl statistics
softflowd[40476]: Accumulated statistics:
Number of active flows: 2299
Packets processed: 268089
Fragments: 0
Ignored packets: 867 (867 non-IP, 0 too short)
Flows expired: 3103 (0 forced)
Flows exported: 6206 in 214 packets (0 failures)
...

Проверить, действительно ли данные отправляются и достигают коллектора можно с помощью ethereal, tcpdump или другого анализатора трафика. В случае каких-либо проблем можно использовать флаг -D демона softflowd. Softflowd посылает информацию о потоке после того, как тот будет завершен, например, прекратится FTP-сессия или загрузится web-страница. Это означает, что в любой момент времени у softflowd имеется некий кэш открытых потоков, в связи с чем остановку демона необходимо выполнять командой softflowctl shutdown. В противном случае вы потеряете данные активных потоков, которые еще не были завершены и отправлены на коллектор.

Стартовый скрипт

Для того чтобы softflowd стартовал при загрузке автоматически, необходимо создать скрипт запуска и добавить его в загрузку системы. К сожалению, пока что в порт softflowd такой скрипт не входит, поэтому его придётся создать самостоятельно:

#!/bin/sh


# Set this rc.conf variables
#   * softflowd_enable          - enable softflowd?
#   * softflowd_interfaces      - interfaces to listen 
#   * softflowd_netflow_host    - collector host
#   * softflowd_netflow_port    - collector port
# in rc.conf variables
# Example:
# softflowd_interfaces="em0 em1 xl0"
# softflowd_netflow_host=
# softflowd_netflow_port=


. /etc/rc.conf

if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/$(basename $0)\$"); then
    echo "$0: Cannot determine the PREFIX" >&2
    exit 1
fi

echo "$softflowd_enable" | grep -qix yes || exit
[ -z "$softflowd_interfaces" ] && exit

 [ -x ${PREFIX}/sbin/softflowd ] || exit
 SOFTFLOWD=${PREFIX}/sbin/softflowd
 SOFTFLOWCTL=${PREFIX}/sbin/softflowctl

case "$1" in
        start)
                for interface in ${softflowd_interfaces}
                do
                    ${SOFTFLOWD} -i ${interface} -n "$softflowd_netflow_host":"$softflowd_netflow_port"
                    echo -n softflowd[$interface]" "
                    softflowd_netflow_port="`expr $softflowd_netflow_port + 1`"
                done 
                ;;
        stop)
                ${SOFTFLOWCTL} shutdown && echo -n ' softflowd'
                ;;
        *)
                echo "Usage: `basename $0` {start|stop}" >&2
                ;;
        esac

exit 0

После того как скрипт создан, необходимо:

  • убедиться, что он находится в каталоге /usr/local/etc/rc.d
  • убедиться, что он имеет расширение .sh
  • убедиться, что он исполняемый, или дать команду:
    #chmod +x /usr/local/etc/rc.d/softflowd.sh
    

Для запуска скрипта в файле /etc/rc.conf следует установить переменные:

  • softflowd_enable - запускать softflowd при старте?
  • softflowd_interfaces - какие интерфейсы прослушивать?
  • softflowd_netflow_host - IP-адрес хоста коллектора NetFlow
  • softflowd_netflow_port - Порт на котором слушает процесс-коллектор NetFlow

  •  
 

Как вы оцениваете эту статью?

Отлично
Хорошо
Так себе
Отстой