понедельник, 14 сентября 2009 г.

Настройка системы учета трафика на основе netams-3.4.2c

Начальник захотел узанть статистику по пользователям сети, типа - кто чего, сколько и в какое время. Встал вопрос об установке и настройке системы учета трафика (биллинга). Ну вот собственно как я это делал.
Все команды задавал от прав пользователя root
1. Скачал netams-3.4.2c с официального сайта http://netams.com/files/netams-3.4.2c.tar.gz
Для установки потребуются:
- MySQL или (postgreSQL) - сервер БД для хранения статистики
- Apache - Web-сервер, чтобы пользователи и начальник могли смотреть статистику не вдаваясь в подробности.
Как настраивать эту связку я уже описывал в статье
2. Устанавил недостающие пакеты набрав команду:
'apt-get install libc6-dev libmysqlclient15-dev libapache2-mod-perl2 php5 php5-mysql binutils cpp gcc g++ make libssl-dev ibnet-telnet-perl libdbd-mysql-perl libdbi-perl libdate-calc-perl libgd-graph-perl'
3. Устанавил библиотеку libpcap
'apt-get install libpcap0.8-dev'
4. По умолчанию библиотека libipq.a не устанавливается. Поэтому пришлось поставить:
'apt-get install iptables-dev'
5. Поставил пакет который включает в себя файл lhash.h
'apt-get install libcurl3-openssl-dev'
Если какого-то пакета в стандартной поставке Debian не найдется, то придется воспользоваться репозиторием из Интернета http://www.debian.org/distrib/packages#search_packages. Только вот текущая стабильная версия уже Lenny, а если нужна платформа Etch, то берем пакеты OldStable.
Для сборки пакета со всеми его возможностями необходимо поставить ВСЕ вышеуказанные пакеты!
6. Расппаковал архив, в каталог /usr/src/netams-3.4.3c
'tar -zxvf netams-3.4.2c.tar.gz /usr/src'
7. Перешел в каталог usr/src/netams-3.4.2c
'cd /usr/src/netams-3.4.2c'
8. Сконфигурировал пакет
'./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 необходимо очистить собранный ранее модуль модуль командой:
'make distclean && make'
После чего собственно и компилирую модуль
'make && make install'
9. Переименовал пример конфига собственно в конфиг:
'cp /etc/netams.conf.sample /etc/netams.conf'
Замечание: на многих сайтах, где описывают установку Netams файл конфигурации обзывают netams.cfg.example и netams.cfg. Так вот в версии 3.4.2с эти файлы называются netams.conf.sample и netams.conf соответственно (см. файл Rules.Make, опция CONFIG_FILE_NAME).
10. В FAQ официального сайта написано "Специально создавать базу данных не нужно (MySQL)." Но! Только в том случае если у пользователя root нет пароля. Тогда Netams все сделает сам. В моем же случае, устанавливая mysql, я закрыли пользователя root паролем, поэтому необходимо создать базу самостоятельно. Все это я делаю из консоли:
'mysql -u root -p '
mysql>connect netams;
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
11. Правлю netams.conf под свои нужды:
#NeTAMS version 3.4.1 (template config)
debug none
language ru
user name admin real-name Admin password 123 email admin@note.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 devilja password 102 ip 192.168.1.2 description "Violentiy Dmitry app.206" parent HomeNet acct-policy %local-traffic %perring www mail isq allip
unit user oid 05E69B name tiran password 103 ip 192.168.1.3 description "Bykov Ruslan app.411a" parent HomeNet acct-policy %local-traffic %perring www mail isq allip
unit user oid 05E69C name demon password 104 ip 192.168.1.4 description "Rendov 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
В конфигурации я отметил важные места. Все остальное можно почерпнуть с официального сайта - http://netams.com/doc/doc_services.html
Для быстрой проверки работоспособности запустил netams
'netams –l'
Замечание: Ключ – l создает и дописывает сообщения о работе в лог-файл (по умолчанию это /var/log/netams.log)Проверяю список процессов
'ps aux | grep netams'
Вижу netams, знач все нормально.
12. Замечание: стартовый скрипт, который собирается и устанавливается в init.d с названием netams.init.d у меня напрочь отказался управлять Netams-ом. Поэтому я взял за основу файл стартового скрипта для Linux из /usr/src/netams/addon/netams-linux-stratup.sh:
'cp /usr/src/netams/addon/netams-linux-stratup.sh /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
Я не настраивал пока админку и NaWt. Но если кому то интересно – читайте форум http://netams.com/doc/doc_services.html

Комментариев нет: