настройка учета трафика

на основе netams-3.4.5

Постановка задачи: В офисе обязательно необходимо настроить учёт траффика в сети Интернет или в локальной сети с разрезом на типы траффика, группы пользователей и прочие вкусности.

Примечание: Существует замечательный инструмент – Netams 3. К сожалению, разработчики целиком отошли в сторону коммерческой версии (переросли так сказать опенсорс) и перестали поддерживать 3-ю версию в принципе. Да, у них есть 4-й Netams, но он уже на Java и это грустно. К сожалению 3-я версия чаще всего "не взлетает" с современными дистрибутивами или пакетами. Если же Вы имеете на борту старенький Debian `Etch` или `Lenny` – можете смело продолжать чтение и настройку...

Для начала нам необходимо скачать netams-3.4.5 можно на официальном сайте netams-3.4.5

Кроме того, понадобится:

  • 1. MySQL или (postgreSQL) - сервер БД для хранения статистики
  • 2. Apache - Web-сервер, чтобы клиенты могли смотреть статистику

Положим, что две первых позиции мы успешно настроили выше. Доставляем все недостающие пакеты:

server:/# apt-get install libc6-dev libmysqlclient15-dev libapache2-mod-perl2 php5 php5-mysql binutils cpp gcc g++ make libssl-dev libnet-telnet-perl libdbd-mysql-perl libdbi-perl libdate-calc-perl libgd-graph-perl

Устанавливаем библиотеку libpcap

server:/# apt-get install libpcap0.8-dev

По умолчанию библиотека libipq.a не устанавливается. Поэтому придется ее доставлять

server:/# apt-get install iptables-dev

Доставляем пакет который включает в себя файл lhash.h

server:/# apt-get install libcurl3-openssl-dev

Примечание: Учтите, что если какого-то пакета в стандартной 3-DVD поставке дебиана не найдется, то придется воспользоваться репозиторием из Интернета www.debian.org/distrib/packages#search_packages. Только примите к сведению что текущая стабильная версия уже Lenny, а если ваша платформа Etch, то берите пакеты OldStable. Для сборки пакета со всеми его возможностями необходимо поставить ВСЕ вышеуказанные пакеты!

Распаковать архив, например, в каталог /usr/src/netams-3.4.5

server:/# tar  -zxvf  netams-3.4.5.tar.gz  /usr/src
server:/# cd /usr/src/netams-3.4.5
server:/# ./configure.sh

########################################################## 
## Configuring NeTAMS for build targets...          
Linux operating system... 
Will have LIBIPQ support
Optional features: Use_cli_enable BW_limit Fast_FW_checks Layer7_filter Hash_database
Will have MYSQL support
[ /usr/lib      /usr/include/mysql ]
Will have BILLING service
Will have DEBUG flag set
Will have RADIUS support
## Configuration file was built. 
##########################################################

Обратите внимание на строчку Will have MYSQL support [ /usr/lib /usr/include/mysql]. Всё бы ничего, да вот при таком раскладе конфигурации скомпилированный модуль netams не увидел нашу базу MySQL. ) Долго не мог понять в чем же дело и в конце концов просто сменил в файле Rules.Make: LIB+ = -lmysqlclient –L/usr/lib на LIB+ = -lmysqlclient –L/usr/lib/mysql. Теперь можно компилировать...

Примечание: Ежели вы сменили конфигурацию уже после того, как однажды скомпилировали модуль командой make, то после внесенных исправлений в файле Rules.Make (исправление выше, или просто отключили какие-то модули, или даже просто дописали необходимые пути до заголовочных файлов и библиотек) необходимо собирать модуль командами:

server:/# make distclean && make

Однако в версии 3.4.5 проблем с нахождением библиотек БД MySQL уже нет. Можно ничего не править а смело собирать и устанавливать!

Иначе, после исправления файла Rules.Make командуем:

server:/# make
server:/# make install
server:/# cp /etc/netams.conf.sample /etc/netams.conf

Примечание: на многих сайтах, где описывают установку Netams файл конфигурации обзывают netams.cfg.example и netams.cfg. Так вот в версии 3.4.5 эти файлы называются netams.conf.sample и netams.conf соответственно (см. файл Rules.Make, опция CONFIG_FILE_NAME). Там же можно (и нужно) подправить название исполняемого скрипта на netams.sh!

В FAQ официального сайта написано "Специально создавать базу данных не нужно (MySQL)." Но! Только в том случае если у пользователя root нет пароля. Тогда Netams все сделает сам. В нашем же случаем, устанавливая mysql, мы закрыли пользователя root паролем, поэтому необходимо создать базу самостоятельно. Это можно сделать из консоли:

server:/# mysql -u root -p 

mysql>
mysql> create database netams;
Query OK, 1 row affected (0.00 sec)
mysql>grant select,insert,delete,update,create on netams.* to netams;
mysql>grant select,insert,delete,update,create on netams.* to netams@localhost;
mysql>set password for 'netams'@'localhost'=password('****');
mysql>set password for 'netams'@'%'=password('****');
mysql>flush privileges;
mysql>\q

От себя добавлю, что абсолютно неважно чем и как добавлять новую базу MySQL, нового пользователя и дать ему права... Можно использовать любимый phpmyadmin. Дальше правим netams.conf под свои нужды:


#NeTAMS version 3.4.1 (template config)

debug none
language ru
user name admin real-name Admin password XXXXXX email admin@XXXXXX.by permit all

#services configuration
service server 0
login local
listen 20001
max-conn 6

service processor 0
lookup-delay 60
flow-lifetime 300
policy oid 06521A name allip target proto ip
policy oid 06521B name www target proto tcp port 80 81 21 22 443
policy oid 06521C name mail target proto tcp port 25 110
policy oid 06521D name isq target proto tcp port 5190
policy oid 06521E name local-traffic target file /etc/local.txt
policy oid 06521F name perring target file /etc/perring.txt
restrict all pass local pass
unit group oid 09521A name HomeNet acct-policy %local-traffic %perring www mail isq allip 

unit user oid 05E69A name user1 password 102 ip 192.168.1.2 description "Dmitry app.206" parent HomeNet acct-policy %local-traffic %perring www mail isq allip 
unit user oid 05E69B name user2 password 103 ip 192.168.1.3 description "Ruslan app.411a" parent HomeNet acct-policy %local-traffic %perring www mail isq allip 
unit user oid 05E69C name user3 password 104 ip 192.168.1.4 description "Dmitry app.212" parent HomeNet acct-policy %local-traffic %perring www mail isq allip  

unit net oid 0E4B33 name LAN ip 192.168.1.0/24 acct-policy %local-traffic %perring 
www mail isq allip  
storage 1 all

service storage 1
type mysql
user netams
password ********
host localhost
dbname netams

service data-source 1
type libpcap
source eth0
rule 11 "ip"

service quota 0
policy ip
notify soft {owner} 
notify hard {owner} admin
notify return {owner} 
storage 1

service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost

service html 0
path /var/www/netams/stat
run 10min
htaccess yes
client-pages all
url http://192.168.1.1/netams/
language ru

service scheduler
oid 08FFFF time 10min action "html"

#end

В конфигурации я отметил важные места. Все остальное можно почерпнуть с официального сайта - netams.com/doc/doc_services.html. Для быстрой проверки работоспособности можно запустить netams

server:/#  netams –l

Примечание:Ключ –l создавать и дописывать сообщения о работе в лог-файл (по умолчанию это /var/log/netams.log)

Если все прошло успешно, то в списке процессов вы должны увидеть netams:

server:/# ps aux | grep netams

Стартовый скрипт, который собирается и устанавливается в init.d с названием netams.init.d (если вы не исправили выше в файле Rules.Make его название на netams.sh) у меня напрочь отказался управлять Netams-ом. Требовал создать файл /etc/default/netams и добавить строку RUN=yes, и даже после этого служба не хотела запускаться, не записывая в лог ни единого сообщения! Поэтому я взял за основу файл стартового скрипта для Linux из дистрибутива пакета:/addon/netams-linux-startup.sh. И дописал его до удобоваримого вида:

# cp /usr/src/netams-3.4.5/addon/netams-linux-startup.sh /etc/init.d/netams.sh
# vim /etc/init.d/netams.sh

#! /bin/sh
### BEGIN INIT INFO
# Provides:          netams.sh
# Required-Start:
# Required-Stop:
# Default-Start:     3
# Default-Stop:
# Short-Description: Run /etc/init.d/netams.sh if it exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
daemondir=/usr/local/sbin
path_to_etc=/etc

case "$1" in
        start)
        sleep 3;
        /bin/mkdir -p /var/run/netams
        if [ -x $daemondir/netams ]; then
                if [ -f $path_to_etc/netams.conf ]; then
                        $daemondir/netams -lf $path_to_etc/netams.conf >/dev/null
                        echo ""
                        echo "NeTAMS 3.4.2 started..."
                fi
        fi
        ;;

        restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;

        stop)
        killall netams
        rmdir /var/run/netams
        echo ""
        echo "NeTAMS 3.4.2 stoped..."
        ;;

        *)
        echo "Usage: $0 start | stop"
        ;;
esac

Выставим правильные права на стартовый скрипт:

server:/# chown root:root /etc/init.d/netams.sh
server:/# chmod +x /etc/init.d/netams.sh  

И добавим любым способом скрипт в автозагрузку (например, добавим в /etc/rc.local):

/etc/init.d/netams.sh

Комментарии

Комментарии отключены, сожалеем