Сервисы и команды

Информация о командах их параметрах сгруппирована по сервисам. Все команды, описанные в этом разделе, могут использоваться для подготовки конфигурационного файла перед запуском программы. В то же время большинство из них может быть указано при подключении к работающей программе через telnet и вводе соответствующих директив. Некоторые команды требуют рестарта демона (например, изменение пути, где сервис storage хранит свои базы данных). Вы всегда можете получить справку о доступных командах набрав "?» ; для справки о параметрах наберите «имя_команды ?».

Порядок описания сервисов в конфигурационном файле:

• Сервисы main и scheduler (команды debug, user, schedule)

• Сервис processor (таймауты, restrict, policies, units, список БД)

• Сервисы storage (их может быть несколько)

• Сервисы data–source (их может быть несколько)

• Сервис alerter

• Сервис html

• Сервис monitor (их может быть несколько)

• Сервис quota

• Сервис login

• Сервис billing

Каждый сервис стартует командой

service XXX N

где N — номер экземпляра сервиса. Сервисы main и scheduler явно указывать не надо — команды настройки этих сервисов идут в самом начале конфигурационного файла ДО описания остальных сервисов.

В случае, если какой–то параметр совпадает с значением «по умолчанию» в конфигурации он может не показываться.

Сервисы, которые возможны только в единственном варианте, не показывают свой номер.

Для того чтобы отменить введенную команду или удалить объект, необходимо повторить команду и в начале поставить ключевое слово no

Если хочется исполнить последовательность команд, например для настройки каких–нибудь параметров сервиса, команды можно разделять символами "&&" (перед и после — пробелы), например так:

schedule time at–23:30 action «service processor && unit host name pupkin sys–deny && exit»

или так:

send report to admin on LAN+ && html && show perf

[service main]

Напоминаем, что явно описывать этот сервис не нужно: подразумевается, что конфигурационный файл начинается с описания этого сервиса.

user { oid OID | name user_name }

[real–name user_human_name]

[email email_addr]

[password pass]

[crypted crypted_pass]

[permit permit_state]

Команда, которая задает пользователя системы и его параметры. Только присутствующий в списке user пользователь имеет право управлять программой через TCP–порт, т.е. интерактивно или через API. Таким образом, вы должны создать столько пользователей user, сколько администраторов в вашей сети + отдельный аккаунт, от имени которого будут выполняться веб–скрипты, использующие NeTAMS API.

• oid OID

• уникальный идентификатор пользователя, создается автоматически если не указан

• name user_name

• логин пользователя программы.

• real–name user_human_name

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

• email email_addr

• адрес почты для отправки уведомлений администратору

• password pass

• пароль на вход, не зашифрованный

• crypted crypted_pass

• пароль на вход, зашифрованный. Если в конфигурационном файле был введен не зашифрованный пароль, то он тут же автоматически шифруется, и при выводе show config или save выдается именно шифрованная версия. Команда show config unsecure, которая используется сервисом html для генерации статической страницы с конфигурационным файлом, выводит вместо всех паролей звездочки.

• permit permit_state

• права пользователя в системе, от none до all. Подробнее можно посмотреть в src/security.c

no user { oid OID | name user_name }

Удаляет указанного по имени или OID пользователя из программы.

language { ru | en }

Выбор языка, на котором формируются отчеты сервисами HTML и alerter. Пока действуют только английский и русский.

debug deb_str [deb_str] …

Команда, которая задает тип выводимой в ходе работы отладочной информации о деятельности сервисов.

deb_str — идентификатор типа отладки:

• none — отсутствие всех видов отладки

• command — введенные пользователем/файлом конфигурации команды

• parse — разбор введенных команд

• sleep — работа механизма синхронизации сервисов

• server — работа сервиса server

• proc_mux — мультиплексор сообщений сервиса processor

• ds_ip — данные ip сервиса data–source

• storage — работа сервиса storage

• alert — работа сервиса alerter

• scheduler — работа сервиса scheduler

• html — работа сервиса html и генерация статических страниц

• monitor — данные по пакетам для указанных units

• login — работа сервиса логинов

• quota — работа сервиса контроля квот quota

• iptree — работа механизма хранения объектов iptree

• flow — работа механизма потоков трафика

• ds_mux — мультиплексор сообщений сервисов data–source

• memory — работа менеджера памяти

• policy — работа по проверке политик для аккаунтов (биллинг)

• billing — работа сервиса биллинга

• aclserver — работа сервиса контроля списков доступа ACL

• bw — работа механизма ограничения скорости передачи данных юнитом

• all — наличие всех видов отладки (включайте осторожно, иначе на экран могут полезть сотни строк в секунду).

no debug deb_str [deb_str] …

Отключает отладку указанного типа. Команда debug none эквивалентна no debug all.

radius auth {nas|web}

login login_str

[password pass_str]

nas–id nas_name

callback–id callback_name

Обеспечивает авторизацию внешнего радиус–сервера (через модуль rlm_netams) согласно внутренней базе паролей netams. См. подробное описание.

mac {control [ alert ] [ block ]} | {fixate}

control выполняет проверку соответствия MAC–и IP–адресов, используя системную таблицу ARP. Проверке будут подвергаться только юниты типа HOST и USER, для которых задан параметр «mac …».

НЕ рекомендуется делать ее очень часто — оптимальным можно считать 1 раз в 5 минут. Задавать такую проверку рекомендуется через service scheduler. Агрументы block и alert задают, что делать при появлении MAC–адреса, отличного от указанного в настройках: отключать юнит через sys–deny–mac и/или отправлять всем администраторам (user XXX … permit all) почтовое сообщение. При «возврате» MAC–адреса обратно заблокированный юнит вновь включается.

fixate производит «дозапись» параметра MAC всем определенным в конфигурационном файле юнитам, которые в данный момент присутствуют в системной таблице ARP. Рекомендуется применять эту команду для создания привязки MAC–IP для работающей системы NeTAMS с уже определенным набором юнитов: через сервис scheduler запланируйте исполнение этой команды раз в 15 минут, а через пару дней отключите задачу и создайте задачу контроля (mac control …)

html

Вызывает создание HTML–страницы сервисом html (если он работает). В большинстве случаев эта команда должна выполняться не вручную, а сервисом scheduler (параметр run XXX сервиса html приводит к созданию соответствующей записи планировшика автоматически)

[service scheduler]

В явном виде описывать этот сервис не нужно: подразумевается, что конфигурационный файл начинается с описания main, после чего идут команды сервиса scheduler.

schedule [oid OID ]

time time_period

action requested_action

Задает расписание, по которому будет исполняться заданная команда.

• oid OID

• уникальный идентификатор пользователя, создается автоматически если не указан

• time time_period

• время или интервал, когда будет выполнена команда:

• <число><указатель_времени>, например schedule time 1min action «show version»

• возможные указатели: sec, min, hour, day, week, month. указанная команда исполнится через соответствующий промежуток времени и будет после исполнения запланирована снова.

• {hourly|daily|weekly|monthly}

• команда будет исполнена в первую секунду начала каждого периода, независимо от времени ее задания. например schedule time weekly action save будет автоматически сохранять конфиг в первую секунду понедельника, т.е. начала недели.

• at–XX:XX

• команда запланируется на заданное время и будет выполняться ежедневно. например schedule time at–22:00 action save

• Если после поставить знак '+', то выполнение команды запланируется на 10 секунд позже, чем указано, если знак '-', то на 10 секунд раньше.

• action requested_action

• запланированная команда — любая допустимая. Если в ней несколько слов, заключите ее полностью в кавычки, а если в самой команде нужны кавычки, то используйте апострофы. Если хочется исполнить последовательность команд, например для настройки каких–нибудь параметров сервиса, команды можно разделять символами "&&" (перед и после — пробелы), например так:

• schedule time at–23:30 action «service processor && unit host name pupkin sys–deny && exit»

no schedule oid OID

Отменяет запланированную задачу.

show schedule

Отображает список текущих задач планировщика. Смотри также здесь.

[service server]

listen XXXX

определяет tcp–порт, на котором программа будет ожидать входящих соединений для управления своей работой или сбора статистики. Не поддерживает динамическое изменение!

XXXX — номер порта TCP (1…65535), по умолчанию 20001

max–conn XXXX

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

XXXX — количество одновременных соединений, по умолчанию 6

login { any | localhost }

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

• any

• соединение возможно с любого хоста

• localhost

• соединение возможно только с этой машины (127.0.0.1)

[service processor]

Сервис processor описывает настройки ядра NeTAMS, которое и будет производить учет.

lookup–delay XXXX

определяет периодичность, с которой сервис processor будет просматривать список своих NetUnit, чтобы проверить время существования потоков и сбросить их в базу данных. Чем меньше это время, тем точнее идет «квантование» временных периодов, но тем больше нагрузка на программу. На размер базы данных не влияет.

XXX — время в секундах, по умолчанию 30.

flow–lifetime XXXX

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

XXX — время в секундах, по умолчанию 300.

policy [oid OID] name NAME

[no] target TARGET

[bw { speed in speed out | speed } ]

определяет правило, или политику, по которой для данного объекта (NetUnit) будет производиться фильтрация или подсчет трафика.

oid OID — уникальный идентификатор политики, создается автоматически

name NAME — название политики виде строки (2–8 символов)

hidden — не отображать статистику для этой политики в выводе сервиса HTML (полезно для политики с target layer7–detect)

target TARGET — правило, по которому будет проводиться проверка соответствия политике.

Если перед target стоит флажок no, то указанный TARGET убирается из списка.

• bw { speed in speed out | speed } - позволяет ограничивать входящий и/или исходящий трафик для данной fw политики по отношению к юниту по скорости. Ограничение начинает работать, если по данной fw политике было принято решение DROP. В этом случае пакет НЕ БУДЕТ отброшен, а ВМЕСТО этого он будет пропущен и на него будет проверяться проверка по скорости.

• Параметр speed указывается в битах в секунду; можно применять множители K и M для указания килобит и мегабит. Если не указано направление in или out, подразумевается выставление одинакового лимита скорости на оба направления одновременно. Возможно также задать ограничение скорости напрямую для всего юнита, без политик (см. ниже). ВАЖНО! Чтобы ограничение скорости работало, необходимо пересобрать NeTAMS с включенной опцией HAVE_BW. Это делается так: make distclean && FLAGS=-DHAVE_BW make

• Опишем подробнее правила формирования цели (target) политики. Сами политики жестко определены в исходном коде программы и вкомпилированы в обработчик политик трафика. Возможны любые комбинации следующих типов:

• proto XX — номер или имя протокола из файла /etc/protocols

• tos XX — проверка на совпадения с полем TOS IP пакета

• port [s|d|b]num [s|d|b]num … — описывает TCP или UDP трафик на указанные порты. список портов — числа или диапозоны, отделенные пробелом.

• если перед числом стоит буква s(ource) - совпадение происходит только если совпадает порт в поле SRC пакета, d(estination) - в DST пакета, отсутствие буквы или b(oth) - SRC или DST.

• Ограничение на число элементов (отдельных портов или диапозонов) в списке — 10. Диапозоны задаются с помощью двоеточия или тире.

• например: target proto tcp port 25 описывает весь SMTP (почтовый)трафик, target proto tcp port s80:82 s8080 примененная к клиентскому компьютеру (юниту), считает входящий веб–трафик.

• as [s|d|b]num [s|d|b]num … — описывает трафик по указанным AS. список AS — числа или диапозоны, отделенные пробелом.

• если перед числом стоит буква s(ource) - совпадение происходит только если совпадает AS источника пакета, d(estination) - с номером AS получателя пакета, отсутствие буквы или b(oth) - SRC AS или DST AS.

• Ограничение на число элементов AS в списке — 10, диапазоны задаются с помощью двоеточия или тире.

• (Начиная с версии 3.3.0(2266))

• vlan N1 [ N2 ] … совпадает, если пакеты были инкапсулированы с VLAN–тэгом N, применимо к data–source libpcap

• ds N1 [ N2 ] … совпадает, если пакеты пришли от data–source номер N

• units oid XXXX трафик, при том что другая сторона (по IP заголовку) является NetUnit с индексом XXXX

• file YYYY совпадает, если другая сторона (по IP заголовку) совпадает с адресом из файла таблицы префиксов YYYY

• Файл префиксов содержит записи в следующих форматах:

• A.B.C.D /N или A.B.C.D /MASK или A.B.C.D/N или A.B.C.D/MASK

• где:

• A.B.C.D — адрес сети, например 10.1.1.0

• MASK — маска (255.255.255.0)

• N — количество единичных бит в сетевой маске, например 24 (255.255.255.0). Смотрите также подробное описание.

• addr addr … — ip адреса участники соединения.

• ifindex [s|d|b]num [s|d|b]num … — номера (индексы) интерфейсов в таблице роутинга. В настоящее время актуально только для netflow данных.

• ingress|egress — способ сбора netflow информации на роутере. В настоящее время актуально только для netflow v9 данных.

• policy–or [!]{NAME|OID} … [!]{NAME|OID} - политика совпадет, если совпадет проверка ЛЮБОЙ из перечисленных политик. Флажок ! означает инвертирование проверки к которой он относится.

• policy–and [!]{NAME|OID} … [!]{NAME|OID} - политика совпадет, если совпадет проверка ВСЕХ из перечисленных политик. Флажок ! означает инвертирование проверки к которой он относится.

• time timespec — совпадает, если пакет пришел в указанный временной интервал timespec. Это строка, содержащая диапазон времени в часах:минутах (24–часовая схема), при этом нулевые минуты можно пропускать:

• target time 9–18

• target time 00:40–21:30

• day dayspec — совпадает, если пакет пришел в день недели, указанный в dayspec. Это строка, содержащая трехбуквенное название дня недели, или диапазон дней:

• target day Mon–Fri

• target day Sun

default { acct–policy | fw–policy } NAME|OID … NAME|OID

Задает политики подсчета|фильтрации по умолчанию для всех вновь создаваемых юнитов.

restrict all {drop|pass} local {drop|pass}

задает политику фильтрации трафика для случая, когда fw–policy для объекта не определен

all — для всех данных (всех ip–адресов src/dst)

local — для данных, предназначенных объектам, описанным в конфигурационном файле

drop — не пропускать пакеты данного класса

pass — пропускать пакеты

Значение по умолчанию restrict all drop local pass приводит к тому, что для трафика, пакеты которого в заголовке в полях src/dst оба IP–адреса не принадлежат ни одной из описанных в конфигурационном файле машин/кластеров/сетей, этот трафик блокируется. Фактически, это означает что программа будет пропускать только данные с/для зарегистрированных машин «за» маршрутизатор. В случае установления restrict local drop вы обязаны явно для каждого юнита прописать fw–policy. Если для юнита не прописаны никакие политики acct–policy или fw–policy, то это эквивалентно применению к этому юниту параметра no–local–pass, т.е. применение restrict all вместо restrict local.

auto–assign A.B.C.D E.F.G.H

Регистрирует диапазон адресов, начиная с A.B.C.D и заканчивая E.F.G.H в качестве пула для автоматического присваивания IP–адресов вновь создаваемым юнитам. При этом юнит создается при помощи команды:

unit {host|user} name XXX ip auto

В таком случае для всех зарегистрированных диапазонов auto–assign проверяются уже существующие юниты типа user или host, имеющие IP–адреса из заданного диапазона, и назначается следующий незанятый адрес (он выводится в ответ на команду создания). Таким образом, скрипт создания аккаунтов–юнитов может «создавать» новые юниты сам, а адреса присваиваются в автоматическом режиме.

Возможно создание нескольких пулов. В этом случае проверка и выделение IP происходит в порядке следования auto–assign.

auto–units N type {host|user} naming {by–dns| prefix1 PPP |prefix2 QQQ} [group GROUPNAME]

Позволяет автоматически создавать юниты при получении пакетов, принадлежащих некоторой сети, и отсутствии соответствующего юнита в конфигурационном файле. При этом имя юниту генерируется через DNS, или на базе IP–адреса.

• N — номер записи auto–units

• type host или type user — тип создаваемого юнита

• naming — как будет присваиваться имя:

• by–dns — имя будет определяться через DNS, который должен у вас быть уже настроен и обеспечивать обратное преобразование адресов

• Если имя не получено, то в качестве имени будет использоваться IP адрес.

• prefix1 PPP — будет взят последний октет адреса, и спереди перед ним поставлена строчка PPP

• prefix2 QQQ — будут взяты два последних октет адреса, и спереди перед ними поставлена строчка QQQ

• group GROUPNAME — в какую группу помещать созданный юнит (необязательно)(версии начиная с 17 марта 2004).

unit {host|group|cluster|net|user}

[oid OID]

name NAME

parameters

[parent GROUP]

[no–local–pass]

[email addr]

[password passwd]

[description «any describing words»]

[mac «XX:XX:XX:XX:XX:XX»]

[sys–XXXX]

[bw { speed in speed out | speed } ]

[nodefault] [ap–nodefault] [fp–nodefault]

[acct–policy [!][%]p_name [p_name] …]

[fw–policy [!][%]p_name [p_name] … ]

[ds–list 1,2,3…]

[auto–units X]

определение объекта (NetUnit) по которому будет проводиться контроль и учет.

• Тип:

• host — хост, только один IP адрес

• group — группа (возможно пустая)

• cluster — хост с несколькими ip–адресами (кластер)

• net — подсеть, которая определяется сетевым адресом и маской

• user — аналог типа хост, используется для динамического задания ip адресов и привязке к пользователям

• oid OID — уникальный идентификатор сетевой единицы, создается автоматически

• name NAME — название объекта в виде строки (2–8 символов)

• parameters — специфические для данного типа объекта параметры:

• для хоста: ip A.B.C.D — адрес этого хоста

• для группы: нет

• для кластера: ip A.B.C.D [ip A.B.C.E [..]] - список адресов

• для подсети: ip A.B.C.D mask E.F.G.H — сетевой адрес и маска

• для пользователя: ip A.B.C.D — адрес с которого работает пользователь

• parent GROUP [GROUP1 [..]] - название родительских для данного объекта групп

• no–local–pass — при указании этого флага ip–пакет, совпавший с этим юнитом, не будет считаться локальным, к нему применится политика фильтрации restrict all, а не restrict local (полезно для подсетей)

• email addr — адрес электронной почты ответственного за этот юнит человека

• password passwd — пароль для данного юнита. Может использоваться как для авторизации (unit user), так и для просмотра статистики, если включен htaccess yes в сервисе html.

• description «any describing words» — описание юнита, может содержать пробелы и русские буквы (в кавычках).

• mac «XX:XX:XX:XX:XX:XX» — задает аппаратный Ethernet–адрес (MAC–адрес) юнита типа USER или HOST. Используется для проверки соответствия (mac–control …) и RADIUS–авторизации.

• sys-{allow|deny}-XXX — т.н. «системная политика», возможные значения:

• sys–allow — разрешить все, те снять все запреты

• sys–deny — запретить все, остальные запреты тоже остаются

• sys-{deny|allow}-ACTION — запретить|разрешить действие ACTION(auth, block, login, money, quota, mac)

• возможна комбинация нескольких подобных политик.

• sys–deny–OID — запретить работу с юнитом OID вне зависимости от других ограничений

• sys–allow–OID — разрешить работу с юнитом OID вне зависимости от других ограничений

• bw { speed in speed out | speed } - позволяет ограничивать входящий и/или исходящий трафик для данного юнита по скорости. Параметр speed указывается в битах в секунду; можно применять множители K и M для указания килобит и мегабит. Если не указано направление in или out, подразумевается выставление одинакового лимита скорости на оба направления одновременно. Возможно также задать fw–политику ограничения скорости (см. выше). ВАЖНО! Чтобы ограничение скорости работало, необходимо пересобрать NeTAMS с включенной опцией HAVE_BW. Это делается так: make distclen && FLAGS=-DHAVE_BW make

• nodefault, ap–nodefault, fp–nodefault — отменяет, для данного юнита, политики по умолчанию (все, acct–policy или fw–policy, соответственно)

• acct–policy [!][%]p_name — разделенный пробелами список политик учета трафика для данного объекта

! — Если вы ставите восклицательный знак перед именем политики (без пробела), например !all–icmp, то совпадение/несовпадение данной политики применительно к пакету будет ИНВЕРТИРОВАНО, т.е. в данном случае будет учитываться ВЕСЬ НЕ–ICMP трафик.

• % - Если вы ставите знак процента при указании политики acct–policy, это значит, что при совпадении данной политики для пакета, дальнейший просмотр списка политик прекращается и подсчет заканчивается.

• fw–policy [!][%]p_name — разделенный пробелами список политик фильтрации трафика для данного объекта

• Для версий netams 3.1.xx, 3.2.xx и 3.3.xx до build 2117:

• ! — Если вы ставите восклицательный знак перед именем политики (без пробела), например !all–icmp, то совпадение/несовпадение данной политики применительно к пакету будет ИНВЕРТИРОВАНО, т.е. в данном случае будет пропускаться ВЕСЬ НЕ–ICMP трафик.

• % - Если вы ставите знак процента при указании политики fw–policy, это значит что при совпадении данной политики для пакета дальнейший просмотр списка политик прекращается, и вердикт пропускать/не пропускать пакет будет сделан сразу же.

• Для версий netams 3.3.xx после build 2117, в частности 3.3.0–release и далее:

• Перечисляются политики, трафик которых нужно пропускать. Все остальное будет заблокировано. Можно также указать политику ограничения скорости (которая имеет target… bw XX). Флаги [!][%] сохраняют свое действие, но их применение не имеет особого смысла.

• Подробнее про «направление действия» смотрите этот документ.

• ds–list no,[no,no,…] - список источников данных, которые будут связаны с этим сетевым объектом

• auto–units X — номер записи auto–units в сервисе processor, согласно которой будут автоматически создаваться учетные записи для новых хостов в сети. Этот параметр применяется только к юниту типа net. Подробнее об этой функции можно прочитать здесь.

access–script path

устанавливает имя скрипта, который будет использоваться для блокировки трафика. полезно для систем, использующих не data–source ip–filter, а другие механизмы.

path — полный путь до скрипта

например:

access–script "/usr/home/anton/script.pl»

при этом скрипт имеет вид:

#!/usr/bin/perl–w

print shift, " ", shift, " ", shift, " ", shift, "\n»;

При наступлении события отключения–включения сервис processor вызывает его с параметрами:

Действие(DENY|ALLOW)

Идентификатор_юнита(OID)

IP(IP)

Причина(QUOTA|LOGIN|…)

[service storage]

type { hash | mysql | postgres | oracle | radius}

Определение типа базы данных:

• hash

• UNIX hash (файлы .db). Есть только учета трафика (нет квот, логинов и биллинга, т.е. только таблицы RAW/SUMMARY). Не рекомендуется для массового применения. Вы должны раскомментировать соответствующую строку–DUSE_HASH в файле addon/Makefile.common и пересобрать программу через make distclean && make

• mysql

• MySQL (www.mysql.com). Поддерживаются версии 4.0.ХХ, 4.1.ХХ и 5.ХХ

• postgres

• PostgreSQL (www.postgresql.com). Поддерживаются версии 7.4.ХХ.

• oracle

• Oracle (www.oracle.com). Работа с базой ведется через OCI (фактически, любые версии базы).

• radius

• Сбрасывание статистики RADIUS–серверу, только на запись, только данные RAW. Для Linux необходимо наличие в системе пакета openssl–devel (или аналогов содержащих md5.h).

path XXX

Определяет каталог в системе, где будут создаваться и храниться файлы базы данных при использовании hash в качестве хранилища данных. при использовании MySQL/PostgreSQL не имеет смысла.

user username

Имя пользователя для подключению к MySQL/PostgreSQL. по умолчанию root

password password

Пароль для подключения к MySQL/PostgreSQL, по умолчанию отсутствует

host hostname

Имя хоста где установлен MySQL/PostgreSQL

dbname database_name

Имя базы данных, по умолчанию «netams»

socket sock_name

Имя UNIX–сокета для общения NeTAMS с SQL–сервером. По умолчанию общение идет через TCP–порт и сокет не используется.

port XXX

Номер TCP–порта, через который идет соединение с MySQL/PostgreSQL. Также номер UDP–порта на котором слушает RADIUS–сервер

retry XXX

Только для RADIUS: Количество повторов посылки accounting–пакета.

timeout XXX

Только для RADIUS: Время ожидания подтверждения получения accounting–пакета.

nas–ip A.B.C.D

Только для RADIUS: IP–адрес (этого) сервера, который подставится в атрибут NAS–IP–Address отсылаемого accounting–пакета. Нужно, если интерфейсов на сервере много, и хочется выбрать один. Без этой команды в качестве адреса подставится то, что первым вернет системная функция gethostbyname(gethostname()).

accept { all | type … } [except type …]

Определяет, какие типы сообщений и какие сервисы будут работать с этим хранилищем. Таким образом, отпадает необходимость указывать тип хранилища в конфигурации каждого сервиса. Возможные типы (type) следующие:

raw summary monitor login quota events oids billing bdata config

Есть специальный тип all, который задан по умолчанию и определяет все типы данных вместе. Можно выборочно исключить один или несколько типов, написав all except type …

[service data–source]

type { ip–traffic | netflow | libpcap | netgraph | raw }

Задает тип источника данных

• ip–traffic

• данные берутся путем перехвата ip–пакетов из ядра через divert socket (FreeBSD) или netfilter (Linux 2.4.x)

• netflow

• данные о прошедшем трафике приходят от маршрутизатора Cisco, отдающего поток информации в пакетах NetFlow, или от любого другого коллектора, поддерживающего NetFlow v.5 (ulog2netflow, ipfw2netfloe, flowprobe)

• libpcap

данные берутся путем перехвата пакетов с помощью библиотеки libpcap, которая копирует в программу проходящие через ядро системы определенные пакеты. так же работает, например, tcpdump. Смотри этот раздел.

• netgraph

данные передаются от установленного модуля ядра. Только для FreeBSD 5.xx. Смотри этот раздел.

• raw

• данные передаются от произвольного источника (например коммутатор Cisco или сервер Radius) и учитываются через команду rawdata .

source { tee XXX | divert XXX | ipq | ulog NL1 [NL2 … NL32] | A.B.C.D | ifname [promisc] | nodename [divert] }

Задает источник данных:

Для FreeBSD

• tee XXX

• пакеты будут копироваться в программу и параллельно обрабатываться системой, номер divert–порта XXX

• divert XXX

• пакеты будут заворачиваться в программу и она может отдать или не отдать их системе обратно, номер divert–порта XXX

• nodename [divert]

• установится соединение с модулем NETGRAPH ядра nodename. Параметр divert указывает на необходимость проводить авторизацию потока перед его пропусканием. Смотри этот раздел.

Для Linux

Необходимо наличие в системе netfilter.

Подробнее можно прочитать man iptables и на сайте www.netfilter.org

• ipq

• пакеты будут заворачиваться в программу и она может отдать или не отдать их системе обратно. Используется библиотека libipq.

• Для работы должен быть загружен модуль ip_queue (modprobe ip_queue). Чтобы активировать передачу пакетов из ядра, необходимо задать это в firewall, например командой:

• iptables–A FORWARD–j QUEUE …

• ulog NL1 [NL2 … NL32]

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

• Чтобы активировать передачу пакетов из ядра, необходимо задать это в firewall, например командой:

• iptables–A FORWARD–j ULOG --ulog–nlgroup NLx …

• nlgroup NLx должно быть в границах 1–32

Общие

• A.B.C.D

• поток NetFlow будет идти с хоста (маршрутизатора) с IP–адресом источника A.B.C.D на локальный UDP–порт 20001 или тот, который будет указан в команде listen

• ifname [promisc]

• имя локального сетевого интерфейса, на котором будут захватываться проходящие пакеты

• Если указан флаг promisc, то интерфейс будет помещен в promisc mode. По умолчанию — не указан.

listen { 0 | ip } port_number

Задает IP адрес и UDP–порт, на который будут приниматься пакеты NetFlow от источника информации о трафике (коллектора).

clock { remote | local }

Указывает, какое значение текущего времени создания пакета использовать для занесения информации в базу — локальное или указанное в NetFlow–сообщении.

layer7–detect { none | urls }

Включает механизм определения ссылок (URL) в трафике, проходящем через этот сервис data–source. Допустимые значения «none» (выключено) или «urls». Во втором случае, первые несколько пакетов в потоке на порты назначения 80, 81, 8080, 8000, 3128 будут проанализированы на предмет поиска полей Host: и GET. Эта информация может быть учтена через сервис мониторинга (новое поле layer7 в таблице monitor).

rule ID rule_string

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

• ID

• номер правила, для Linux не имеет смысла т.к. правила ставятся в конец цепочки

• rule_string

• правило в виде текстовой строки, которое будет передано системе (Linux или FreeBSD) для установки перехватчика пакетов.

no rule ID

Отменяет правило с номером ID.

[service alerter]

Сервис alerter занимается рассылкой информации о статистике и о работе системы по почте

report [oid 06100] name rep1 type traffic period day detail simple

Не настраиваемый в настоящее время параметр отправки сообщений. В дальнейшем здесь будет возможно управлять форматом отсылаемого сообщений (например, выбор шаблона, языка) и прочее. Номер отчета по умолчанию, OID=06100, сейчас используется для отправки стандартных сообщений о трафике.

smtp–server smtp_server_name

smtp_server_name задает имя или IP–адрес почтового сервера, через который отправится почта. NeTAMS (сервис alerter) будет устанавливать прямое соединения по TCP–порту 25 на указанный адрес (хост) и использовать протокол SMTP для формирования и отправки письма. Если у вас работает локальный почтовый сервис на той же машине, где и NeTAMS, укажите: smtp–server localhost

[service html]

Сервис html позволяет автоматически создавать статические HTML–страницы с отчетами о трафике и о работе программы

run time_interval

Интервал времени, в формате задачи планировщика, через который будет выполняться генерация страниц. Рекомендуется ставить time_interval равным «hourly — ", т.е. страницы будут создаваться за 10 секунд до окончания каждого часа, и содержать статистику об этом часе.

path /path/to/html/root

Путь до каталога в локальной файловой системе, в котором будет создаваться дерево файлов со статистикой. Например:

path /usr/local/www/data/stat/

url url_string

URL (веб–адрес) начальной страницы со статистикой, будет использоваться при построении ссылки на статистику пользователя, присылаемую в ему отчете по электронной почте сервисом quota. Например,

url http://stat.company.ru/traffic/

servlet–url url_string

URL (веб–адрес) сервлета Java, который будет отображать табличное представление статистики для юнита. Например:

servlet–url http://stat.company.ru:8010

htaccess { yes | no }

Включает и выключает механизм автоматической защиты каталогов с помощью файлов .htaccess и .htpassword. При этом используются пароли администратора NeTAMS (те, которые задаются в «user… crypted…» в начале конфигурационного файла и собственно пароли на юниты («unit … password …»). При этом администратору доступны любые подкаталоги веб–дерева, а пользователям — только их собственные.

client–pages { all | groups | none | group GG1 GG2 … }

Показывает, будут ли создаваться клиентские страницы для веб–представления статистики:

• all — будет создаваться все

• groups — только общая статистика и статистика подкаталоги для юнитов типа «группа»

• none — только общая статистика

• group GG1 GG2 … — клиентские статистики только для перечисленных групп и содержащихся в них юнитах (не рекурсивно). Чтобы добавить или удалить группу в списке, необходимо дать команду с новым списком полностью. (версии начиная с 17 марта 2004).

account–pages { all | none }

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

client–pages none

account–pages all

display–top N

Включает механизм генерации статических страниц, показывающих TOP N (N — число, желательно порядка 10) потребителей трафика (юниты типа USER и HOST) для периодов времени с начала часа, дня, недели и месяца.

display–health { yes | no }

Включает и выключает механизм автоматического отображения «здоровья» системы (аналогично show health), т.е. свободного места на жестком диске и загрузки процессора. По умолчанию–выключено.

[service monitor]

Сервис monitor позволяет осуществлять запись данных из заголовков пакетов, относящихся к указанным юнита. При этом в базе данных сохраняется не только информация о локальном источнике–получателе пакета, размере и времени, но и об удаленной стороне. Таким образом, становится возможным узнать не только то, КТО качал, а ОТКУДА качал. Начиная с версии NeTAMS 3.2, информация о трафике поставляется сервисами data–source уже в суммированном, агрегированном по локальному адресу виде (потоки), поэтому ПОПАКЕТНЫЙ мониторинг невозможен. Вместе с тем, такое поведение позволяет СУЩЕСТВЕННО сэкономить место в базе данных.

monitor to { storage N | file XXXX | xmlfile XXXX | netflow IP PORT}

Задает направление вывода информации о мониторинге. Мониторинг позволяет собирать в текстовом файле или базе данных информацию о каждом IP–пакете или NetFlow–записи, обработанной NeTAMS. Эту детальную информацию можно затем отфильтровать для составления специфических отчетов

• storage N

• идентификатор SQL–хранилища, куда пойдет запись

• file XXXX

• имя (путь) до текстового файла с выводом мониторинга

• file XXXX

• имя (путь) до текстового файла с выводом мониторинга в XML формате

• netflow IP PORT

• IP и порт на который будут отслыаться netflow v5 данные

• (начиная с версии 3.4.0)

monitor unit { N | XXXX }

Определяет юнит, который необходимо мониторить

• N идентификатор (OID) юнита

• XXXX — имя юнита

no monitor unit { N | XXXX }

Отменяет мониторинг указанного юнита

no monitor to …

Отменяет мониторинг в указанный получатель

show monitor

Отображает текущее состояние мониторинга, смотри здесь.

Начиная с версии 3.4.0 добавлена возможность мониторить в одном сервисе monitor сразу в несколько получателей. И остутвует ограничение на число сервисов monitor, которые могут мониторить один юнит.

[service quota]

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

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

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

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

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

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

Первоначальную настройку необходимо провести при неработающем демоне NeTAMS.

Допустим, что данные уже хранятся в базе данных MySQL, определенной в сервисе data–source с номером 2:

service data–source 2

type mysql

Для работы сервиса quota необходимо будет указать номер сервиса–хранилища данных:

service quota 0

storage 2

После этих операций запустите NeTAMS. Все остальные настройки можно выполнить при работающей программе. Проверить, работает ли сервис, можно:

Просмотром лог–файла программы

Просмотром списка таблиц SQL–базы NeTAMS: mysqlshow netams (должна появиться таблица «quota»)

Подключившись к программе через telnet–интерфейс и выполнив команду show quota

Для настройки параметров сервиса quota необходимо подключиться к программе через telnet–интерфейс, перейти в режим настройки сервиса командой

service quota 0

и набором команд. Все команды делятся на две части: команды настройки собственно сервиса (они сохраняются в конфигурационном файле) и команды, вызывающие настройку параметров квот отдельных юнитов (они находят отражения в SQL–таблице).

policy XXX

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

block–policy XXX

Задает политику блокировки (fw–policy), которая будет добавляться к набору политик блокировки юнита при превышении квоты. Это политика по умолчанию действует на все юниты, существует возможность переопределить ее для конкретного юнита. При отсутствии этой команды будет использоваться только механизм sys–deny–quota. Про «направление действия» смотрите этот документ.

ВАЖНО!

Появление этой команды потребовало изменения схемы таблицы QUOTA в базе данных. Если вы проводите «чистую» инсталляцию NeTAMS или можете себе позволить удалить существующую таблицу QUOTA, написанное далее вас не касается. Если вы проводите обновление с версии 3.2.0, 3.2.1 или STABLE до 10.02.2005, необходимо вручную модифицировать схему БД. Для этого достаточно выполнить следующие SQL–команды:

alter table quota add column block_policy INT default 0;

alter table quota add column block_policy_flags INT default 0;

soft–treshold N

Задает порог срабатывания «мягкой квоты» для юнита, в процентах от «жесткой квоты». Ранее размер мягкой квоты можно было указывать независимо для каждого типа квоты (например «входящий в день, исходящий в неделю»), теперь это значение одно. По умолчанию определено в src/netams.h (S_QUOTA_DEF_soft_treshold) и равно 80%. Допустимые значения от 0 до 100, значок "%" ставить не нужно. Значение «0» отключает «мягкие квоты» совсем.

delay N

Интервал времени между периодическими проверками всех юнитов на наступление момента срабатывания квоты. Задается в секундах. По умолчанию значение 10 сек., которое объявлено в в src/netams.h (S_QUOTA_DEF_delay).

storage N

Номер сервиса storage, в котором будет создана и использоваться таблица quota. Этот параметр нельзя указывать (изменять) при работающей программе.

set {name XXX | oid YYY}

[policy XXX]

[block–policy XXX]

[soft–treshold N]

[active|inactive]

[notify [{soft|hard|return} {«{none}»|[«{owner}»] [YYY]}]]

[hour … ]

[day …]

[week …]

[month …]

Задает конкретные настройки для юнита. Параметры policy, soft–treshold и notify переопределяют те, которые заданы глобально для сервиса в целом. Вызов этой команды приводит к изменению записи в таблице quota SQL–сервера, но не отражается в конфигурационном файле.

• name XXX | oid YYY}

• Задает имя или OID юнита, с которым производится работа. Это единственный обязательный параметр.

• policy XXX

• Определяет политику учета (acct–policy), которая будет использоваться при проверке квоты для данного юнита. Задается по имени политики.

• block–policy XXX

• Определяет политику блокировки (fw–policy), которая будет применяться к юниту при превышении квоты. Задается по имени политики.

• soft–treshold N

• Задает конкретное значение порога «мягкой квоты» для данного юнита, в процентах от «жесткой квоты». Значение «0» отключает «мягкую квоту» для данного юнита совсем. Допустимый диапазон значений от 0 до 100.

• active|inactive

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

• notify {при_условии} {кого}

• Определяет, кому будут отсылаться почтовые сообщения о наступлении событий, связанных с данным юнитом.

• Условие ({при_условии}) - это одно из событий:

• soft — произошло переполнение «мягкой» квоты. Необходимо предупредить пользователя, не отключая его.

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

• return — по прошествии времени (например, начался новый месяц) пользователь должен быть включен и оповещен об этом.

• Получатель ({кого}) - персона, которую оповещать. Оповещены о наступлении события могут быть и/или собственно владелец юнита (при условии что юнит имеет тип user и для него установлен параметр email), а также один из заведенных в программе пользователей (user), например сам администратор сети. Возможные значения:

• {owner} - владелец юнита

• username — имя или OID пользователя (администратора).

Примеры (предположим ранее определено user name admin email root@localhost ):

notify soft {owner}

notify hard {owner} admin

notify return admin

• [hour … ], [day …], [week …], [month …]

• Задает значения квот на период времени. Формат:

• time_spec amount {in|out|sum},

• где timespec={hour|day|week|month}, amount — значение квоты (в байтах, но можно использовать модификаторы K, M, G), {in|out} - направление квотируемого трафика, {sum} - суммарный трафик (в обоих направлениях). Если необходимо сбросить значение квоты для определённого направления, то надо задать её равной 0. Например:

set name user1 month 0 in

В этом случае будет сброшена месячная квота на входящий трафик.

Значения параметров по умолчанию можно поменять в соответствующей секции файла src/netams.h и последующей полной пересборкой программы (make clean; make). Ниже приведен их список:

#define S_QUOTA_DEF_soft_treshold 80

#define S_QUOTA_DEF_delay 10

#define S_QUOTA_DEF_notify_soft 1

#define S_QUOTA_DEF_notify_hard 1

#define S_QUOTA_DEF_notify_return 1

Исполнение команд вида set … приводят к модификации внутренних структур программы (точнее, заполнению полей структуры u->quotadata юнита u), а также к модификации таблицы quota текущей указанной SQL–базы данных. Как обычно, если такой таблицы не существует, она создается автоматически при первом запуске. Формат таблицы можно посмотреть через вызов команды mysqlshow netams quota. Не пытайтесь редактировать SQL–таблицу quota извне своими программами. Все записи должны вноситься скриптами или вручную через telnet–интерфейс программы (команда set).

Ниже приведен пример применения сервиса контроля квот для небольшой сети. Постановка задачи следующая:

Сеть построена на маршрутизаторе FreeBSD 4.7 / NeTAMS 3.1(2176)

Локальная сеть объединяет порядка 10 компьютеров с адресами 192.168.0.X

Ряду компьютеров необходимо организовать квоты на выход в Интернет, порядка 3 Мб входящего трафика в день и 100М в месяц.

Необходимо отправлять оповещения о наступлении мягкой квоты (75%), жесткой квоты и возвращения доступа пользователям, жесткой квоты — администратору.

Учитывать необходимо только HTTP–трафик.

Ниже приведен полный конфигурационный файл NeTAMS:

debug none

user oid 01327B name admin real–name Konstantin email AAA@mail.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 20

flow–lifetime 60

policy oid 146633 name all–ip target proto ip

policy oid 147C83 name http target proto tcp ports 80 8080 81 3128 443

restrict all pass local pass

unit group oid 0574B0 name LAN acct–policy all–ip

unit group oid 05431B name WAN acct–policy all–ip

unit host oid 021949 name server ip 192.168.0.1 acct–policy all–ip

unit host oid 02238E name Andrew ip 1.3.168.142 acct–policy all–ip http

unit net oid 0446E8 name local ip 192.168.0/24 acct–policy all–ip

unit net oid 043D1B name all ip 0.0.0.0 mask 0.0.0.0 acct–policy all–ip

unit host oid 02507E name 02 ip 192.168.0.10 acct–policy all–ip http

unit host oid 022EB1 name 03 ip 192.168.0.11 acct–policy all–ip http

unit host oid 0241B7 name 07 ip 192.168.0.12 acct–policy all–ip http

unit host oid 0279E2 name 09 ip 192.168.0.13 acct–policy all–ip http

unit host oid 027545 name 11 ip 192.168.0.14 acct–policy all–ip http

unit host oid 02515F name 12 ip 192.168.0.15 acct–policy all–ip http

unit user oid 025BD0 name 13_1 ip 192.168.0.16

email user08@a.ru acct–policy all–ip http

unit host oid 021220 name 14 ip 192.168.0.17 acct–policy all–ip http

unit user oid 024DB1 name 13_2 ip 192.168.0.18

email user09@a.ru acct–policy all–ip http

unit host oid 020216 name 16 ip 192.168.0.19 acct–policy all–ip http

unit host oid 021F16 name 17 ip 192.168.0.20 acct–policy all–ip http

unit host oid 021190 name 50_1 ip 192.168.0.21 acct–policy all–ip http

unit host oid 0266EF name Localnet ip 192.168.0.22 acct–policy all–ip http

unit host oid 02140E name TPSO–1 ip 192.168.0.23 acct–policy all–ip http

unit host oid 023352 name TPSO–2 ip 192.168.0.24 acct–policy all–ip http

unit host oid 02109C name 07–2 ip 192.168.0.25 acct–policy all–ip http

unit host oid 020DED name 19 ip 192.168.0.26 acct–policy all–ip http

unit user oid 027FDC name 15_1 ip 192.168.0.27

email user05@a.ru acct–policy all–ip http

unit user oid 021BEF name 15_2 ip 192.168.0.28

email user02@a.ru acct–policy all–ip http

unit user oid 0241A7 name 15_3 ip 192.168.0.29

email user04@a.ru acct–policy all–ip http

unit user oid 026B68 name 15_4 ip 192.168.0.30

email user06@a.ru acct–policy all–ip http

unit host oid 024E6A name 08_1 ip 192.168.0.31 acct–policy all–ip http

storage 1 all

service storage 1

type mysql

service quota 0

policy http

soft–treshold 75

notify soft {owner}

notify hard {owner} admin

notify return {owner}

storage 1

service data–source 1

type ip–traffic

source divert 199

rule 5 «ip from any to any via rl0»

service alerter 1

report oid 06100 name rep1 type traffic period day detail simple

smtp–server localhost

service html 1

path /home/www/traffic

language en

run hourly

После установки этого конфигурационного файла необходимо внести в NeTAMS/SQL реальные значения для параметров квот пользователей. Очень подходит для этого утилита netamsctl из дистрибутива :

netamsctl «service quota 0 && set name 12 day 3M in month 150M in && exit»

netamsctl «service quota 0 && set name 13_1 day 3M in month 100M in && exit»

netamsctl «service quota 0 && set name 13_2 day 3M in month 100M in && exit»

netamsctl «service quota 0 && set name 15_1 day 3M in month 100M in && exit»

netamsctl «service quota 0 && set name 15_2 day 3M in month 120M in && exit»

netamsctl «service quota 0 && set name 15_3 day 3M in month 100M in && exit»

netamsctl «service quota 0 && set name 15_4 day 3M in month 100M in && exit»

Набирая эти команды в командной строке NeTAMS вызывается запись соответствующих параметров в базу SQL, конфигурационный файл не меняется и команду save исполнять не надо. Вы также можете настроить и использовать веб–интерфейс Admintool для управления квотами.

[service login]

Начиная с сентября 2002 года в дистрибутив программного комплекса NeTAMS был включен сервис weblogin и соответствующий набор скриптов для управления процедурами доступа пользователей через веб–интерфейс. Хотя подобный инструментарий и пользовался популярностью, он был далек от совершенства. Так, настройка этого средства для большой сети требовала значительный усилий и увеличению размера конфигурационного файла. В результате, благодаря многочисленным пожеланиям пользователей, механизм авторизации решено было изменить. При этом был написано новый сервис, а не переделан старый. Новый сервис называется login.

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

Хранение информации о доступе клиентов в базе SQL.

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

Наличие значений таймаутов по умолчанию, и установка граничных значений. Пользователь может иметь возможность менять значения самостоятельно (в то время как скрипт для того еще не написан)

Перенос блокировки из сферы системных политик на отдельный уровень, что позволит одновременно использовать сервисы login и quota

Поддержка типа юнита unit user, что дает возможность «роуминга» пользователей, т.е. авторизации с любой машины в сети при привязке статистики не к IP–адресу, а к пользователю.

Первоначальный запуск сервиса login при работающей программе невозможен. Вам необходимо вручную изменить конфигурационный файл и перезапустить NeTAMS. Допустим, что данные уже хранятся в базе данных MySQL, определенной в сервисе data–source с номером 2:

service data–source 2

type mysql

Для старта сервиса login необходимо будет указать номер сервиса–хранилища данных:

service login 0

storage 2

После этих операций запустите NeTAMS. Все остальные настройки можно выполнить при работающей программе. Проверить, работает ли сервис, можно:

Просмотром лог–файла программы

Просмотром списка таблиц SQL–базы NeTAMS: mysqlshow netams (должна появиться таблица `login')

Подключившись к программе через telnet–интерфейс и выполнив команду show config

Команды настройки сервиса login, которые сохраняются в конфигурационном файле, приводят только к установке соответствующих параметров сервиса, но не более. Собственно для обеспечения авторизации отдельных клиентов необходим отдельный набор команд, которые задаются в контексте все в том же сервисе login. Вся информация о паролях пользователей и их правах доступа и значениях таймаутов хранится в SQL–таблице login. Ее формат приведен ниже:

+------------------+------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+------------------+------------------+------+-----+---------+-------+

| unit_oid | int(10) unsigned | | PRI | 0 | |

| password | varchar(32) | YES | | NULL | |

| inact | int(10) unsigned | YES | | NULL | |

| abs | int(10) unsigned | YES | | NULL | |

| last_changed | int(10) unsigned | YES | | NULL | |

| last_opened_time | int(10) unsigned | YES | | NULL | |

| last_opened_ip | int(10) unsigned | YES | | NULL | |

| last_opened_mac | varchar(18) | YES | | NULL | |

| def_state | int(11) | YES | | NULL | |

| curr_state | int(11) | YES | | NULL | |

+------------------+------------------+------+-----+---------+-------+

• 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 означает разрешения доступа. К сожалению, по наступлении таймаута не сбрасывается (баг).

При старте сервиса происходит считывание всех доступных записей о юнитах из базы SQL/таблицы «login» в память программы и заполнение соответствующих полей в структурах, описывающих юниты. Если для какого–то юнита нет информации о таймаутах (т.е. соответствующей по индексу OID строки в таблице), то для данного юнита сервис login не будет работать и вопрос о доступе будет определяться работой других механизмов (fw–policy, sys–policy, quota и пр.). Это обеспечивает «прозрачную» работу уже настроенной системы.

Для случая, когда в базе данных есть запись о юните, информация о таймаутах и пароле копируется в соответствующие поля данных о юните. При этом текущее состояние доступа (u->logindata->c_state) становится равным значению по умолчанию (def_state из таблицы). Каждые delay секунд сервис проверяет возможность доступа, и при необходимости отключает юнит обнулением переменной u->logindata->c_state. Она проверяется при каждом прохождении пакета сервисом data–source.

Не пытайтесь редактировать SQL–таблицу login извне своими программами. Все записи должны вноситься скриптами или вручную через telnet–интерфейс программы. Для этого существует три команды сервиса login: set, login и logout. Их поведение и параметры описаны ниже.

Для полного контроля над процессом логинов и записи всей служебной информации в лог–файл и консоль служит новый параметр встроенного отладчика «debug login»

Для вывода информации о логинах служит команда (глобальная, НЕ сервиса login) «show login {name AAA | oid BBBB}»

Написание администраторского веб–интерфейса по привязке юнитов к сервису логинов и клиентского по управлению паролями и параметрами оставляется на потребителя программы NeTAMS. В настоящий момент реализован только примитивный скрипт веб–авторизации по паролю. Он идет в комплекте поставки NeTAMS в каталоге cgi–bin/ и называется login.cgi. Скрипт требует файлов logo–small.gif и netams_api.pl (последней версии), которые находятся в том же каталоге.

Для работы скрипта нужен веб–сервер, интерпретатор Perl и прямые руки администратора. Рекомендуется:

Использовать протокол HTTPS для доступа к скрипту авторизации

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

Сделать простой URL и раздать его клиентам для выставления иконки на desktop, например https://loginserver/login.cgi

Необходимо исправить несколько первых строчек скрипта с указанием параметров подключения и путей до каталога со статистикой; можно также исправить его HTML–интерфейс.

Написание скрипта автоматического логина пользователя при входе в виндовс, или при авторизации в домене Windows (через скрипт профиля или групповую политику) оставляется на совести заинтересованных лиц.

default–inact N

Устанавливает значение времени неактивности клиента по умолчанию. Применяется, если при настройке параметров сервиса login для заданного юнита не было указано конкретное время неактивности. Задается в секундах. По умолчанию значение 0.

default–abs N

Устанавливает значение времени абсолютного таймаута клиента по умолчанию. Применяется, если при настройке параметров сервиса login для заданного юнита не было указано конкретное время абсолютного таймаута. Задается в секундах. По умолчанию значение 0.

max_inact N

Максимально допустимая величина времени таймаута неактивности, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 43200 сек = 12*60*60.

min_inact N

Минимально допустимая величина времени таймаута неактивности, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 60 сек.

max_abs N

Максимально допустимая величина времени абсолютного таймаута, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 1036800 сек = 24*12*60*60.

min_abs N

Минимально допустимая величина времени абсолютного таймаута, используется при проверке корректности введенного пользователем (оператором) значения. Задается в секундах. По умолчанию значение 60 сек.

min_passwd_length N

Минимально допустимая длина пользовательского пароля. По умолчанию равно 3 символом, однако в настоящий момент проверки не производится.

delay N

Интервал времени между периодическими проверками всех юнитов на наступление таймаута. Задается в секундах. По умолчанию значение 10 сек.

relogin {yes|no}

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

set–user–ip

Указывает на необходимость в случае успешной авторизации перезаписать IP–адрес юнита (если он имеет тип user) на текущий; при наступлении таймаута или останове доступа адрес сбрасывается в 0.0.0.0. Принимает значения yes или 1 (делать перезаписывание) или no или 0 (не делать). По умолчанию равно 0.

set {name AAA | oid BBBB}

[password CCCC]

[inact DDDD]

[abs EEEE]

[mac 0a:0b:0c:0d:0e:0f]

[strict|nostrict]

Записывает в структуру данных юнита в памяти и одновременно в SQL–базу параметры юнита (определяется по имени или номеру OID):

• Пароль (password)

• Таймаут неактивности (inact)

• Абсолютный таймаут (abs)

• Установленный привязанный MAC–адрес юнита (mac)

• Параметр безусловной привязки (strict) или его отмена (nostrict)

Все значения таймаутов задаются в секундах. Они должны быть или равны нулю, или быть в рамках между минимальным и максимальным значением. Если какая–то из величин таймаутов (или обе) равны нулю, то проверка этого типа таймаута для данного юнита не производится. Если какая–то из величин не указана, будет взято значение по умолчанию (определенное соответственно или в заголовочном файле src/netams.h или параметрами управления сервисов default–inact или default–abs).

login {name AAA | oid BBBB}

password CCCC

[ip A.B.C.D]

[mac JJ:JJ:JJ:JJ:JJ:JJ]

Служит для авторизации юнита и открытия к нему доступа. Обязательно указывать имя или OID юнита, а также пароль. Значения IP–и MAC–адреса должны подставляться внешним скриптом авторизации.

В случае указания неправильного имени юнита получится:

login:0#login name r546–1a

parse: FAIL: unit with name= r546–1a is not exist

Неправильного пароля:

login:0#login name r546–1 password 123

parse: FAIL: password incorrect

Успешной авторизации:

login:0#login name r546–1 password 123456

parse: OK: login success from ip:0.0.0.0, mac:00:00:00:00:00:00

При этом в лог–файле сервера появится соответствующая запись.

logout {name AAA | oid BBBB}

password CCCC

[ip A.B.C.D]

[mac JJ:JJ:JJ:JJ:JJ:JJ]

Команда отключения пользователя, параметры такие же, как и у login.

[service billing]

NeTAMS разрабатывался изначально не как система биллинга, а как система учета трафика. Вследствие этого основными учетными единицами являются юниты. К сожалению, концепции юнитов, имеющих основным свойством статический IP–адрес, не достаточно для реализации полноценного биллинга. Для решения проблемы был организован новый сервис, service billing, основной целью которого стала «правильная» поддержка других типов учетных единиц — пользовательских аккаунтов.

Как сервис биллинга интегрируется в ядро NeTAMS:

1. Создается и поддерживается структура аккаунтов, где каждый аккаунт представляет собой учетную запись пользователя, имеющую следующие параметры:

а) имя, идентификатор, описание

б) индекс текущего тарифного плана, и того который вступит в действие со след. месяца

в) баланс

г) даты создания, модификации и прочее

д) список ассоциированных юнитов

е) емаил, пароль

ж) статус

2. При создании аккаунта необходимо привязать к нему один или несколько юнитов, по которым будет осуществлен учет трафика (юниты имеют IP–адрес и список политик учета трафика). При необходимости юниты создаются автоматически через веб–интерфейс.

3. Каждый аккаунт, если не включена его добровольная блокировка, имеет активный тарифный план (и план «на будущее»). Тарифный план характеризуется именем, описанием и списком «подпланов». Этим достигается возможность создания «гибких» планов.

4. Каждый подплан характеризуется:

а) политикой учета трафика. Она автоматически выставится для каждого юнита, который принадлежит соответствию «юнит–аккаунт–план–подплан»

б) количеством включенного в абонентскую плату трафика (раздельно входящий/исходящий, значение в мегабайтах или без лимита)

в) месячная абонентская плата: правило съема этой платы (единовременно/ежедневно и др.)

г) плата за превышение трафика, включенного в аб. плату, в у.е. за мегабайт (раздельно входящий/исходящий; «бесплатно»)

Набор скриншотов с веб–интерфейса управления биллингом:

• Сведения об аккаунте

• Настройки тарифного подплана

• Настройки тарифного плана

• Список юнитов

• Политики учета

• Лог–файл действий с аккаунтом

• Управление отдельным аккаунтом

• Карточка пользовательских сведений об аккаунте; задается шаблоном

subplan N

fee NNN

spread { monthly | daily | hourly }

included { XXX | unlimited } sum |

[ { XXX | unlimited } in ] [ { XXX | unlimited } out ] }

policy MMM

overdraft [ AA in ] [ BB out ] [ CC sum ]

adjust–included {yes|no}

adjust–fee {yes|no}

Команда subplan формирует тарифный подплан, из которого потом можно будет создать сложный тарифный план. Номер подплана N есть короткое число (это НЕ oid).

• fee NNN — определяет количество денег «абонентской платы», снимаемых за месяц, по данному подплану.

• spread { monthly | daily | hourly } - определяет, как будут сниматься эта «абонентская плата» — раз в месяц, раз в неделю или раз в час (в последних двух случаях снимается доля, пропорциональная указанному периоду)

• included { { XXX | unlimited } sum } | [ { XXX | unlimited } in ] [ { XXX | unlimited } out ] } - определяет, сколько (кило-, мега-, гига-)байт трафика включено в абонентскую плату. Величина XXX указывает на точное значение (возможны спецификаторы K, M и G после цифры). unlimited показывает, что включен весь трафик (нет ограничения). Задается ИЛИ раздельно для входящего и выходящего трафика, ИЛИ одно значение для суммы.

• policy MMM — задает заранее описанную политику acct–policy сервиса processor, которая будет применена для учета трафика для юнитов, принадлежащих клиенту.

• overdraft [ AA in ] [ BB out ] - определяет, сколько будет стоить превышение трафика (ИЛИ раздельно входящего и исходящего, ИЛИ суммы) в случае, если скачано больше, чем описано в параметре included

• adjust–included {yes|no} - определяет, будет ли проводиться перерасчет включенного в субплан абонентского трафика, если клиент подключился в середине месяца. Если значение равно «yes» (по умолчанию), то включенный трафик пересчитается пропроционально количеству дней, оставшихся до конца месяца. В противном случае клиент получит возможность бесплатно скачать весь предвключенный трафик.

• adjust–fee {yes|no} - определяет, будет ли проводиться перерасчет масячной абонентской платы, если клиент подключился в середине месяца. Если значение равно «no» (по умолчанию), то абонентская плата спишется полностью независмо от дня подключения, иначе — пропорционально числу оставшихся до конца месяца дней.

Команда subplan не умеет обрабатывать сразу все параметры, поэтому при конфигурировании придётся давать эту команду несколько раз с разными параметрами. Параметры этой команды группируются следующим образом:

subplan N fee NNN spread { monthly | daily | hourly }

subplan N included [ { XXX | unlimited } in ]

[ { XXX | unlimited } out ]

subplan N policy MMM

subplan N overdraft [ AA in ] [ BB out ]

plan N

name AAA

description BBB

[no] subplan N1 N2 N3 …

Команда plan формирует тарифный план, составляя его из подпланов. Номер плана N есть короткое число (это НЕ oid).

• name AAA — задает «короткое» имя для тарифного плана (до 8 символов)

• description BBB — задает «длинное имя», или описание, для плана. Значение BBB можно указывать в кавычках.

• [no] subplan N1 N2 N3 — задает список из ранее определенных тарифных подпланов, формирующих этот план. Каждый тарифный подплан может участвовать одновременно в нескольких тарифных планах. Если указана опция no, то указанный список подпланов будет удален из плана.

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

plan N name AAA

plan N description BBB

plan N subplan N1 N2 N3 …

account NNN

name AAA

[description BBB]

password CCC

plan MM1

nextplan MM2

[beblock | block | unblock]

balance {add|remove|set} ZZ

[credit–limit ZZ]

unit {name AAA | oid NN} {add | delete }

Команда account создает аккаунт, или запись о клиенте, в базе NeTAMS. Эта информация хранится в SQL, не в конфигурационном файле. Число NNN представляет собой объект OID, являющийся ключом в базе данных.

• name AAA — задает короткое имя аккаунту

• description BBB — задает описание аккаунта

• password CCC — задает пароль на доступ аккаунта с своей статистике

• plan MM1 — задает текущий тарифный план (номер MM1 должен соответствовать описанному выше плану)

• nextplan MM2 — задает тарифный план на следующий месяц — таким образом реализуется смена плана клиентом

• [ beblock | block | unblock ] - задает текущее состояние аккаунта: добровольно_блокирован, блокирован_администратором и разблокирован (активен)

• balance { add | remove | set } ZZ — позволяет добавлять, вычитать заданную сумму с баланса (лицевого счета) клиента, или выставлять баланс в указанное значение.

• [credit–limit ZZ] - указывает минимально допустимый баланс клиента, когда он еще не отключается (отрицательное число или 0, т.е. нет кредита).

• unit {name AAA | oid NN} {add | delete } - добавляет или отнимает заранее созданные в service processor юниты, делая их принадлежащими текущему аккаунту.

Подобно командам subplan и plan, команда account конфигурирует параметры аккаунта по одному параметру за команду:

account NNN description BBB

account NNN password CCC

account NNN plan MM1

account NNN nextplan MM2

account NNN [beblock | block | unblock]

account NNN balance {add|remove|set} ZZ

account NNN unit {name AAA | oid NN} {add | delete }

delay NN

Устанавливает интервал времени ( в секундах), который будет использоваться между циклами проверки аккаунтов.

default–credit–limit XX

Устанавливает кредитный лимит для всех вновь создаваемых аккаунтов, т.е. порог баланса при котором будет производиться отключение. По умолчанию значение равно нулю, т.е. кредит пользователю не выдается. Величина кредитного лимита XX должна быть отрицательной. Действует только на вновь создаваемые аккаунты. Для каждого аккаунта индивидуально в дальнейшем можно изменить этот лимит при помощи команды credit–limit.

storage MM {all | plans | subplans}

Указывает, в каком хранилище (storage) будет сохраняться биллинговая информация, и какая именно.

show plan [N [account|list]]

Выдает информацию о тарифном плане (планах):

fedora:~#netamsctl show plan

Plan ID 000001 Name «aaa» Desc. «super–puper tarifny plan»

Subplan ID 000001

Fee 10.000000, spread: 'M', policy ip(0B23C6)

Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out

Plan ID 000002 Name «bbb» Desc. «plan dlya aktivnyh»

Subplan ID 000001

Fee 10.000000, spread: 'M', policy ip(0B23C6)

Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out

Subplan ID 000002

Fee 15.000000, spread: 'M', policy www(0C9869)

Incl. 0 in 0 out, Over. 10.000000/M in 0.000000/M out

show account {XXX [full][bdata] |list}

Выдает информацию о аккаунте (аккаунтах):

fedora:~#netamsctl show account client1 full

Name a1 (01BFEF) BLOCKED SYNC bal: 100.00 cred_lim: — 5.00 plan: aaa

Plan aaa 000001 1107234000 Nextplan aaa 000001 1107234000

Changed 1108397456 Blocked 1108397423 Created 1108397423

Email — Password — Units: client1 08944A

[service acl–server]

Сервис acl–server занимается контролем доступа клиентов через удаленный маршрутизатор. В общем случае для источников данных типов netflow, ulog и libpcap управление трафиком невозможно, т.к. эти источники являются «односторонними», предоставляя данные по трафику безо всякой возможности воздействовать на сам процесс доставки этого трафика. С помощью данного сервиса можно организовать передачу команд вида «открыть–закрыть» на расположенный где–то в сети роутер. Это может быть маршрутизатор Cisco, PC–роутер с генератором потока netflow, или даже локальная машина (роутер/бридж) с настроенным data–source libpcap.

Сервис acl–server появился в NeTAMS начиная с версии 3.3.0 (build 2710). В настоящий момент поддерживается только управление удаленным роутером Cisco по протоколу RSH с набором некоторых стандартных команд. Они передаются на роутер при:

• (пере)запуске NeTAMS

• перезагрузке удаленного роутера

• при изменении системной политики

Эти правила действуют на юниты типа USER и HOST, у которых установлены IP–адреса.

Для начала вам необходимо настроить маршрутизатор Cisco:

no ip rcmd domain–lookup

ip rcmd rsh–enable

ip rcmd remote–host netams 192.168.0.10 root enable

!

ip flow–export source FastEthernet0/1

ip flow–export version 5

ip flow–export destination 192.168.0.10 20001

!

access–list 100 dynamic NETAMS deny ip any any

access–list 100 permit ip any any

!

interface FastEthernet0/1

ip address 192.168.0.1 255.255.255.0

ip access–group 100 in

!

В данном случае внутренний IP–адрес маршрутизатора равен 192.168.0.1, к интерфейсу fa0/1 подключена внутреняя сеть, а в этой сети на адресе 192.168.0.10 висит UNIX–компьюер с запущенным NeTAMS. Поток статистики netflow отправляется роутером туда же.

Хотя и считается, что протокол RSH небезопасный, на самом деле не все так плохо. Если вы явно указали разрешенный IP–адрес, с которого можно принимать команды, и на этом компьютере нет «лишних» клиентов, то все в порядке.

acl–server работает путем установки динамических списком доступа (access–lists) на роутере Cisco, это значит что перезагрузке роутера список потеряется (но будет восстановлен вновь). В данном примере список доступа имеет номер 100, и его динамическая часть имеет имя NETAMS. Обратите внимание на то, что все попадающие в этот список записи будут иметь политику DENY, в то время как сам список будет иметь политику ALLOW. Это значит, что при пустом списке доступа будет разрешен весь трафик, а добавление каких–то новых записей (IP–адресов) будет означать их блокировку. Далее, этот список доступа ставится на «вход» внутреннего интерфейса.

Справочник команд сервиса acl–server:

hostname AAAA [NN]

Задает имя или IP–адрес удаленного маршрутизатора, которым управляем. Опциональный параметр NN — номер TCP–порта, на котором роутер по принимает команды по протоколу RSH (по умолчанию 514).

direction { src|dst }

Определяет, в какое поле (src или dst) записи access–template будет вставлен IP–адрес юнита. Применять совместно направлением access–group на интерфейсе роутера. Например, если у вас записано:

interface FastEthernet0/1

ip access–group 100 in

то для конструкции «direction src» и IP–адреса юнита 192.168.0.10 в случае его блокировки будет исполнена команда:

access–template 100 NETAMS host 192.168.0.10 any

Аналогично, для «direction dst» будет:

access–template 100 NETAMS host any 192.168.0.10

При разблокировании юнита будет послана команда:

clear access–template 100 NETAMS …

dynamic–name AAAA

Задает имя динамической части списка доступа (в данном примере NETAMS)

acl–number NNN [cisco]

Задает номер списка доступа access–list (в данном примере 100), значение по умолчанию: 180. Ключевое слово «cisco» определяет, что удаленная сторона представляет из себя роутер Cisco, а не что–то иное (в данной версии других вариантов нет, так что указывать обязательно).

delay NNN

Задает промежуток времени между периодическими проверками состояния роутера и подачи команд его управления (в секундах). Рекомендуется значение порядка 300 секунд (значение по умолчанию).

set–uptime NNN

Позволяет вручную выставить параметр uptime удаленного роутера, полезно для отладки. NNN — время работы роутера в секундах, с момента последней его перезагрузки.

debug aclserver

Включает отладку сервиса aclserver (это команда сервиса main, НЕ acl–server).

Пример рабочей конфигурации сервиса acl–server, для вышеописанного примера настройки Cisco:

#NeTAMS version 3.3.0 (build 2710) compiled by root@localhost

#configuration built Sun Sep 18 04:15:20 2005

#begin

service acl–server 0

hostname 192.168.0.1

direction src

dynamic–name NETAMS

acl–number 100 cisco

delay 100

#end

Пример вывода debug aclserver:

|aclserver: acl server checking every 10 seconds

|aclserver: known: 1, remote uptime: CISCO2 6 5 9 15 4094100

|aclserver: queue u=0F8AEA flag=0 sp_now=0

|aclserver: queue u=03A4C4 flag=0 sp_now=0

|aclserver: message ip=192.168.0.11 action=REMOVE

|aclserver: message ip=192.168.0.12 action=REMOVE

|aclserver: messages processed: 2, failed: 0

|aclserver: acl server checking every 10 seconds

|aclserver: known: 4094102, remote uptime: CISCO26 5 9 15 4094160

|aclserver: messages processed: 0, failed: 0

|aclserver: acl server checking every 10 seconds

|aclserver: known: 4094162, remote uptime: CISCO26 5 9 15 4094160

|aclserver: messages processed: 0, failed: 0

Известные проблемы и направления развития:

• Сделать поддержку нескольких удаленных устройств, различая принадлежность юнитов через ds–list.

• Сделать «обратное» включение, когда политика основного accessl–list по умолчанию — deny, динамического — allow, и добавление записей в список происходит для НЕБЛОКИРОВАННЫХ юнитов.

• Написать клиентские программы для linux, freebsd, solaris, которые работали бы как клиенты сервиса acl–server и делали бы блокировку на удаленной машине.

Команды rotate

rotate log

Перемещает лог–файл в файл с расширением, указывающим на время ротации: "%Y-%m-%d_%H:%M» и открывает новый.

Поддерживается также совместная работа с newsyslog. NeTAMS понимает получение сигнала–1 (SIGHUP) и перезакрывает свой лог.

При старте демона с параметром–l автоматически создается PID–файл /var/run/netams.pid. Необходимо добавить следующую строчку в /etc/newsyslog.conf, чтобы архивировать файл /var/log/netams.log:

/var/log/netams.log 600 7 100 * J /var/run/netams.pid

rotate monitor N

Для сервиса monitor:N, в случае если используется monitor to file, перемещает файл мониторинга в новый с расширением, указывающем на время ротации: "%Y-%m-%d_%H:%M» и открывает новый.

Команды «show XXX»

Различные команды show выдают информацию о состоянии NeTAMS, статистике по трафику, и прочее. Они не сохраняются в конфигурационном файле и предназначены для «разового» исполнения вручную, скриптами или веб–интерфейсом.

show config [unsecure] [oids]

Выдает текущий конфигурационный файл.

Параметр unsecure заставляет заменять в выводимом файле все пароли звездочками, что делает публикацию конфигурационного файла в HTML более безопасной. Сервис html вызывает именно «show config unsecure»

Параметр oids заставляет выводить ID объектов, вместо их имен.

show connections

Выдает список текущих соединений с программой. Пример:

NAME | ID | IDLE | CONNECTED | ADDR | PERMIT

| 000001 | 6m33s | 17m24s | 0.0.0.0 | all

conn0009 | 000009 | 0s | 1s | 127.0.0.1 | all

show users

Выдает список зарегистрированных пользователей. Пример:

OID | MODE | NAME | REAL NAME | PERMIT

01327B | U | anton | Anton | all

show schedule

Выдает список активных в системе задач. Пример:

OID | INTERVAL | LEFT | ACTION

08FFFF | hourly- | 2564 | html

0841B7 | at–23:15 | 7074 | shutdown

0879E2 | 5min | 294 | show version

show units

[

syspolicy [whereset]

email

hash

name XXX

mac [whereset]

unit_type

]

Выдает список всех юнитов. Пример:

TYPE | OID | NAME | NLP | PARENT | PARAMS

host | 0246E8 | srv | | <> | IP: 195.208.209.5

host | 022EB1 | an | | <> | IP: 195.208.209.20

Если указан параметр name XXX, выводятся данные только для указанного юнита. Если указан параметр syspolicy, выдается таблица текущих системных политик:

OID | NAME | SYSPOLICY

057545 | AA |

0346E8 | vm | sys–deny–money

Если задано show units syspolicy whereset, то в выводимом списке присутствуют только те юниты, у которых что–то установлено (НЕ sys–allow или sys–none).

Для unit_type=user|host|cluster|group|net выводятся только юниты обозначенного типа. Для show units users active будут выводиться только юниты типа user, имеющие ненулевой IP–адрес.

Если указан параметр email, выводятся адреса электронной почты (для тех юнитов, для которых это установлено). Если указан параметр mac выводится таблица заданных IP–и MAC–адресов. Наконец, show units hash выдает состояние хранилища юнитов:

Units HASH: size=4095, 15 units hashed, 15 nodes used, max chain= 1

show processor

Выдает информацию о состоянии очередей внутри сервиса processor

show alerter

Выдает информацию об очереди сообщений к почтовой отправке

show monitor

Выдает информацию о работе сервисов monitor

show version

Информация о выполняемом процессе NeTAMS, его версия и другие системные параметры. Наиболее важная диагностическая команда.

show list [full] [name XXX | OID YY]

Выдает список всех юнитов с указанием политик учета и фильтрации. Если указан юнит (по имени или OID), выдает информацию только для него. Если указан параметр full, выводит также данные о текущем состоянии счетчиков по политикам и flow/hour/day/week/month. Пример:

show list full name linux

OID: 0B23C6 Name: linux Type: user Parent: AA

SYST policy is not set

FW policy list is empty

ACCT policy: OID NAME CHECK MATCH

04643F ssh 90 36

23.07.2004 15:29:10 flow in: 6008 out: 5016

01.07.2004 00:00:00 month in: 796845 out: 1743907

19.07.2004 00:00:00 week in: 734782 out: 1646080

23.07.2004 00:00:00 day in: 99493 out: 134673

23.07.2004 15:00:00 hour in: 36000 out: 42936

04643C ip 90 90

23.07.2004 15:29:10 flow in: 6008 out: 5016

01.07.2004 00:00:00 month in: 912887 out: 5242340

19.07.2004 00:00:00 week in: 912887 out: 5242340

23.07.2004 00:00:00 day in: 608190 out: 3436092

23.07.2004 15:00:00 hour in: 107783 out: 127231

show policy

Выводит список зарегистрированных политик учета и фильтрации трафика. Пример:

TYPE | OID | NAME | PARAMS

acct | 14643C | all–ip | target: proto ip

acct | 14643D | all–icmp | target: proto icmp

acct | 14753D | tcp | target: proto tcp

acct | 14754D | ant | target: units oid 022EB1

acct | 146EFF | russian | target: file /etc/ru–networks.txt

acct | 146EFE | local | target: file /etc/loc–prefix.txt

acct | 146634 | gate | target: units oid 0246E8

show quota [oid ID | name XXX | list]

Выводит текущее состояние системы проверки квот, для указанного по имени или OID юнита или для всех юнитов для которых включена проверка квот. В случае параметра list только перечисляет «включенные» юниты. Пример:

QUOTA: QQQ policy all–ip set sys–deny–quota

UNIT 056255 (AA) SYST: ACCT is NOT present

UNIT 0246E8 (avm) SYST: ACCT is present

HOUR in: 0, quota 300, ratio 0.00% -> [+]

HOUR out: 0, quota 800, ratio 0.00% -> [+]

TOTAL out: 22932, quota 2.00G, ratio 0.00% -> [+]

QUOTA: AAA policy tcp set sys–local–quota

UNIT 0246E8 (avm) SYST: ACCT is NOT present

Для каждой квоты проверяется список всех юнитов, на которые указанная квота распространяется. для тех юнитов, у которых установлена соответствующая квоте политика учета (acct–policy), проверяются текущие значения счетчиков и сравниваются с установленными для квоты. в приведенном выше примере ничего квоту не нарушает.

QUOTA: QQQ policy all–ip set sys–deny–quota

UNIT 056255 (AA) SYST: ACCT is NOT present

UNIT 0246E8 (avm) SYST: sys–deny–quota ACCT is present

HOUR in: 420, quota 300, ratio 140.00% -> [-]

HOUR out: 420, quota 800, ratio 52.50% -> [+]

TOTAL out: 23352, quota 2.00G, ratio 0.00% -> [+]

QUOTA: AAA policy tcp set sys–local–quota

UNIT 0246E8 (avm) SYST: sys–deny–quota ACCT is NOT present

В данном состоянии система проверки квот обнаружила превышение и выставила для юнита avm системную политику sys–deny–quota. юнит заблокирован по превышению лимита на входящий за час трафик, о чем свидетельствует знак [-]

show login

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

avm1 (0246E8) opened 14 sec. ago, last used–1 sec. ago

absolute timeout at 106 sec, inactivity at–1 sec.

anb1 (022EB1) opened 6 sec. ago, last used–1 sec. ago

absolute timeout at 114 sec, inactivity at–1 sec.

show stat unit UNIT_NAME PREFIX to now POINTS

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

• unit UNIT_NAME — имя юнита или его OID

• PREFIX — указатель интервала времени, может быть W или M

• to now — просто слова, пока не используются

• POINTS — сколько строк будет в создаваемой таблице (влияет на точность), пока не используется. В данный момент информация берется из записей «H» таблицы summary БД, поэтому для недельной статистики получается 7*24=168 строк, для месячной 30*24=720 строк.

Формат вывода:

parse: unit avm1 [W] to->now <2>

avm1 0246E8 0 1028781390 2

all–ip all–icmp tcp

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

Выводится строка с именем юнита, строка со списком политик (через пробел) и блок из 168 или 720 строк, в каждой из которых 2*число_политик цифр, первая и вторая соответственно значения счетчиков in и out для каждой из политик последовательно, для каждого часа.

show perf filename [header]

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

• filename — имя текстового файла, куда будет записываться информация

• header — ключевое слово, заставляющее программу пересоздать файл статистики и записать в начало его заголовок

Пример работы:

После старта программы набрать

show perf /var/tmp/perflog.txt header

Создастся файл с именем /var/tmp/netams–perflog.txt, содержащий строки вида:

NeTAMS version 3.1(1677) root@srv / Sat Sep 6 13:01:18 MSD 2003

TOD RTM STM LOAD RES LOOP AVG

Задать команду планировщика вида

schedule time 10min action «show perf /var/tmp/perflog.txt»

Каждый час будут добавляться строки вида:

«06.09.2003 13:02:52.9493 50 0.609774 1.20 2896»

show health

Выводит информацию о загрузке сервера (CPU), относительном объеме свободного места на разделах, где хранится база данных и где создаются HTML–страницы. Эти сведения попадают также в отчеты сервиса HTML, чтобы администратор мог вовремя заметить о проблемах с сервером.

Current system load: 2%, HTML files folder free disk space: 45%,

Primary storage folder free disk space: 75%

Загрузка...