Хочу описать минимальную настройку этой программы потому, что часто после ее упоминания на форуме, народ в аське просит помочь ее настроить. Хотя есть и оф. доки...им этого мало. Ладно, приступим.NeTAMS (Network Traffic Accounting and Monitoring Software) - многофункциональная программа по учету и управлению IP-трафиком для маршрутизаторов Cisco или компьютеров под управлением Unix (Linux/FreeBSD/Solaris). Поддерживаются различные методы сбора статистики (tee/divert/ip_queue/ulog/libpcap/netflow v5 и v9/netgraph), хранения в базе данных (BerkleyDB/MySQL/PostgresSQL/Oracle/Radius), агрегирования, отображения, оповещения и пр. Возможно проводить блокировку на базе квот, авторизации, исчерпании баланса (биллинг); управлять полосой пропускания, контролировать подмену MAC-адреса, делать связь с RADIUS, создавать гибкие политики учета и фильтрации
Еще раз повторюсь. это пример минимальной настройки! На самом деле прога может много, о чем можно почитать тут: http://netams.com/doc/index.html.
Еще один нюанс. У меня Нетамс стоит уже более 2-х лет, и версия 3.3.5, на сайте же уже доступна последняя стабильная версия: 3.4.1rc1.
Т.к. момент установки я уже не помню, то я поднял виртуальную машину, на которую поставил минимум чего нужно для установки нетамса, поднял его на ней, а уже конфиг и т.д. беру со своего боевого сервака. Т.к. настройка минимальна, то конфиг от более старой версии программы прокатит и на новую.
В качестве базы данных я использую mysql, для заворота трафика на нетамс использую divert в ipfw, поэтому у вас должен быть настроено ядро как минимум с такими опциями:
Код: Выделить всё
options IPFIREWALL
options IPDIVERT
Идем в
Код: Выделить всё
cd /usr/ports/net-mgmt/netams/
# cat distinfo
MD5 (netams-3.4.0rc2.tar.gz) = 3093e50f8ee7a297cb8c2bc6bacd0666
SHA256 (netams-3.4.0rc2.tar.gz) = 7cbfdefa94f075a5dab40613d25738c0e2e40652638338b52632a0efdbc4f68e
SIZE (netams-3.4.0rc2.tar.gz) = 375729

Код: Выделить всё
#make install
Options for netams 3.4.0.r2
[ ] DEBUG Build with debug symbols
[ ] BW Build with bandwidth limitation functionality
[ ] HASH Build with HASH support
Код: Выделить всё
BW Build with bandwidth limitation functionality
Далее, ставим по-умолчанию.
Что-то долго не мог найти пакет. Но в итоге нашел и все установил:
Код: Выделить всё
The NeTAMS package has been successfully installed.
Check /usr/local/share/netams and http://www.netams.com for examples.
A sample configuration file has been installed to /usr/local/etc as
"netams.cfg.sample". This may be renamed to "netams.cfg" and edited.
In order to use the netamsctl programs, you may copy
/usr/local/share/netams/.netamsctl.rc to your home directory and edit it.
By default, CGI scripts are NOT installed, as well as web server is NOT configured.
You should do it yourself, and then copy entire /usr/local/share/netams/cgi/ directory to appropriate place.
And PLEASE READ THE DOCUMENTATION FIRST!
http://www.netams.com
--------------------------------------------------------------------------
===> Installing rc.d startup script(s)
===> Compressing manual pages for netams-3.4.0.r2
===> Registering installation for netams-3.4.0.r2
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/libexec/netams
/usr/local/sbin/ipfw2netflow
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/netams
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.netams.com/
Код: Выделить всё
[root@ /usr/ports/net-mgmt/netams]# cd /usr/local/etc/
[root@ /usr/local/etc]# cp netams.cfg.sample netams.cfg
[root@ /usr/local/etc]# ee netams.cfg
Я пока оставил его таким, ничего не меняя.#NeTAMS version 3.4.0 (template config)
#begin
#global variables configuration
debug none
user name admin real-name Admin password aaa email root@localhost permit all
#services configuration
service server 0
login local
listen 20001
max-conn 6
service processor 0
lookup-delay 60
flow-lifetime 180
policy name ip target proto ip
policy name www target proto tcp ports 80 81 8080 3128
policy name mail target proto tcp ports 25 110
restrict all pass local pass
unit group name CLIENTS acct-policy ip www mail
unit host name server ip 192.168.0.1 acct-policy ip www mail
unit user name client1 ip 192.168.0.10 parent CLIENTS email client1@domain.ru acct-policy ip www mail
unit net name LAN ip 192.168.0.0/24 acct-policy ip www mail
storage 1 all
service storage 1
type mysql
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 /usr/local/www/stat
run 10min
htaccess yes
client-pages all
url http://192.168.0.1/stat/
language ru
service scheduler
oid 08FFFF time 10min action "html"
# $Id: netams.cfg,v 1.12 2006-12-29 18:44:52 anton Exp $
#end
Далее делаем
Код: Выделить всё
echo "netams_enable=\"YES\"" >> /etc/rc.conf
Код: Выделить всё
[root@ /usr/local/etc]# /usr/local/etc/rc.d/netams start
Starting netams.
[root@ /usr/local/etc]# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root netams 15866 4 tcp4 127.0.0.1:20001 *:*
mysql mysqld 15154 10 tcp4 *:3306 *:*
root sendmail 631 3 tcp4 127.0.0.1:25 *:*
root sshd 625 4 tcp4 *:22 *:*
root syslogd 500 7 udp4 *:514 *:*
Далее делаем все по документации. Мы видим, что нетамс у нас слушается на 20001-м порту. в конфиге выше была строка:
Код: Выделить всё
user name admin real-name Admin password aaa email root@localhost permit all
заходим телнетом на 20001-й порт
Код: Выделить всё
[root@ /usr/local/etc]# telnet 127.0.0.1 20001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
NeTAMS 3.4.0 (3146.1) root@ / Mon Feb 25 01:38:51 UTC 2008
Username: admin
Password:
Код: Выделить всё
> html
> save
> show version
NeTAMS 3.4.0 (3146.1) root@ / Mon Feb 25 01:38:51 UTC 2008
Run time 1 mins 51.1777 secs
System time: 1 mins 0.3991 secs
Average CPU/system load: 0.36%
Process ID: 15866 RES: 3868K
Memory allocated: 597212 (108), freed (22) (0 NULL) [86 used]
Total objects:
Oids used: 9
NetUnits: 4
Policies: 3
Services: 10
Users: 1
Connections: 1 active, 1 total
Services info:
Storage ID=1 type mysql wr_q 0/7 rd_q 0/0
Data-source ID=1 type LIBPCAP source eth0:0 loop 0 average 0 mcsec
Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
Alerter 0 queue max: 255, current: 0
Scheduled tasks: 1
> show config
#NeTAMS 3.4.0 (3146.1) root@ / Mon Feb 25 01:38:51 UTC 2008
#configuration built Mon Feb 25 01:45:38 2008
#begin
#global variables configuration
debug none
language ru
user oid 06260D name admin real-name "Admin" crypted $1$$HpXmjtul/3i1.bf.B27bU. email root@localhost permit all
#services configuration
service server 0
login local
listen 20001
max-conn 6
service processor
lookup-delay 60
flow-lifetime 180
policy oid 00D9B2 name ip target proto ip
policy oid 09DC4B name www target proto tcp port 80 81 8080 3128
policy oid 07A20C name mail target proto tcp port 25 110
restrict all pass local pass
unit group oid 099818 name CLIENTS acct-policy ip www mail
unit host oid 03C6A3 name server ip 192.168.0.1 acct-policy ip www mail
unit user oid 02D10B name client1 ip 192.168.0.10 email client1@domain.ru parent CLIENTS acct-policy ip www mail
unit net oid 01988F name LAN ip 192.168.0.0/24 acct-policy ip www mail
service storage 1
type mysql
accept all
service data-source 1
type libpcap
source eth0
rule 11 "ip"
service quota
policy ip
notify soft owner
notify hard owner
notify return owner
service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost
service html
path /usr/local/www/stat
run 10min
url http://192.168.0.1/stat/
htaccess yes
client-pages all
account-pages none
service scheduler
oid 08FFFF time 10min action "html"
#end
>

Далее я на всякий случай проверил, создал ли он базу.
Код: Выделить всё
[root@ /usr/local/etc]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.0.51a FreeBSD port: mysql-server-5.0.51a
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| netams |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql> use netams;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+------------------+
| Tables_in_netams |
+------------------+
| events |
| oids |
| quota |
| summary |
+------------------+
4 rows in set (0.01 sec)
Кроме mysql нам понадобится еще настроенный web-server, я использую apache. С его помощью пользователи смогут смотреть статистику.
Теперь выкладываю свой конфиг и рассказываю что и зачем.
Код: Выделить всё
#NeTAMS version 3.3.5 (build 2916.1) compiled by root@freeserv.home
#configuration built Thu Nov 16 21:50:15 2006
#begin
#global variables configuration
debug none
language ru
user oid 02A6F4 name admin real-name "Eugene" crypted $1$$1CXSo9ZU3rRh4yE2MnSlV0 email root@localhost permit all
#services configuration
service server 0
login local
listen 20001
max-conn 6
service processor
lookup-delay 30
flow-lifetime 180
policy oid 0B4940 name ip target proto ip
restrict all drop local pass
unit net oid 022222 name stah_all ip 10.0.0.0 mask 255.255.255.0 description "net 10.0.0.0" password 123 no-local-pass acct-policy ip
unit host oid 033333 name server ip 193.16.хх.хх
unit host oid 000001 name eugene ip 10.0.0.1 description "ip 192.168.10.5" email eugene@localhost password 123 acct-policy ip
unit host oid 000002 name agent ip 10.0.0.2 description "ip 192.168.10.18" password 123 acct-policy ip
unit host oid 000003 name chetkiller ip 10.0.0.3 description "ip 192.168.10.7" password 123 acct-policy ip
unit host oid 000004 name sirius ip 10.0.0.4 description "ip 192.168.10.29" password 123 acct-policy ip
unit host oid 000005 name TEAC ip 10.0.0.5 description "ip 192.168.10.40" password 123 acct-policy ip
service storage 1
type mysql
host localhost
user LOGIN
password PASSWORD
accept all
service data-source 1
type ip-traffic
source divert 199
layer7-detect urls
service login
storage 1
set no name eugene password 123456 inact 3000 abs 0
relogin yes
service monitor 0
monitor to file /usr/tmp/mon_netams.log
monitor unit 000001
monitor unit 000002
monitor unit 000003
monitor unit 000004
monitor unit 000005
service quota
policy ip
notify soft {owner}
notify hard {owner} 02A6F4
notify return {owner}
service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost
service html
path /usr/local/www/data/stat
run 5min
url http://192.168.10.100/stat/
htaccess yes
client-pages all
account-pages all
service scheduler
oid 08FFFF time 5min action "html"
#end
сперва меняем логин/пароль админа нетамса.
Код: Выделить всё
user oid 02A6F4 name admin real-name "Eugene" password SUPERPASS email root@localhost permit all
Далее
Сильна расписывать не буду, т.к. все есть в доке. В кратце: нетамс слушает 20001-й порт, висит на локалхосте и имеет максимальное число одновременно открытых подключений к процессу 6.service server 0
login local
listen 20001
max-conn 6
дальше.
Код: Выделить всё
service processor
lookup-delay 30
flow-lifetime 180
policy oid 0B4940 name ip target proto ip
restrict all drop local pass
unit net oid 022222 name stah_all ip 10.0.0.0 mask 255.255.255.0 description "net 10.0.0.0" password 123 no-local-pass acct-policy ip
unit host oid 033333 name server ip 193.16.хх.хх
unit host oid 000001 name eugene ip 10.0.0.1 description "ip 192.168.10.5" email eugene@localhost password 123 acct-policy ip
unit host oid 000002 name agent ip 10.0.0.2 description "ip 192.168.10.18" password 123 acct-policy ip
unit host oid 000003 name chetkiller ip 10.0.0.3 description "ip 192.168.10.7" password 123 acct-policy ip
unit host oid 000004 name sirius ip 10.0.0.4 description "ip 192.168.10.29" password 123 acct-policy ip
unit host oid 000005 name TEAC ip 10.0.0.5 description "ip 192.168.10.40" password 123 acct-policy ip
строка restrict all drop local pass, говорит о том, что трафик с ИП-адресов не описанных в конфигурации нетамса пропускаться не будет.
по-этому нужно включить и внешний ИП-самого сервера.
далее, я создал один unit, описывающий сеть, а также описал каждого пользователя.
тут подсчет трафика идет по ip из сети 10.0.0.0/24. опция description позволяет задать любое описание юнита, в моем случае, это ИП-машины пользователя (у меня пользователи имеют статический Ип из сети 192.168.10.0/24, а при подключении по впн им выдается ИП из диапазаона 10.0.0.0/24). Далее идет пароль доступа к страничке со статистикой, ну и указание каким policy мы ограничиваем пользователя, у меня всех ограничиваем полиси ip.
далее.
Код: Выделить всё
service storage 1
type mysql
host localhost
user LOGIN
password PASSWORD
accept all

Что бы установить логин/пароль для базы нетамса, заходим в mysql и даем команду:
Код: Выделить всё
grant all privileges on netams.* to 'LOGIN'@'localhost' identified by 'PASSWORD';
Код: Выделить всё
service data-source 1
type ip-traffic
source divert 199
layer7-detect urls
Код: Выделить всё
#NeTAMS-NAT-NeTAMS-out
${fwcmd} 1000 add divert 199 ip from 10.0.0.0/24 to any out xmit ${oif}
${fwcmd} 1100 add divert 8668 ip from 10.0.0.0/24 to any out xmit ${oif}
#NeTAMS-NAT-NeTAMS-in
${fwcmd} 1195 add divert 8668 ip from any to me in recv ${oif}
${fwcmd} 1200 add divert 199 ip from any to 10.0.0.0/24 in recv ${oif}
Код: Выделить всё
service monitor 0
monitor to file /usr/tmp/mon_netams.log
monitor unit 000001
monitor unit 000002
monitor unit 000003
monitor unit 000004
monitor unit 000005
Сервис login и quota, я опишу в следующей статье.
И последний
Код: Выделить всё
service html
path /usr/local/www/data/stat
run 5min
url http://192.168.10.100/stat/
htaccess yes
client-pages all
account-pages all
Так же описываем тип доступа, в данном случае, включен механизм htaccess, котороый позволяет разграничить доступ пользователям только к своим страницам статистики исходя из логина/пароля.
Теперь опишем секцию нетамса в апаче:
Код: Выделить всё
<Directory "/usr/local/www/data/stat/">
AllowOverride All
Options None
Order deny,allow
Allow from 192.168.10.66 192.168.10.97 192.168.10.45 192.168.10.5 192.168.10.18
Deny from all
</Directory>
далее делаем stop/start нетамсу, рестартуем апач. и через некоторое время ждем появления статистики по указанному url (http://192.168.10.100/stat/). тут спросит логин/пароль админа.
(если не хочется ждать, можно зайти телнетом и выполнить команду html).
Так же есть хорошая примочка у разработчиков. Чтобы каждый раз не ходить телнетом, есть так называемый netamsctl.
netamsctl - примитивный telnet-клиент, позволяющий передать одну или несколько команд для работающего netams. Он работает через обычный TCP-сокет. Открывается соединение, отправляется команда, получается и выводится на экран ответ сервера.
Итак настроим его.
Код: Выделить всё
# whereis netamsctl
netamsctl: /usr/local/bin/netamsctl /usr/local/man/man8/netamsctl.8.gz /usr/ports/net-mgmt/netams/work/netams-3.3.5/src/netamsctl
Код: Выделить всё
login=LOGIN
password=PASSWORD
host=localhost
далее работать примерно так:
Код: Выделить всё
# netamsctl "show version"
host: localhost port: 20001 login: LOGIN password: PASSWORD
cmd: show version
NeTAMS version 3.3.5 (build 2916.1) root@freeserv.home / Sun Jun 25 18:08:46 EEST 2006
Run time: 10 days 5 hours 57 mins 2.4393 secs
System time: 5 hours 57 mins 35.4570 secs
Average CPU/system load: 2.42%
Process ID: 69168 RES: 3620K
Memory allocated: 54495887 (1513554), freed (1503417) (0 NULL) [10137 used]
Total objects:
Oids used: 75
NetUnits: 71
Policies: 1
Services: 12
Users: 3
Connections: 2 active, 49 total
Scheduled tasks: 1
Alerter 0 queue max: 255, current: 0
Services info:
Storage ID=1 type MYSQL wr_q 0/288146 rd_q 0/70
Data-source ID=1 type IP_FILT source divert:199 loop 111323580 average 5 mcsec
Perf: average skew delay 115 mcsec, PPS: 154, BPS: 42560
Код: Выделить всё
netamsctl "service processor && unit host name pupkin sys-deny && exit"
У меня исторически сложилось так, что я описываю все в конфиге ручками. а затем рестартую нетамс. Мне так удобнее, например для бекапирования, или просто посмотреть предыдущую запись...в общем имхо

Ну вот вроде и все.
Пишите, если все гут, буду запускать ф печать.
А пока опишу , что обещал. ограничение скорости, квоты, сервис логин.