]> git.stg.codes - stg.git/blobdiff - doc/help/ch4.xml
rlm_stg is now "thread-unsafe".
[stg.git] / doc / help / ch4.xml
index 68c5ebc61eb9758140faaeb10f8cf472137d2cb0..fe2c185ecef6c58c3d8b0710d43674a06b9cd348 100644 (file)
@@ -7,17 +7,17 @@
                <para>Файл имеет текстовый формат, содержащий пары ПАРАМЕТР = ЗНАЧЕНИЕ и секции &lt;ИМЯ_СЕКЦИИ ПАРАМЕТРЫ_СЕКЦИИ&gt;. Комментарии в файле начинаются с символа #. В файле описываются общие параметры, которые являются глобальными значениями для всего сервера биллинга, а также параметры соответствующих модулей. Параметры модулей должны быть заключены в секции:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Module имя_модуля&gt;
-список параметров модуля
+  список параметров модуля
 &lt;/Module&gt;
 </programlisting>
                <para>Имя модуля представляет собой имя файла этого модуля без префикса mod_ и суффикса .so. Например, секция конфигурации модуля remote_script (имя файла: mod_remote_script.so) может выглядеть так:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Module remote_script&gt;                                                          
-SendPeriod = 15                                                             
-SubnetFile = subnets                                                        
-Password = 123456                                                           
-UserParams = Cash Tariff EnabledDirs                                        
-Port = 9999                                                                 
+  SendPeriod = 15                                                             
+  SubnetFile = subnets                                                        
+  Password = 123456                                                           
+  UserParams = Cash Tariff EnabledDirs                                        
+  Port = 9999                                                                 
 &lt;/Module&gt;
 </programlisting>
                <para>Описание глобальных параметров параметров:</para>
@@ -41,25 +41,26 @@ Port = 9999
                        <listitem><para>MessagesTimeout — не обязательный параметр, устанавливающий время жизни не отправленных сообщений абонентам. Время указывается в сутках. При превышении этого времени сообщение будет удалено, в т. ч. из БД. Если указано значение 0 то не отправленные сообщения никогда не будут удаляться из базы (в частности, это приведет к постепенному росту размера базы, увеличению нагрузки на сервер при авторизации абонентов и к тому что долго отсутствовавший абонент при авторизации получит все пропущенные сообщения). По умолчанию имеет значение 0.</para></listitem>
                        <listitem><para>FeeChargeType — не обязательный параметр, регулирующий процесс снятия абонплаты. Может принимать значения 0, 1 и 2, по умолчанию имеет значение 0. При значении 0 абонплата снимается как обычно, при значении 1 абонплата снимается только если баланс пользователя положительный или равен нулю, при значении 2 абонплата снимается только если баланс пользователя больше или равен абонплате. Значение 2 следует использовать с осторожностью, т. к. при этом на безлимитных тарифах абоненты получат услугу бесплатно.</para></listitem>
                        <listitem><para>ReconnectOnTariffChange — не обязательный параметр, указывающий серверу выполнить переподключение пользователя при смене тарифа. Может принимать значения yes и no, по умолчанию имеет значение no. При указании значения yes подключенные пользователи будут отключены непосредственно перед сменой тарифа и подключены сразу после нее. Может быть полезно для управления шейпером.</para></listitem>
-                       <listitem><para>Для именования направлений учета трафика в конфигурационном файле используется секция DirNames:</para></listitem>
+                       <listitem><para>Для именования направлений учета трафика в конфигурационном файле используется секция DirNames:</para>
 <programlisting linenumbering="unnumbered">
 &lt;DirNames&gt;
-DirName0 = «ИМЯ НАПРАВЛЕНИЯ»
-...
-DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
+  DirName0 = «ИМЯ НАПРАВЛЕНИЯ»
+  ...
+  DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
 &lt;/DirNames&gt;                      
 </programlisting>                      
-               <para>Всего предусмотрено 10 направлений с нумерацией от 0 до 9. Направления, наименование которых состоит из нескольких слов, должны быть заключены в кавычки. Если наименование направления не указано, то система считает что данное направление не используется и не будет производить по нему никаких действий. Пример: DirName0 = Мир, DirName5 = "Локальные игры". Необходимо заметить, что текущая версия системы требует, чтобы имена направлений были указаны в кодировке KOI8-R. В противном случае абоненты не смогут их прочитать в статистике авторизатора, а администраторы — в конфигураторе.</para> 
+      <para>Всего предусмотрено 10 направлений с нумерацией от 0 до 9. Направления, наименование которых состоит из нескольких слов, должны быть заключены в кавычки. Если наименование направления не указано, то система считает что данное направление не используется и не будет производить по нему никаких действий. Пример: DirName0 = Мир, DirName5 = "Локальные игры". Необходимо заметить, что текущая версия системы требует, чтобы имена направлений были указаны в кодировке KOI8-R. В противном случае абоненты не смогут их прочитать в статистике авторизатора, а администраторы — в конфигураторе.</para></listitem>
+    </itemizedlist>
                <para>Настройки всех модули (кроме store module), которые необходимо подключить к серверу в момент старта должны быть указанны внутри секции Modules:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Modules&gt;
-&lt;Module имя_модуля&gt;
-список параметров модуля
-&lt;/Modules&gt;
+  &lt;Module имя_модуля&gt;
+  список параметров модуля
+  &lt;/Module&gt;
 
-&lt;Module имя_модуля&gt;
-список параметров модуля
-&lt;/Module&gt;
+  &lt;Module имя_модуля&gt;
+  список параметров модуля
+  &lt;/Module&gt;
 &lt;/Modules&gt;               
 </programlisting>      
                <para>Если модуль не имеет настраиваемых параметров, то он все равно должен быть указан. Некоторые модули, такие как store module, обязательно требуются при старте и без их подключения система не может быть запущена. По умолчанию для указания конфигурации модулей используются отдельные файлы из каталога conf-enabled.d. Для этого используется директива &lt;IncludeFile ПУТЬ_К_ФАЙЛУ&gt;&lt;/IncludeFile&gt;. Одна директива указана в секции Modules, а вторая в корне файла конфигурации (для store module).</para>
@@ -105,5 +106,303 @@ DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
                </itemizedlist>
                        <para>При создании каталогов (например для записи детальной статистики) используются те-же права, но с добавлением x-бита для всех ненулевых полей. Например: для 640 будут права 750, а для 644 будут 755. Для записи детальной статистики используются параметры StatOwner, StatGroup и StatMode. Для записи сообщений используются параметры ConfOwner, ConfGroup и ConfMode.</para>
                </sect2>
-       </chapter>
-       <para></para>
\ No newline at end of file
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД Firebird:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – не обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Может быть доменным именем или IP-адресом. Значение по умолчанию: localhost.</para></listitem>
+                       <listitem><para>Database – не обязательный параметр, описывающий путь к БД на сервере или ее псевдоним (alias). Значение по умолчанию: /var/stg/stargazer.fdb.</para></listitem>
+                       <listitem><para>User – не обязательный параметр, описывающий имя пользователя БД. Значение по умолчанию: stg.</para></listitem>
+                       <listitem><para>Password – не обязательный параметр, описывающий пароль пользователя БД. Значение по умолчанию: 123456.</para></listitem>
+                       <listitem><para>IsolationLevel — Не обязательный параметр, описывающий уровень изоляции транзакций. Может принимать значения:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>Concurrency (используется по умолчанию);</para></listitem>
+                                       <listitem><para>DirtyRead;</para></listitem>
+                                       <listitem><para>ReadCommitted;</para></listitem>
+                                       <listitem><para>Consistensy.</para></listitem>
+                               </itemizedlist>
+                               </listitem>
+                       <listitem><para>LockResolution — Не обязательный параметр, описывающий действие при блокировке. Может принимать значения значения:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>Wait (используется по умолчанию);</para></listitem>
+                                       <listitem><para>NoWait.</para></listitem>
+                               </itemizedlist>
+                               </listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД PostgreSQL:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – не обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Может быть доменным именем или IP-адресом. Значение по умолчанию: localhost.</para></listitem>
+                       <listitem><para>Database – не обязательный параметр, описывающий имя БД. Значение по умолчанию: stargazer.</para></listitem>
+                       <listitem><para>User – не обязательный параметр, описывающий имя пользователя БД. Значение по умолчанию: stg.</para></listitem>
+                       <listitem><para>Password – не обязательный параметр, описывающий пароль пользователя БД. Значение по умолчанию: 123456.</para></listitem>
+                       <listitem><para>Retries — не обязательный параметр, описывающий количество попыток переподключения к СУБД в случае потери связи. Попытки производятся с интервалом в 1 секунду. Значение по умолчанию: 3.</para></listitem>
+               </itemizedlist> 
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД MySQL:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Стандартное значение: localhost.</para></listitem>
+                       <listitem><para>Database – обязательный параметр, описывающий название БД. Стандартное значение: stg.</para></listitem>
+                       <listitem><para>User – обязательный параметр, описывающий имя пользователя БД. Стандартное значение: stg.</para></listitem>
+                       <listitem><para>Password – обязательный параметр, описывающий пароль пользователя БД. Стандартное значение: 123456.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля ping для пингования абонентов:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>PingDelay – обязательный параметр, определяющий, время в секундах между пингами одного и того же абонента. Стандартное значение: 15.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля Remote Script Executer (remote_script) для передачи команд на исполнение скриптов на NAS:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>SendPeriod – обязательный параметр, определяющий время в секундах между посылками подтверждений того, что клиент находится в состоянии Online. Стандартное значение: 15.</para></listitem>
+                       <listitem><para>Password – обязательный параметр, определяющий пароль для шифрования обмена между сервером биллинга и клиентом. Стандартное значение: 123456.</para></listitem>
+                       <listitem><para>UserParams – обязательный параметр, определяющий какие параметры и в каком порядке передаются на NAS. Названия параметров должны быть разделены пробелом. Доступными параметрами являются: Cash, FreeMb, Passive, Disabled, AlwaysOnline, TariffName, NextTariff, Address, Note, Group, Email, RealName, Credit, EnabledDirs, Userdata0...Userdata9. Стандартное значение: Cash Tariff EnabledDirs.</para></listitem>
+                       <listitem><para>Port – обязательный параметр, определяющий номер порта через который будет происходить обмен данными между сервером биллинга и клиентом. Может принимать значения от 1 до 65535, стандартное значение: 9999.</para></listitem>
+                       <listitem><para>SubnetFile — обязательный параметр, представляющий собой путь к файлу с описанием соответствия сетей и NAS'ов. Стандартное значение: subnets. При указании относительного пути поиск будет производиться в каталоге с настройками (обычно это /etc/stargazer, но может быть переопределено указанием пути в качестве параметра при старте дэмона). Файл имеет формат: &lt;сеть в CIDR-нотации&gt; &lt;адрес NAS'а&gt;. Количество сетей не ограничено. Файл перечитывается заново при посылке процессу сигнала SIGHUP. Если файл содержит ошибки при старте дэмона — система не будет запущена. Если файл содержит ошибки при перечитывании — будут использоваться старые значения.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля radius для поддержки авторизации и аккаунтинга пользователей через сервер FreeRADIUS:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Port — обязательный параметр, определяющий порт, на который будут приходить запросы от FreeRADIUS. Может принимать значение от 1 до 65535, стандартное значение: 6666.</para></listitem>
+                       <listitem><para>Password — обязательный параметр, задающий пароль для шифрования данных, передаваемых на FreeRADIUS. Должен совпадать с паролем в настройке плагина FreeRADIUS (rlm_stg.so). Стандартное значение: 123456.</para></listitem>
+                       <listitem><para>AuthServices — не обязательный параметр, задающий список сервисов которым будет позволена только авторизация с использованием БД Stargazer. При успешной авторизации абонент не переходит в состояние Online и для него не производится подсчет трафика. Названия сервисов в списке должны разделяться пробелами, по умолчанию этот параметр пуст.</para></listitem>
+                       <listitem><para>AcctServices — не обязательный параметр, задающий список сервисов, по которым будет производится аккаунтинг. При успешной авторизации в этих сервисах абонент переходит в состояние Online и для него производится подсчет трафика. Необходимо заметить, что в этом случае трафик захватывается как обычно, без использования возможностей протокола RADIUS (через пакет аккаунтинга InterimUpdate), т.к. это не позволяет классифицировать полученный трафик по направлениям. Названия сервисов в списке должны разделяться пробелами, по умолчанию этот параметр пуст.</para></listitem>
+               </itemizedlist>
+               <para>Обмен данными между плагином и FreeRADIUS происходит по протоколу UDP.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля XML-RPC (conf_rpc) для поддержки протокола управления XML-RPC:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Port — обязательный параметр, определяющий порт на который будут приходить запросы XML-RPC. Может принимать значения от 1 до 65535, стандартное значение: 8080.</para></listitem>
+                       <listitem><para>CookieTimeout — не обязательный параметр, задающий время существования авторизационного Cookie в случае отсутствия активности в секундах. Значение по умолчанию: 1800 (30 минут).</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_ether (только для ОС Linux).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются так называемые «raw sockets», которые позволяют получить доступ к Ethernet-фреймам. Перехватывается весь трафик попадающий в сетевую подсистему ядра. При использовании обычной маршрутизации трафик будет посчитан два раза: на входящем интерфейсе и на исходящем. При использовании NAT удвоения трафика не происходит, так как NAT заменяет адрес источника. При интенсивном сетевом обмене или при высокой нагрузке на сервер, на котором происходит захват трафика, модуль может терять отдельные пакеты. Процент потерь тем выше чем выше скорость прохождения пакетов и чем выше загрузка сервера. Модуль рекомендуется использовать для ознакомления или в небольших сетях до 100 абонентов с трафиком до 100 Мбит.</para>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_ipq (только для ОС Linux).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются передача пакетов из пространства ядра в пространство пользователя посредством очередей (ip queue). Для его работы требуется поддержка ip queueing в ядре (модуль ip_queue.ko) и специальная настройка файрвола (правило QUEUE для iptables). Следует обратить внимание на то что обычно требуется два правила в файрволе для полного перехвата: одно для входящих пакетов и одно для исходящих. Модуль гарантирует 100% перехват трафика, но так как пакет перед отправкой обязательно проходить через плагин — может приводить к снижению пропускной способности роутера. При этом следует обратить внимание на нагрузку на процессор, возможно имеет смысл заменить его на более производительный. В противном случае стоит рассмотреть использование модуля cap_nf для захвата трафика.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля cap_bpf для захвата трафика (только для ОС FreeBSD):</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>iface — обязательный параметр, определяющий на каком интерфейсе будет происходить захват трафика. Параметр может быть задан более одного раза.</para></listitem>
+               </itemizedlist>
+               <para>Для захвата трафика используется инфраструктура Berkeley Packet Filter, представляющая собой «продвинутый» аналог «raw sockets». Так как интерфейсы для перехвата указываются явно, дублирования трафика при обычной маршрутизации не наблюдается. Фильтрование пакетов не используется, перехват происходит по мере возможности, по этому этот модуль, как и cap_ether, тоже может терять пакеты при высокой нагрузке на сервер или высокой скорости прохождения пакетов. Рекомендуется использовать для ознакомления или для небольших сетей до 100 абонентов с трафиком до 100 Мбит.</para>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_divert (только для ОС FreeBSD).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются divert-сокеты. Как и IPQ эта технология использует прохождение пакетов через пространство пользователя. Для работы модуля требуется поддержка divert-сокетов в ядре и специальная настройка файрвола. Для передачи пакета в пространство пользователя в файрволе используется правило divert или tee. Первое правило работает аналогично цели QUEUE для iptables — пропускает пакет через пространство пользователя перед отправкой. Соответственно, это может вызвать те-же проблемы с пропускной способностью роутера. Правило tee передает в пространство пользователя копию пакета, а оригинал отправляет дальше. Такой подход позволяет избежать снижения пропускной способности сервера при высокой нагрузке на него, так как исключается ожидание пакета в время его нахождения в пространстве пользователя.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля cap_nf для захвата трафика:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>TCPPort — не обязательный параметр, указывающий порт который будет использоваться для приема данных при работе с NetFlow-proxy. Стандартное значение: 9996. Если параметр не указан — прием по протоколу TCP производиться не будет.</para></listitem>
+                       <listitem><para>UDPPort — не обязательный параметр, указывающий порт для приема NetFlow-дагарамм. Стандартное значение: 9996. Если параметр не указан — прием датаграмм по протоколу UDP производиться не будет.</para></listitem>
+               </itemizedlist>
+               <para>В явном виде захват трафика не происходит. Данные о нем поступают от NetFlow-сенсора посредством протокола NetFlow. Это позволяет физически разделить перехват трафика и его учет. NetFlow-сенсор перехватывает трафик, и собирает данные о сессиях (в контексте UDP это передача данных между двумя портами в одном направлении). Информация о сессии включает в себя IP-адреса источника и назначения потока пакетов, номера портов источника и назначения, суммарную длину пакетов и различные дополнительные данные. NetFlow-трафик существенно меньше трафика, который он описывает, так как передается мета-информация а не сами данные. С учетом этого факта и того что биллинговый сервер теперь может не заниматься маршрутизацией пакетов и NAT'ом это существенно снижает нагрузку на него. Этот плагин рекомендуется использоваться в крупных сетях с развитой топологией, включающей несколько NAS'ов. Возможно использование совместно с аппаратными маршрутизаторами Cisco (они единственные имеют лицензию на аппаратную реализацию NetFlow). В качестве NetFlow-сенсоров можно использовать такие утилиты как fprobe, softflowd или ipcad. Так же можно использовать модуль ядра ipt_netflow (Linux) или ng_netflow (FreeBSD).</para>
+               </sect2>
+               <sect2>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server — обязательный параметр, указывающий IP-адрес сервера на котором находится snmpd. Стандартное значение: 127.0.0.1.</para></listitem>
+                       <listitem><para>Port — обязательный параметр, указывающий порт на сервере через который будет происходить взаимодействие с snmpd. Стандартное значение: 199.</para></listitem>
+                       <listitem><para>Password — не обязательный параметр, задающий пароль для авторизации плагина в snmpd. По умолчанию пароль не используется.</para></listitem>
+               </itemizedlist>
+               <para>Модуль позволяет производить мониторинг биллинга средствами протокола SNMP. Он не реализует полноценный SNMP-сервер а лишь взаимодействует с существующим дэмоном snmpd, регистрируясь в нем для обслуживания определенного дерева параметров. В комплекте с биллингом идет MIB, описывающий доступные параметры для мониторинга. Параметры разделены на 6 секций, находящихся в узле stg24:</para>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>users (1) — секция, содержащая параметры относящиеся к абонентам:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalUsers (1) — параметр, описывающий общее количество абонентов в системе;</para></listitem>
+                                       <listitem><para>onlineUsers (2) — параметр, описывающий количество подключенных абонентов;</para></listitem>
+                                       <listitem><para>authorizedUsers (3) — параметр, описывающий количество авторизованных абонентов в системе;</para></listitem>
+                                       <listitem><para>alwaysOnlineUsers (4) — параметр, описывающий количество абонентов работающих в режиме always online;</para></listitem>
+                                       <listitem><para>noCashUsers (5) — параметр, описывающий количество абонентов с нулевым или отрицательным балансом;</para></listitem>
+                                       <listitem><para>disabledDetailStatsUsers (6) — параметр, описывающий количество абонентов с отключенным учетом детальной статистики;</para></listitem>
+                                       <listitem><para>disabledUsers (7) — параметр, описывающий количество принудительно отключенных абонентов;</para></listitem>
+                                       <listitem><para>passiveUsers (8) — параметр, описывающий количество «замороженных» абонентов;</para></listitem>
+                                       <listitem><para>creditUsers (9) — параметр, описывающий количество абонентов с положительным кредитом;</para></listitem>
+                                       <listitem><para>freeMbUsers (10) — параметр, описывающий количество абонентов с неизрасходованными «бесплатными мегабайтами»;</para></listitem>
+                                       <listitem><para>tariffChangeUsers (11) — параметр, описывающий количество абонентов у которых с началом месяца будет изменен тариф;</para></listitem>
+                                       <listitem><para>activeUsers (12) — параметр, описывающий количество абонентов у которых имеется посчитанный трафик за сессию.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>tariffs (2) — секция, содержащая параметры относящиеся к тарифам:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalTariffs (1) — параметр, описывающий общее количество тарифов;</para></listitem>
+                                       <listitem><para>tariffUsageTable (2) — таблица использования тарифов, состоит из записей вида:</para>
+                                               <itemizedlist mark="square">
+                                                       <listitem><para>tariffIndex (1) — числовой индекс в таблице;</para></listitem>
+                                                       <listitem><para>tariffName (2) — название тарифа (строка);</para></listitem>
+                                                       <listitem><para>userCount (3) — количество абонентов использующих этот тариф.</para></listitem>
+                                               </itemizedlist>
+                                               </listitem>
+                               </itemizedlist>
+                       </listitem>     
+                       <listitem><para>admins (3) — секция, содержащая параметры относящиеся к администраторам системы:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalAdmins (1) — параметр, описывающий общее количество администраторов, зарегистрированных в системе.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>services (4) — секция, содержащая параметры относящиеся к услугам:</para>
+                       <itemizedlist mark="square">
+                                       <listitem><para>totalServices (1) — параметр, описывающий общее количество услуг по которым ведется учет в системе.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>traffcounter (6) — секция, содержащая параметры относящиеся к учету трафика:</para>
+                       <itemizedlist mark="square">
+                                       <listitem><para>totalRules (1) — параметр, описывающий общее количество правил классификации трафика.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+               </itemizedlist>
+               <para>К параметрам можно обращаться по цифровым OID'ам или по именам. Для обращения к параметрам по именам нужно предоставить системе файл STG-MIB.mib содержащий информацию об именах, типах и OID'ах параметров с кратким описанием. Этот файл можно поместить в каталог ~/.snmp/mibs (в этом случае он будет доступен лишь одному пользователю) или в каталог /usr/share/snmp/mibs (в этом случае он будет доступен всем пользователям системы). Так же большинство утилит позволяют загружать mib-файлы из произвольного места явным указанием пути к ним. Для доступа к параметрам можно использовать утилиты из пакета NetSNMP (http://net-snmp.sourceforge.net/). Для того чтобы просмотреть иерархию параметров можно выполнить такую команду: snmptranslate -m +STG-MIB -Tp -IR stg24. Вывод команды должен быть приблизительно таким:</para>
+<programlisting linenumbering="unnumbered">
++--stg24(1)
+   |
+   +--users(1)
+   |  |
+   |  +-- -R-- Integer32 totalUsers(1)
+   |  +-- -R-- Integer32 onlineUsers(2)
+   |  +-- -R-- Integer32 authorizedUsers(3)
+   |  +-- -R-- Integer32 alwaysOnlineUsers(4)
+   |  +-- -R-- Integer32 noCashUsers(5)
+   |  +-- -R-- Integer32 disabledDetailStatsUsers(6)
+   |  +-- -R-- Integer32 disabledUsers(7)
+   |  +-- -R-- Integer32 passiveUsers(8)
+   |  +-- -R-- Integer32 creditUsers(9)
+   |  +-- -R-- Integer32 freeMbUsers(10)
+   |  +-- -R-- Integer32 tariffChangeUsers(11)
+   |  +-- -R-- Integer32 activeUsers(12)
+   |
+   +--tariffs(2)
+   |  |
+   |  +-- -R-- Integer32 totalTariffs(1)
+   |  |
+   |  +--tariffUsageTable(2)
+   |     |
+   |     +--tariffUsageTableEntry(1)
+   |        |  Index: tariffIndex
+   |        |
+   |        +-- ---- Integer32 tariffIndex(1)
+   |        |        Range: 0..255
+   |        +-- -R-- String    tariffName(2)
+   |        |        Textual Convention: DisplayString
+   |        |        Size: 0..255
+   |        +-- -R-- Integer32 userCount(3)
+   |
+   +--admins(3)
+   |  |
+   |  +-- -R-- Integer32 totalAdmins(1)
+   |
+   +--services(4)
+   |  |
+   |  +-- -R-- Integer32 totalServices(1)
+   |
+   +--corporations(5)
+   |  |
+   |  +-- -R-- Integer32 totalCorporations(1)
+   |
+   +--traffcounter(6)
+      |
+      +-- -R-- Integer32 totalRules(1)
+
+</programlisting>
+               <para>Если в качестве ответа будет строчка «Unknown object identifier: stg24» то это означает что команда не смогла найти mib-файл. Для исправления этой ошибки следует либо скопировать файл STG-MIB.mib по одному из указанных выше путей или указать путь к каталогу где он находится с помощью ключа -M. Символ «+» перед STG-MIB обозначает что данные этого файла должны использоваться совместно с загружаемыми по умолчанию. Без этого символа данные будут использоваться автономно. Ключ -M работает схожим образом: символ «+» говорит о том что указанный путь нужно добавить к путям поиска mib-файлов, используемым по умолчанию. Без символа «+» будет использоваться единственный путь — указанный.</para>
+               <para>Для доступа к значениями параметров можно использовать следующую команду: snmpget -v2c -ccommunity_w -m +STG-MIB 10.0.0.1 stg24.users.totalUsers. Ключ -v указывает используемую версию протокола. На сегодняшний день существует 3 версии протокола: 1, 2 и 3. Версия 1 считается устаревшей и почти не используется. Версия 2 существует в двух модификациях: user-based (с суффиксом «u») и community-based (с суффиксом «c»). Версия 3 является самой новой и предоставляет широкие средства аутентификации, контроля целостности и шифрования. Ключ -c задает community для доступа к серверу. Ключ -m позволяет подключать дополнительные mib-файлы. При использовании доступа к параметрам по названию необходимо подключить mib-файл STG-MIB. Далее следуют два аргумента: адрес SNMP-сервера и название параметра. Утилита snmpget позволяет получить значение скалярных параметров — параметров имеющих только одно значение. Для доступа к таблицам и деревьям используется утилита snmpwalk имеющая такой-же синтаксис.</para>
+               <para>Можно обращаться к параметрам по цифровому OID: snmpwalk -v2c -ccommunity_w 10.0.0.1 .1.3.6.1.4.1.38313.1.2. В этом случае загружать дополнительные mib-файлы не требуется. «.1.3.6.1.4.1» - OID enterprise-ветки всего дерева SNMP. «38313» - официально полученный от IANA (http://www.iana.org) enterprise-номер, уникально идентифицирующий дерево параметров Stargazer. Следующая за ним цифра 1 говорит о том что мы работаем с узлом stg24. «.1.3.6.1.4.1.38313.1.2» - OID таблицы tariffUsageTable.</para>
+               <para>Для того чтобы установить взаимодействие между плагином smux и дэмоном snmpd нужно провести дополнительную настройку последнего. А именно: указать в конфигурационном файле (обычно это /stc/snmp/snmpd.conf) параметр smuxpeer (OID обслуживаемый плагином, в нашем случае это .1.3.6.1.4.1.38313) и smuxsocket (IP-адрес с которого будут приходить пакеты от smux-плагина).</para>
+               </sect2>
+       </simplesect>
+       <simplesect>
+               <title>Настройка конфигурационного файла /etc/stargazer/rules</title>
+               <para>Файл rules описывает парвила классификации трафика по направлениям тарификации. Это текстовый файл, каждая строка которого описывает одно правило классификации. Формат строки файла:</para>
+<programlisting linenumbering="unnumbered">    
+&lt;протокол&gt; &lt;CIDR&gt;[:&lt;порт&gt;[-&lt;порт&gt;]] &lt;направление&gt;
+</programlisting>
+       <para>Допустимы следующие варианты указания протокола:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>TCP — под правило будет попадать только TCP-трафик;</para></listitem>
+               <listitem><para>UDP — под правило будет попадать только UDP-трафик;</para></listitem>
+               <listitem><para>ICMP — под правило будет попадать только ICMP-трафик;</para></listitem>
+               <listitem><para>TCP_UDP — под правило будет попадать только TCP- и UDP-трафик;</para></listitem>
+               <listitem><para>ALL — под правило будет попадать любой трафик.</para></listitem>
+       </itemizedlist>
+       <para>Варианты указания фильтра по IP-адресу и портам:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>192.168.0.1 — под правило будет попадать только трафик хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.1/32 — правило действует аналогично предыдущему;</para></listitem>
+               <listitem><para>192.168.0.0/24 — под правило будет попадать только трафик сети 192.168.0.0/24;</para></listitem>
+               <listitem><para>192.168.0.1:80 — под правило будет попадать только web-трафик хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.0/24:80 — под правило будет попадать только web-трафик сети 192.168.0.0/24;</para></listitem>
+               <listitem><para>192.168.0.1:1024-65535 — под правило будет попадать только трафик с высоких номеров портов хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.1/24:1024-65535 — под правило будет попадать только трафик с высоких номеров портов сети 192.168.0.0/24.</para></listitem>
+       </itemizedlist>
+       <para>В качестве направления указывается один из идентификаторов DIR0-DIR9 или NULL. Трафик классифицируемый по направлению NULL системой никак не учитывается.</para>
+       <para>В файле допустимо наличие пустых строк и комментариев. Комментарием считается строка начинающаяся с символа #. Текст следующий за этим символом до конца строки не учитывается.</para>
+       <para>Классификация трафика происходит путем последовательного сравнения информации из заголовка пакета с правилами в файле сверху-вниз до первого совпадения. По этому более «узкие» правила должны описываться перед более «широкими». Например, чтобы выделить web-трафик определенного хоста в отдельное направление порядок указания правил должен быть следующим:</para>
+<programlisting linenumbering="unnumbered">    
+TCP 192.168.0.1:80 DIR1
+ALL 192.168.0.1 DIR2
+</programlisting>      
+       <para>Если поменять эти строки местами то весь трафик хоста 192.168.0.1 попадет под первое правило.</para>
+       </simplesect>   
+       <simplesect>
+               <title>Использование скриптов OnConnect, OnDisconnect, OnUserAdd, OnUserDel, OnChange</title>
+               <para>Для реакции на различные события в системе используются файлы OnConnect, OnDisconnect, OnUserAdd, OnUserDel, OnChange. Эти файлы расположены в каталоге с конфигурационными файлами системы и должны иметь бит выполнения. Обычно это скрипты на одном из скриптовых языков программирования (sh, perl, python, php), но могут быть и полноценными программами.</para>
+               <para>Наиболее часто используются файлы OnConnect и OnDisconnect. Система запускает их, соответственно, при включении и при выключении доступа для отдельных абонентов. Обычно эти файлы содержат в себе скрипты управления файрволом для разрешения и запрещения прохождения трафика от определенных абонентов. Файл OnConnect запускается при включении доступа абоненту, а файл OnDisconnect — при выключении.. При запуске файла OnConnect в него передаются следующие параметры (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>ip — ip-адрес абонента;</para></listitem>
+                       <listitem><para>cash — состояние счета абонента;</para></listitem>
+                       <listitem><para>id — уникальный целочисленный идентификатор абонента (уникальность сохраняется в пределах одного запуска системы);</para></listitem>
+                       <listitem><para>dirs — список открываемых направлений (представлен строкой вида «0101100101», где первая цифра соответствует направлению DIR0 а последняя — DIR9).</para></listitem>
+               </orderedlist>
+               <para>При запуске файла OnDisconnect в него передаются следующие параметры (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>ip — ip-адрес абонента;</para></listitem>
+                       <listitem><para>cash — состояние счета абонента;</para></listitem>
+                       <listitem><para>id — уникальный целочисленный идентификатор абонента (уникальность сохраняется в пределах одного запуска системы);</para></listitem>
+                       <listitem><para>dirs — список открытых направлений (представлен строкой вида «0101100101», где первая цифра соответствует направлению DIR0 а последняя — DIR9).</para></listitem>
+               </orderedlist>
+               <para>Файлы OnUserAdd и OnUserDel запускаются при добавлении и удалении абонента. В качестве параметра в них передается логин абонента.</para>
+               <para>Файл OnChange запускается при внесении изменений в учетную запись абонента. Его можно использовать для дополнительного журналирования изменений. В качестве параметров при запуске в него передаются (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>parameter — название изменяемого параметра;</para></listitem>
+                       <listitem><para>old value — старое значение параметра;</para></listitem>
+                       <listitem><para>new value — новое значение параметра.</para></listitem>
+               </orderedlist>
+       </simplesect>   
+       <simplesect>
+       <title>Описание конфигурационного файла stg.conf для плагина FreeRADIUS rlm_stg.so</title>
+       <itemizedlist mark="opencircle">
+               <listitem><para>local_port — необязательный параметр. Указывает, с какого локального порта будет происходить обмен данными с Stargazer.</para></listitem>
+               <listitem><para>server — IP-адрес сервера Stargazer.</para></listitem>
+               <listitem><para>port — порт для обмена данными со Stargazer.</para></listitem>
+               <listitem><para>password — пароль, который будет использован для шифрования обмена данными с Stargazer.</para></listitem>
+       </itemizedlist>
+       <para>Пример секции параметров rlm_stg.so для radiusd.conf:</para>
+<programlisting linenumbering="unnumbered">    
+stg {
+        local_port = 6667
+        server = localhost
+        port = 6666
+        password = 123456
+}
+</programlisting>      
+       <para>Модуль необходимо прописать в секцию instantiate, authorize. В секции authenticate модуль необходимо прописать в подсекциях AuthType до соответствующих модулей аутентификации. Например:</para>
+<programlisting linenumbering="unnumbered">    
+Auth-Type PAP {
+        stg
+        pap
+}
+</programlisting>      
+       <para>Также модуль должен быть прописан в секции accounting и post-auth.</para>
+       </simplesect>
+</chapter>