Подписаться  на наше издание быстро и дешевле чем где-либо Вы можете прямо сейчас! Подписаться!

 


Учет и контроль трафика — одна из самых распространенных проблем, связанных с выходом в интернет. В этом может помочь специальная программа контроля сетевого трафика.


ПРИ ПРОЕКТИРОВАНИИ любой сети очень важно учитывать проблему трафика. В идеале необходима программа, которая бы позволяла не только контролировать трафик, но и в случае израсходования такового абонентом отключать его от сети. Есть много подобных программ, однако одни средства не удовлетворяют своей функциональностью, другие — сложностью настройки, третьи требуют доустановки какого-то экзотического ПО.

 

А ВОТ МНОГОПОТОЧНЫЙ программный комплекс NeTAMS (Network Traffic Accounting and Monitoring Software) может практически все — учитывать трафик, генерировать отчеты в html, отключать отдельные системы сети в случае исчерпания ими заданного количества мегабайт. При этом учет трафика может основываться на множестве способов — Libpcap (присутствует во всех свободных клонах Unix, а также в Solaris), Netflow v.5 и 9 (протокол Cisco), Divert-socket (или tee-socket, актуален для систем BSD, точнее, для тех из них, где в качестве системного используется брандмауэр IPFW) и IPQ (пакет Netfilter из Linux 2.4.х и выше). Кроме того, начиная с последних версий (3.2.х), появилась такая необходимая для всех коммерческих проектов функция, как биллинг. Также NeTAMS является абсолютно бесплатным (BSD-лицензия), в то время как похожий по функциональности NetUP стоит денег, и немалых.

 

Установка и настройка

 

ДЛЯ УСТАНОВКИ NeTAMS необходимы:

  • компьютер класса Pentium III 1000 МГц/256 Мб RAM;
  • Linux с ядром версии 2.4 — 2.6 или FreeBSD версии 5.х (лучше версии 5.2.1 и 5.4, у FreeBSD 5.3 существуют проблемы со стабильностью) или 4.5 и выше;
  • MySql версии 4.0.х или 4.1.х (разработчики рекомендуют версии MySql именно четвертой ветки, с третьей версией MySQL NeTAMS 3.2.x работать не будет категорически, однако если для организации, использующей NeTAMS, функция биллинга необязательна, а необходим лишь учет трафика, можно ограничиться более ранней сборкой NeTAMS 3.1.х, для функционирования которой используется MySQL версии 3.2.х и 3.5.х. Также NeTAMS не тестировался его разработчиками с MySQL версии 5, однако на сайте говорится о том, что программа успешно функционировала в связке и с MySql 5 версии);
  • BerkleyDB (однако здесь отсутствуют квоты и уж тем более биллинг) или Postgrеs;
  • Apache любой версии для возможности просмотра статистики пользователями.

Инсталляция программы происходит обычным для Unix путем, однако еще до сборки необходимо установить MySQL, потому что в процессе конфигурации проверяется наличие соответствующих библиотек в системе, и если таковые отсутствуют, процесс конфигурации прерывается сообщением об ошибке. Также если вы не хотите использовать RADIUS-сервер (применение которого стало возможным в версии 3.3.х), после процедуры конфигурирования необходимо закомментировать строчку DEFINE + = DUSE_LIBRADIUS в Makefile. Желающим использовать NeTAMS в связке с divert-socket следует пересобрать ядро операционной системы (имеется в виду FreeBSD) с options IPFIREWALL (включает в ядро поддержку брандмауэра ipfw) и options IPDIVERT (включает в ядро механизм divert). На практике для FreeBSD 5.x необходима только вторая опция, так как сам ipfw может функционировать в режиме загружаемого модуля, а во FreeBSD 4.x необходимо включать обе опции. Для Linux нужны iptables-devel, пакет Netfilter и библиотека libipq.


Можно смело использовать MySQL в качестве основного хранилища данных: при первом запуске программа сама позаботится о создании нужных компонентов — как BerkleyDB, так и MySQL. Для успешной эксплуатации программы также необходим Apache, который используется для отображения html-отчетов и управления программой с помощью вэб-интерфейса. Нужен и модуль авторизации mod_auth_mysql.


В в этой статье не рассматривается настройка сервисов login, billing и сервера Apache: подробности о настройке сервисов login, monitor и billing можно найти на сайте NeTAMS, подробности о настройке Apache — на сайте
www.apache.org. Чтобы получить дистрибутив NeTAMS, нужно зайти на сайт www.netams.com. Пользователи FreeBSD могут располагать коллекцией портов, также существует rpm-пакет для Linux.

 

Сервис processor координирует действия множества потоков


Как видно из схемы внутренней организации NeTAMS, каждый поток отвечает за реализацию конкретной функции — учет трафика, сохранение этой информации в базе данных и т.п. Исключение составляют два потока (называемые самими разработчиками "сервисами") — сервис main и сервис processor. Разработчики рекомендуют следующий порядок описания сервисов в файле конфигурации:

  • сервисы main и scheduler (команды debug, user, schedule);
  • сервис processor (timeout, restrict, policies, units, список БД);
  • сервисы storage (их может быть несколько);
  • сервисы data-source (их может быть несколько);
  • сервис alerter;
  • сервис html;
  • сервис monitor (их может быть несколько);
  • сервис quota;
  • сервис login;
  • сервис billing.

Вот пример минимального конфигурационного файла для ОС FreeBSD, на которой используется NAT-трансляция (к поставке с исходниками всегда прилагаются примеры конфигурационных файлов для разных типов учета трафика и разных ОС):

 

debug none
user name admin real-name Admin email
mot@localhost
password 123 permit all


service server 0
login any
listen 20001
max-conn 6


service processor 0
lookup-delay 20
flow-lifetime 60
policy name all-ip target ip
restrict all drop local pass
unit group name LAN acct-policy all-ip
unit cluster name MY_GATE ip 172.16.0.1 ip 10.0.0.1 ip 192.168.0.1 parent LAN acct-policy all-ip
unit host name server ip 192.168.1.1 parent LAN acct-policy all-ip
unithostname host1 ip 192.168.1.11 parent LAN acct-policy all-ip
unit host name host2 ip 192.168.1.12 parent LAN acct-policy all-ip
unit host name host3 ip 192.168.1.13 parent LAN acct-policy all-ip
unit host name host4 ip 192.168.1.14 parent LAN acct-policy all-ip
unit net name proxy-Ian ip 192.168.1.0 mask 255.255.255.0 acct-policy all-ip
storage 1 all
service storage 1
type mysql
service data-source 1
type ip-traffic
source divert 199
rule 90 "ip from any to any via xl0"
rule 110 "ip from any to any via xl0"

 

service html 0
path /usr/local/www/
run houriy-

 

Сервис main является главным потоком, с выполнения которого начинается запуск программы и определение основных свойств процесса в целом. Также этот поток анализирует файл конфигурации и запускает все остальные потоки программы. Как видно из приведенного выше минимального файла конфигурации, сервис main не описывается в нем явно, однако самые верхние директивы (debug и user) относятся именно к этому сервису.


Директивой debug задается уровень отладочной информации, выводимой в log-файл программы, а директивой user — пользователь, имя и пароль которого вводятся при подключении к программе через telnet-интерфейс. За определение параметров telnet-интерфейса отвечает сервис server. Сервис processor является "сердцем" программы, так как именно в нем определяются правила учета и объекты, трафик которых должен учитываться.


Всего существует пять типов таких объектов (юнитов). Рассмотрим основные из них — cluster, net, host и group. Юниты типа cluster необходимы для описания системы с несколькими сетевыми интерфейсами и могут иметь несколько параметров IP. Юнит типа net используется для описания подсети и в качестве параметра IP использует IP-адреса подсети в сочетании с маской, к примеру, unit net name our-lan ip 192.168.1.0 mask 255.255.255.0


Юнит типа host применяется для описания любого клиентского компьютера. Юниты типа group нужны для суммарного подсчета трафика юнитов произвольных типов. Для этого необходимо добавить к описанию юнита-потомка параметр parent с группой-наследником в качестве аргумента этого параметра. Например, если у вас есть три разных сети, юнит типа group можно использовать для подсчета суммарного трафика этих подсетей, сделав их потомками группы.


Правила учета задаются с помощью директивы policy, параметрами которой являются ее название (name) и правило, по какому будет проводиться проверка соответствия политике (target). К примеру, policy name smtp acct target proto tcp ports 25 описывает политику учета почтового трафика. При создании юнита политику необходимо добавлять к этому юниту с указанием ее типа (acct-policy — политика учета трафика, fw-policy — политика фильтрации). Например, unit name host1 ip 192.168.1.2 parent LAN acct-policy smtp.

 

Завершающей директивой части конфигурационного файла, описывающего сервис processor, является команда storage 1 all, которая предписывает сервису processor заносить все данные об учтенном трафике в БД №1. Директива restrict all хххх local yyyy указывает, что делать с трафиком для системы в сети, IP-адрес которой не принадлежит ни одному юниту в файле конфигурации. Значениями для хххх и уууу могут быть drop или pass. К примеру, если в конфигурационном файле не описан юнит с адресом 192.168.1.5 и строка имеет вид restrict all drop local pass, то для этой машины не будет проходить ни один вид трафика через шлюз.


Далее в конфигурационном файле идет описание сервиса storage. В первой строке указывается номер хранилища, директива type задает его тип — mysql, hash или postgres (в версии 3.3.1 к ним добавились oracle и radius). В случае использования hash-DB необходим параметр path, указывающий путь к hash-DB. Однако, как уже говорилось, сами разработчики не рекомендуют использовать hash-DB, поскольку при этом исчезает возможность квотирования и не работает сервис биллинга. Важное замечание: нельзя использовать ноль для задания порядкового номера хранилища, так как в этом случае могут возникнуть проблемы, связанные с отказом NeTAMS подключаться к базе данных или создавать ее при первом запуске.


Сервис data-source так описывает источник информации об учитываемом трафике:

 

service data-source 1
type libpcap
source ifname
 rule 11 "ip"

 

В качестве типа может выступать IP-traffic, netflow и libpcap. Параметр IP-traffic описывает источники данных для Linux и FreeBSD-шлюзов с NAT, параметры libpcap и netflow — для libpcap и netflow соответственно. Значениями для параметра source в случае FreeBSD могут быть:

 

source divert XXXX (где ХХХХ — номер порта)
source tee XXXX (где ХХХХ — аналогично)


Стоит отличать tee от divert. При использовании tee пакеты будут копироваться в программу NeTAMS и одновременно обрабатываться системой, а при divert пакеты передаются в программу NeTAMS и могут либо отдаватьcя, либо не отдаваться обратно системе. Исходя из этого, создать блокировки на основе механизма tee не удастся.


Правило rule number в случае использования программы в маршрутизаторе на основе FreeBSD без задействования механизма NAT имеет вид: rule number "ip from any to any via ifname", где number — номер правила в таблице ipfw, ifname — название внешнего сетевого интерфейса, через который трафик идет к провайдеру. С задействованием механизма NAT необходимы уже два правила вида:

 

rule number1 "ip from any to any via ifname"
rule number2 "ip from any to any via ifname"

 

Здесь number 1 — номер в таблице ipfw, предшествующий номеру правила, необходимого для трансляции адресов NATD, а number2 — номер правила, который следует за правилом, необходимым для механизма трансляции адресов NATD. К примеру, если правило для NATD имеет номер 50, то в NeTAMS должны быть правила с номерами 40 и 60. Как и в предыдущем примере, ifname — это внешний сетевой интерфейс.


В случае с Linux параметр source вообще не имеет смысла, а в качестве rule используются:

 

rule number1 «INPUT -p all -j QUEUE»
rule number2 «FORWARD -p all -j QUEUE»
rule numbers «OUTPUT -p all -j QUEUE»

 

При этом номера правил могут быть абсолютно произвольными, поскольку никак не используются NeTAMS. В случае с libpcap в качестве source используется имя интерфейса, с которого необходимо снимать данные (то есть внешнего), а правило будет иметь вид rule numberN «ip», то есть примерно вот так:

 

type libpcap
source ifname
rule 11 «ip»

 

При использовании Netflow аргументом для параметра type является соответственно netflow, а источником (source) — IP-адрес маршрутизатора и номер порта локальной машины, на которую будут приходить данные о трафике. Параметр rule для Netflow не нужен. Таким образом, для Netflow необходима следующая конфигурация:

 

type netflow
source 192.168.0.1 20001

 

В этом случае указывается IP-адрес и UDP-порт, на который будут приниматься пакеты Netflow от источника информации о трафике.


Сервис html предназначен для генерации статистики, директива path задает путь к каталогу, в который сохраняются файлы статистики, параметр run — периодичность, с которой генерируется статистика, run hourly генерирует статистику за десять секунд до окончания часа. Если же необходимо генерировать статистику чаще, можно использовать формат типа run Nmin, где N — количество минут. Кроме того, в версии 3.3.1 появилась возможность генерации статистики на русском языке и добавился параметр language, возможными значениями которого являются ru или en (этот параметр существовал еще в версии 3.1, но он ни на что не влиял).

 

Первый запуск

 

СОЗДАВ МИНИМАЛЬНУЮ конфигурацию, программу можно запускать. После запуска просмотрите log-файл и, если нет никаких сообщений об ошибках, попробуйте подключиться к консоли программы с помощью команды telnet localhost NNNN. Вместо NNNN укажите порт, который задан параметром listen в сервисе server (по умолчанию 20001). Программа запросит логин и пароль. В качестве логина введите имя пользователя, указанного директивой user в конфигурационном файле NeTAMS, и пароль, указанный там же. После удачного подключения экран будет выглядеть примерно так, как на рисунке.

 

В случае правильной настройки вэб-сервера Apache после ввода адреса должно появиться окно приветствия NeTAMS Admintool)


Попробуйте ввести команду show config, которая отображает конфигурационный файл, команду html, save (для сохранения значений OID в конфигурационном файле) и reload.


После выполнения команды reload программа перезагрузится. Открыв конфигурационный файл, вы увидите, что ко всем юнитам, policy и пользователям добавлено новое значение OID, то есть все вышеописанные обьекты имеют следующий вид:

 

unit oid 09D979 host name host3 ip 192.168.1.13 parent LAN acct-policy all-ip

 

OID — уникальный идентификатор объектов, создаваемый в автоматическом режиме, однако после перезагрузки программы это значение теряется и создается заново. Для того чтобы зафиксировать OID, необходимо после добавления нового объекта типа user, policy или unit подключиться к программе через консоль и выполнить цикл команд reload-save-reload. При выполнении команды reload программа корректно сохраняет данные в базе и перезагружается.


После всех вышеописанных операций в каталоге, указанном командой path сервиса html, должен появиться html-отчет c текущими данными о трафике.

 

Настройка сервиса QUOTA

 

ПОСЛЕ УДАЧНОГО запуска программы можно переходить к конфигурированию сервиса quota. Для этого в конфигурационный файл необходимо добавить следующие команды (в том случае, если правка конфигурационного файла производится при работающей программе, не забывайте о цикле команд reload-save-reload):

 

service quota 0
policy all-ip
storage n

 

Первой командой описывается сам сервис, вторая указывает на то, по какой политике будет производиться квотирование. Команда storage предписывает, в какой базе данных будут храниться сведения о квотах. После перезапуска и сохранения конфигурации в базе данных netams автоматически должна быть создана таблица quota. Так как информация о квотах полностью хранится в базе данных (в ранних версиях программы конфигурация сервиса quota хранилась в конфигурационном файле, но при этом существовало ограничение на квотирование — не более 50 юнитов, и разработчикам пришлось отказаться от такого способа конфигурирования), управление ими производится с помощью telnet-интерфейса. Для этого после подключения необходимо выполнить команду service quota, командная строка должна принять вид quota:0#. Для задания квоты используется команда set. К примеру, командой set name host3 month 300M in active задается ограничение на использование входящего трафика юнитом host3 в 300 мегабайт в месяц (возможными значениями могут быть hour, day, week и month), и квота активируется параметром active. Деактивацию квоты можно выполнить командой set name host3 deactive. Для просмотра информации о текущем состоянии квот используется команда show quota. Чтобы блокировать трафик, учитываемый через netflow и libpcap, необходимо создать access-script, который, к сожалению, не включен в стандартный дистрибутив.

 

Веб-интерфейс NETAMS ADMINTOOL

 

И ВСЕ-ТАКИ ИСПОЛЬЗОВАТЬ командную строку для управления квотами не очень удобно, а если юнитов в конфигурационном файле более ста, то управление квотами для них и вовсе превращается в кошмар. Разработчики, предвидев это, создали вэб-интерфейс для управления квотами. Помимо этого, вэб-интерфейс позволяет управлять созданием политик, юнитов и биллингом. Для нормальной работы Admintool необходимы модули Perl p5-Crypt-MySql, p5-DBD-MySql и p5-DBI. Чтобы установить Admintool, распакуйте cgi-скрипты, идущие в поставке с NeTAMS, в папку cgi-bin, лежащую в каталоге html-статистики. К примеру, если статистика находится в каталоге /usr/local/www, то скопируйте скрипты в каталог /usr/local/www/cgi-bin (предполагается, что Apache уже настроен) и отредактируйте верхние строки скрипта config.cgi в соответствии с вашим конфигурационным файлом, указав там параметры соединения с NeTAMS:

 

# Data required to do a script login, change this
$sc_host=«localhost»; $sc_port=20001; $sc_user=«admin»; $sc_passwd=«123»

 

Стоит отметить, что редактировать необходимо не только скрипт, находящийся в каталоге cgi-bin, но и скрипт с аналогичным названием, в каталоге cgi-bin/admin. После этого, набрав в браузере http://your-server/cgi-bin/admintool.cgi, можно наблюдать форму управления, изображенную на рисунке.

 

Данные о сетевой активности конкретных пользователей будут представлены администратору в наиболее понятном виде


При подключении к вэб-интерфейсу не используется какой-либо механизм авторизации пользователей, для этого необходим Apache .htaccess.

 

В заключение стоит отметить, что данная программа многими успешно используется, да и в каждой новой ее версии появляются новшества, благодаря которым программа удовлетворяет запросы даже самых взыскательных пользователей.

2006.08.28
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".