Постановка задачи: В офисе обязательно необходимо настроить учёт траффика в сети Интернет или в локальной сети с разрезом на типы траффика, группы пользователей и прочие вкусности.
Примечание: Существует замечательный инструмент – 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