NeTAMS - продолжение (login, bandwith, quota)

Автор: schizoid.

1. Ограничение скорости в НеТАМС.

При установки нетамса, появляется примерно такое окошко

#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 .

Если честно, то я так не пробовал. Когда я ставил на сервак, этой опции еще не было, а пересборка производилась таким путем:

make distclean && FLAGS=-DHAVE_BW make

Но думаю, что с включенной опцией оно уже умеет делать правильно.

Итак нетамс собрался. (Более подробно по начальной настройке нетамса читайте в предыдущей статье).

Из всего конфига нас интересует сервис processor.

!!! Строки взятые в квадратные скобки [...] - нужно писать в одну строку !!!

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.20"

email eugene@my.domen.ru password 123 bw 256.000K acct-policy ip]

[unit host oid 000002 name agent ip 10.0.0.2 description "ip 192.168.10.141"

password 123 bw 256.000K acct-policy ip]

[unit host oid 000003 name chetkiller ip 10.0.0.3 description "ip 192.168.10.21"

password 123 bw 256.000K acct-policy ip]

[unit host oid 000004 name sirius ip 10.0.0.4 description "ip 192.168.10.2"

password 123 bw 256.000K acct-policy ip]

[unit host oid 000005 name TEAC ip 10.0.0.5 description "ip 192.168.10.18"

password 123 bw 256.000K acct-policy ip]

Как видим, ограничение скорости включается весьма просто, простым добавлением bw 256.000K. Так же есть возможность организации асинхронного канала ([bw { speed in speed out | speed } ]). Например:

!!! Строки взятые в квадратные скобки [...] - нужно писать в одну строку !!!

[unit host oid 000001 name eugene ip 10.0.0.1 description "ip 192.168.10.20"

email eugene@my.domen.ru password 123 bw 256.000K in 128.000K out acct-policy ip]

Вот собственно и все.

2. Сервис квота в НеТАМС.

Основные свойства:

1. Хранение информации о квотах клиентов в базе SQL. В настоящий момент

поддерживается MySQL и Postgres.

2. Возможность задания политики учета (контроля), параметров оповещения по умолчанию.

3. Возможность задания всех параметров квот по трафику индивидуально для

каждого юнита. Это величины входящего, выходящего и суммарного трафика начиная

с момента начала часа, дня, недели и месяца.

4. Возможность задания порога "мягкого срабатывания" в процентах от "жесткой" квоты

индивидуально для каждого юнита.

5. Возможность гибкого управления параметрами оповещения при срабатывании и

возвращении квоты.

Сервис квота в конфиге включается строчками:

service quota

policy ip

notify soft {owner}

notify hard {owner} username

notify return {owner}

Опишем опции.

policy ip - Задает политику учета (acct-policy), которая будет использоваться при проверке квот. Это политика по умолчанию для всех, существует возможность переопределить ее для конкретного юнита. Если не указано, используется первая политика из определенных policy XXX сервиса processor.

Секции notify задают кому будет слаться оповещение о превышении квоты (soft - мягкая квота, hard - жестакая квота,return - восстановление работы, когда период действия квоты закончился). Нужно что бы в описании юнита присутствовал его e-mail (опция email eugene@my.domen.ru). Здесь {owner} - владелец юнита, username - имя или OID пользователя (администратора).

Далее, задаем квоту:

netamsctl "service quota && set name eugene policy ip day 5M sum && exit"

Здесь мы задали юниту eugene суммарную дневную квоту в 5Мб при полиси ip.

Здесь я не все опции показал, многие из них установлены по-умолчанию:

soft_treshold 80 - порог мягкой квоты

delay 10 - Интервал времени между периодическими проверками всех юнитов на

наступление момента рабатывания квоты. Задается в секундах.

notify_soft 1 - сообщение шлется владельцу юнита

notify_hard 1 - сообщение шлется владельцу юнита

notify_return 1 - сообщение шлется владельцу юнита

Также можно указать и другие временные интервалы ([hour ... ], [day ...], [week ...], [month ...]), amount - значение квоты (в байтах, но можно использовать модификаторы K, M, G), {in|out} - направление квотируемого трафика, {sum} - суммарный трафик (в обоих направлениях).

Просмотреть установленную квоту можно либо на страничке статистики (только для админа), либо командой netamsctl "show quota".

Отменить установленную квоту можно так:

netamsctl "service quota && set name eugene poliсy ip day 0 sum && exit"

Вот и все.

3. Сервис login.

В кратце - это веб-морда для пользователя, с помощью которой он может заблокировать/разблокировать свой аккаунт.

Настраивается так:

service login

storage 1

set no name eugene password 123456 inact 3000 abs 0

relogin yes

При рестарте нетамса, создастся еще одна таблица в базе netams.

Здесь опции:

unit_oid - Идентификатор (OID) юнита, является уникальным ключом к базе данных

password - Пароль пользователя. Никогда не пытайтесь поменять его извне программы путем прямой записи в SQL.

inact - Величина таймаута неактивности для данного пользователя

abs - Величина абсолютного таймаута для данного пользователя

last_changed - Время (в формате UNIXTIME) последнего изменения записи

last_opened_time - Время (в формате UNIXTIME), когда был в последний раз предоставлен доступ юниту

last_opened_ip - IP-адрес, с которого был предоставлен доступ юниту

last_opened_mac - MAC-адрес, с которого был предоставлен доступ юниту

def_state - Режим доступа этого юнита по умолчанию (например, сразу после старта программы). 0 означает отсутствие доступа, 1 означает разрешения доступа.

curr_state - Текущий режим доступа этого юнита. 0 означает отсутствие доступа, 1 означает разрешения доступа. К сожалению, по наступлении таймаута не сбрасывается (баг).

Теперь настраиваем апач для понимания cgi скриптов:

LoadModule cgi_module libexec/apache2/mod_cgi.so

...

ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"

<Directory "/usr/local/www/cgi-bin">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

...

AddHandler cgi-script .cgi

AddHandler cgi-script .pl

Перегружаем апач.

Далее идем в /usr/ports/net-mgmt/netams/work/netams-х.х.х/cgi-bin (правда если не делали clean при установке, иначе нуно будет залезть внуть пакета). Тут нам понадобятся 3 файла:

-rwxr-xr-x 1 root wheel 479 16 фев 02:13 config.cgi

-rwxr-xr-x 1 root wheel 3707 16 фев 02:30 login.cgi

-rwxr-xr-x 1 root wheel 3267 21 июн 2005 netams_api.pl

Копируем все это счастье в /usr/local/www/cgi-bin-dist, и подправляем под свою конфигурацию. А именно:

#

#-----------------------------------------------------------------------------

# $Id: config.cgi,v 1.5 2005/04/06 16:21:49 anton Exp $

# Data required to do a script login, change this

# login to netams

$sc_host="localhost"; $sc_port=20001; $sc_user="LOGIN"; $sc_passwd="PASSWORD";

#login to database

$mysql_host="localhost"; $mysql_login="netams"; $mysql_password="PASSWORD";

$mysql_dbname="netams";

#log events

$log_to_events="yes";

#URL to statistic

$statistic_url="/stat";

Ну в прнципе и все. Еще в login.cgi есть описание картинки, которая отображается в веб-морде. Там можно изменить путь к любой своей картинке, подходящей по размеру ;). Я заменил на свою:

<tr align=center><td width=100%><img src="/stat/images/logo_sm.jpg" width="376"

height="60" alt="" border="0" align=left>

Ну вот вроде и все, пробуем заходить по адресу http://my.domen.ru/cgi-bin/login.cgi с логином/паролем, что указаны в set no name eugene password 123456 inact 3000 abs 0. Т.е. логин admin, пароль 123456.

Должно все получиться, иначе смотрим логи апача :)

P.s.: есть мысль сделать доступ к веб-морде по протоколу https, но пока не доходят руки. Когда дойдут - опишу ;)

P.p.s: выяснилось, что веб-мордие от версии 3.4.0 не работоспособно, берите или от версии 3.3.5 или 3.4.1.

P.p.p.s: Синтаксис выше приведенных команд касается NeTAMS версии 3.3.5. Для 3.4.х он немного отличается

Обновлено: 12.03.2015