Простая настройка NeTAMS во FreeBSD

Wednesday, 03 May 2006

http://www.rostovlinux.ru/content/view/947/56/

По многочисленным и уже весьма поднадоевшим просьбам публикую подробную инструкцию по настройке NeTAMS во FreeBSD с использованием данных о трафике из IPFW, с сохранением статистики в MySQL и генерацией страниц-отчетов в виде HTML.

Disclimer: Во-первых безусловно NeTAMS мощный инструмент и сделать в нем можно много чего, но я пишу инструкцию самую попсовую для начинающих, которым надо только считать трафик. Во-вторых, да, ipacct это очень здорово и надо использовать именно его, но если админ хочет NeTAMS, почему бы ему не помочь? Тем более что если статистика делается в первую очередь для того, чтобы начальство могло её понимать NeTAMS и проще и гибче. Всё это субъективно, потому статья только для согласных с этим :-) В третьих, написано всё это в попыхах, в перерывах между основной работой, возможно я что-то забыл, но вообще за последнюю неделю именно таким способом я подня три разных сервера, и всё это работает, вот только нетамс с каждым обновлением меняет синтаксис конфига, будьте внимательны.

Внимание !!! Эта статья типичное хауту. Хауту для FreeBSD. А все эти хауту совсем не BSD-way, так что всё таки очень настоятельно рекомендуется читать именно инструкцию к NeTAMS-у, а не эту статью. Но тем не менее...

И так, дано:

Маршрутизатор на FreeBSD с ipfw + natd. Диверт в natd осуществляется через

10000-е правило ipfw

rl0 внутренний интерфейс, смотрящий в локальную сеть

rl1 внешний интерфейс, смотрящий в сеть провайдера.

Локальная сеть 192.168.1.0/255.255.255.0, адрес маршрутизатора 192.168.1.1

Ну во-первых нам понадобится Apache ставим порт /usr/ports/www/apache13.

Во-вторых нам понадобится MySQL, например, пятый, ставим /usr/ports/databases/mysql5-server. ВАЖНО! Не ставьте порт нетамса /usr/ports/net-mgmt/netams до того как поставите MySQL. Сначала MySQL, потом NetAMS иначе второй соберется без поддержки первого и так или иначе придется его пересобирать.

Пропишите в /etc/rc.conf следующие строки:

apache_enable=YES

mysql_enable=YES

Затем создайте файл /usr/local/etc/rc.d/netams.sh, в него запишите строчку /usr/local/libexec/netams (без кавычек конечно) и дайте команду

chmod 777 /usr/local/etc/rc.d/netams.sh

в /usr/local/etc/apache/httpd.conf поменяйте пути Directory и DocumentRoot.

Приведите их к следующему виду:

DocumentRoot "/usr/netams/"

<Directory "/usr/netams/">

Теперь создайте директорию /usr/netams командой

mkdir /usr/netams

На этом этапе, можно сказать, настройка Apache и MySQL завершена. Конечно, MySQL в данном случае остался с доступом root без пароля, но если никто на ваш сервер кроме вас больше не суется, и он тщательно зафаерволен, то это, в общем, не страшно. Переходим к настройке NeTAMS

У вас должен появиться файл /usr/local/etc/netams.cfg, начинающийся с таких строк:

#NeTAMS version 3.1(1830.1) compiled by root@storage

#configuration built Tue Apr 26 06:17:01 2005

#begin

Перейдем к самому важному: найдем service processor 0

Там должны обязательно быть такие строки:

lookup-delay 2

flow-lifetime 5

Опишем две политики Интернет и локальный трафик

policy acct oid 030000 name internet target proto ip

policy acct oid 030001 name local-traffic target file /usr/netams/local.txt

Как можно понять из написанного, политика internet включает в себя вообще всё, а политика local-traffic включает в себя адреса, написанные в

файле /usr/netams/local.txt

Далее поставим строчку, чтобы никто не мог, сменив адрес на неописаный в конфиге, попасть в интернет бесплатно:

restrict all drop local pass

и тоже самое опишем для всей сети:

unit net oid 020000 name ALL-TRAFFIC ip 192.168.1.0 mask 255.255.255.0

no-local-pass acct-policy %local-traffic internet

Видите, как описана политика учета? Объясняю: так как internet это вообще всё, нам нужно, если трафик локальный, не пустить его к политике учета internet, для этого мы и ставим процент перед политикой local-traffic этот символ означает последний в списке проверки. Таким образом, если абонент заходит на адрес, втречающийся в списке /usr/netams/local.txt, данные по трафику с этого адреса заносятся только в политику local-traffic и в политику internet не попадают, если же абонент зашел на другой адрес, local-traffic ничего не защитал, информация передалась политике internet. Существует популярное заблуждение, в которое вводят авторы документации NeTAMS, дескать для этой цели есть символ ! Перед политикой. НЕТ! Этот символ исключает трафик политики, и считать его просто не получится.

Теперь зададим тех юзеров, которых мы согласны выпустить в интернет и трафик которых мы и будем считать:

unit host oid 020002 name Valera ip 192.168.1.50 acct-policy %local-traffic

internet

unit host oid 020003 name Roman ip 192.168.1.51 acct-policy %local-traffic

internet

unit host oid 020004 name Stepan ip 192.168.1.52 acct-policy %local-traffic

internet

Синтаксис тот же самый. Номер oid, Имя (для удобства просмотра статистики в HTML всё тем же начальством :-) адрес, политика учета.

Завершается описание сервиса процессор 0 строкой storage 1 all

Теперь опишем этот самый storage, это все го две строки:

service storage 1

type mysql

Ну а теперь платформозависимая конфигурация:

service data-source 1

type ip-traffic

source divert 199

rule 9999 "ip from any to any out via rl0"

rule 10001 "ip from any to any in via rl0"

Этот сервис описывает откуда брать инфу о трафике. В данном случае мы берем её из фаервола FreeBSD IPFW.

Обратите внимание NeTAMS окутывает диверт в natd своими правилами, но слушает внутренний интерфейс, а не внешний.

Ну а дальше просто

service html 0

path /usr/netams

language ru

run 1min

client-pages all

Ну собственно вот и всё, в конце конфига можете написать #end и сохранить его.

В файл /usr/netams/local.txt можно что-нибудь написать, например:

172.22.0.0 /16

172.31.255.5 /255.255.255.255

Перезагружайтесь и через минуту первые данные о трафике уже будут доступны любому абоненту через веб-интерфейс вашего маршруизатора.

Давайте сверимся еще раз, конфиг будет вроде этого:

#NeTAMS version 3.1(1830.1) compiled by root@storage

#configuration built Tue Apr 26 06:17:01 2005

#begin

#global variables configuration

debug none

user oid 01327B name admin real-name "Dmitry" crypted

$1$$GmbL3iXOMZR57QuGDLv.L1 email

root@solink.ru

permit all

schedule oid 08FFFF time hourly- action "html"

#services configuration

service server 0

login any

listen 20001

max-conn 6

service processor 0

lookup-delay 2

flow-lifetime 5

policy acct oid 030000 name internet target proto ip

policy acct oid 030001 name local-traffic target file /usr/netams/local.txt

restrict all drop local pass

unit net oid 020000 name ALL-TRAFFIC ip 192.168.1.0 mask 255.255.255.0

no-local-pass acct-policy %local-traffic internet

unit host oid 020002 name Valera ip 192.168.1.50 acct-policy %local-traffic

internet

unit host oid 020003 name Roman ip 192.168.1.51 acct-policy %local-traffic

internet

unit host oid 020004 name Stepan ip 192.168.1.52 acct-policy %local-traffic

internet

storage 1 all

service storage 1

type mysql

service data-source 1

type ip-traffic

source divert 199

rule 9999 "ip from any to any out via rl0"

rule 10001 "ip from any to any in via rl0"

service html 0

path /usr/www/netams

language ru

run 1min

client-pages all

#end

Последнее обновление ( Thursday, 04 May 2006 )

Обновлено: 12.03.2015