DV

Модуль организации Dialup и VPN доступа.

Возможности

  • Тарификация по времени
  • Тарификация по трафику в зависимости от времени суток
  • Периодические отчисления (месячная и дневная абонплата)
  • Возможность раздельной и совместной тарификации по времени и трафику
  • Ограничение доступа в Интернет по времени суток
  • Система скидок
  • Кредитный лимит пользователя и тарифного плана.
  • Установка минимальной цены сессии
  • Тарифы с возможностью предоплаты и оплаты по факту использования
  • Работа с неограниченным количеством NAS серверов
  • Авторизация по SQL базе данных или по системной UNIX базе паролей
  • Авторизация по PAP, CHAP, MS-CHAP, MS-CHAPv2 (CHAP при сохранении паролей в SQL базе)
  • MPPE - шифрование трафика
  • Авторизация PPPOE по MAC адресу
  • Авторизация PPTP по IP адресу (для MPD по IP и MAC одновременно)
  • Изменение тарифного плана или снятие денег со счета по расписанию
  • Классы трафика
  • Ограничение скорости в зависимости от класса трафика (Только для NAS exppp)
  • Создание месячных, предоплаченных по трафику, пакетов
  • Дневные, недельные и месячные лимиты по трафику и времени
  • Отчёты по работе системы и состоянию счетов за любой период времени
  • Генерация и отправка администратору ежедневных и месячных отчётов по работе системы
  • Уведомление клиентов о завершении денег на счету
  • Права доступа для администраторов
  • Привязка администратора к группе.
  • Лог действий администратора, менеджера
  • Ограничение сессий по количеству общего (in+out) трафика (для exppp, mpd, pppd + RADIUS plugin (Linux))
  • Несъёмный минимум для подключений к NAS серверам (Tarif Plans → Credit Tresshold)
  • Смена пароля из пользовательского интерфейса
  • Изменение тарифного плана из пользовательского интерфейса.
  • Перевод пользователей с негативным депозитом в гостевой доступ оставляя возможность только проверки баланса .
  • Закрытие выбранных ресурсов для пользователей с негативным балансом.
  • Перенос неиспользованного предоплаченного трафика с предыдущих периодов .
  • Дополнительный денежный счёт для абон. платы
  • Совместный сервис. Использование параметров одного тарифного плана между несколькими пользователями (Общая скорость, общий предоплаченный трафик)
  • Установка суммы минимальной наработки за месяц
  • Callback
  • Турборежим (При использовании расширения Turbo)

Как работает

Деньги снимаются со счета пользователя в конце сессии. Чтобы пользователь не зашёл в минус, перед началом сессии для exppp, mpd, mikrotik ppp (с патчем http://abills.asmodeus.com.ua/wiki/doku.php?id=abills:docs:mpd:ru ), linux pppd, Mikrotik OS ppp ставится лимит сессии по времени и по трафику. Для других NAS серверов только по времени. Чтобы пользователи для NAS серверов, не имеющие возможности устанавливать лимиты трафика на сессию, не уходили в минус или для того, чтобы постоянно контролировался расход денег, например снятие абон. платы и других отчислений, нужно включить запускать в кроне программу /usr/abills/libexec/billd

/etc/crontab

*/5 * * * * root /usr/abills/libexec/billd

Установка

abills/libexec/config.pl

@MODULES = (
          'Dv'
          );

Настройка

$conf{MAC_AUTO_ASSIGN}=1; Привязка MAC адреса в аккаунте пользователя
Заполнять поле CID при соединении, если оно не заполнено. Если при включённой опции не надо определённому пользователю присваивать CID, нужно поставить в поле слово ANY. Система анализирует RADIUS параметр Calling-Station-Id и если он формате MAC xx:xx:xx:xx:xx:xx запоминает его.
$conf{DV_TP_MULTISHEDULE}=1; Разрешить в административном интерфейсе несколько расписаний по изменению тарифного плана
$conf{periodic_check}=1; Проверять депозит по текущим сессиям, при достижении 0 сбрасывать с линии
$conf{s_detalization}=1; Более детальная статистика по сессиям. Также используется для модуля graphics.cgi
$conf{DV_EXPPP_NETFILES}=
'/usr/abills/cgi-bin/admin/nets/'
путь к файлам с заданными сетями (только для exppp)
$conf{DV_LOG_CLEAN_PERIOD}=90; Время хранения логов детализации. Указывается в днях. Таблица s_detail
$conf{ERROR_ALIVE_COUNT}=3; Количество периодов не пришедших Alive пакетов после которого сессия автоматом попадает в Zap таблицу. Время Alive периода выставляется в
/ System configuration/ NAS/ [Alive]
Если сессия находится в Zap таблице больше двух $conf{ERROR_ALIVE_COUNT} (2 * $conf{ERROR_ALIVE_COUNT}) интервалов система автоматически её закрывает и рассчитывает время сессии и суму. Временем такой сессии считает время от старта до поучения последнего Alive пакета. (По умолчанию 3 периода)

Перенос в Zap журнал: Nas Alive * $conf{ERROR_ALIVE_COUNT}
Занесении сессии в статистику: Nas Alive * ($conf{ERROR_ALIVE_COUNT} * 2)
$conf{FW_START_RULES}='3000,2000,1000'; Начальные номера правил классов трафика для FreeBSD ipfw
$conf{PASSWORDLESS_ACCESS}=1; Безпарольный вход в систему.
Система проверяет IP адрес клиента если он совпадает с адресом в талице онлайн сессий клиенту предоставляется доступ к статистике без ввода пароля
$conf{DV_CALLBACK_PREFIX}='4' подставлять префикс для Callback номера. При перезвоне клиенту добавлять префикс 4
$conf{DV_CALLBACK_DENYNUMS}='800' Регулярное выражения запрещающее перезванивать на определённые номера.
Например «800» не перезванивать на номера которые начинаются с 800
$conf{DV_MIN_USER_FULLPERIOD}=1 Включение возможности снимать минимальную наработку не первого числа каждого месяца а через 30 дней с даты активации.
$conf{DV_HOLDUP_COMPENSATE}=1; Во время приостановления компенсация сумы оставшихся дней при месячной абонплате, если дата активации '0000-00-00'
$conf{DV_REACTIVE_PERIOD}='days:sum'; Сумма которая снимается с абонентов которые были приостановлены больше определённого количества дней.
days - количество дней приостановки
sum - сумма активации
$conf{DV_STATUS_NEG_DEPOSIT}=1; Включения фильтра негативного депозита при разных статусах услуги. По умолчанию если статус отличается от активно система не пускает абонентов даже с включённым фильтром негативного депозита
$conf{DV_FINE_LIMIT}=-10; Лимит начисления пени. По умолчанию система снимает пеню без учета лимитов.
$conf{DV_TP_CHG_FREE}=120; Бесплатная смена тарифного плана для абонента являющегося пользователям больше указного периода времени. Период указывается в днях
$conf{DV_ALERT_REDIRECT}='3,5'; Включить перенаправление на страницу о завершении учётного периода за 3,5 дней. Для работы с данным функционалом нужен модуль сообщения о израсходованном депозите.
$conf{DV_ALERT_REDIRECT_FILTER}='-'; Фильтр перенаправления на страницу информации о завершении учётного периода за 3-5 дней.
Пример
MPD:
$conf{DV_ALERT_REDIRECT_FILTER}='RAD:mpd-table-static +=32=%IP%'
$conf{DV_INTERVAL_PREPAID}=1; Учитывать пред оплаченный трафик для каждого интервала отдельно. По умолчанию учитывается весь пред оплаченный трафик.
$conf{DV_FULL_MONTH}=1; Для тарифных планов с месячной распределённой абон. платой производить активацию только при наличии полной сумы абон. платы на месяц
$conf{DV_CURDATE_ACTIVATE}=1; Активировать приостановленный за неуплату сервис текущей датой. по умолчанию сервис активируется следующей учётной датой. Данный параметр работает только в случае если установлена дата активации
$conf{DV_PREPAID_PERIOD_CREDIT}=1; При включённой опции система для абонентов с недостаточной сумой депозита на поточный месяц открывает ему кредит на количество дней депозита абонента.
формула: ( credit_days = deposit / (month_fee / days_in_month) ).
Кредит открывается только абонента без установленного кредита
$conf{DV_EXTERNAL_CMD}='-' Внешний обработчик. Запускает внешние программы обработки при изменении учётной записи абонента через веб интерфейс
$conf{DV_PASSWORD}=1; Дополнительный пароль сервиса.
При включении данной опции система будет использовать для подключения пароль сервиса интернет (Dv). Если пароль не заполнен будет использоваться основной пароль абонента. Данный пароль можно изменить только с админ формы.
$conf{DV_LOGIN}=1; Дополнительный логин сервиса.
При включении данной опции система будет использовать для подключения логин сервиса интернет (Dv). Если логин не заполнен будет использоваться основной логин абонента. Данный логин можно изменить только с админ формы.
$conf{DV_SKIP_QUEUE}=0; Отключение регулировки очереди для DUMMYNET. Поднимает производительность системы
$conf{DV_DISABLE_AUTO_ACTIVATE}=0; Запретить автоактивацию при первом подключении абонента. По умолчанию если абонент в статусе не активизирован при первом подключении ему меняется статус на активно. При изминении статуса во время подключкения абонплата или другие платежы не снимаются

Приостановка действия сервиса пользователя из личного кабинета

$conf{DV_USER_SERVICE_HOLDUP}='min_period:max_period:holdup_period:daily_fees:hold_fees_deposit:active_fees:holdup_skip_gids'; 	

Приостановка действия сервиса пользователя из личного кабинета. При приостановленном сервисе абонент не может пользоваться услугой, абон. плата также не снимается. Снятием данного начисления занимается periodic daily Приостановка возможна не чаще чем раз в месяц. Если уже была приостановка то окно приостанови не отображается.

min_period минимальный период блокировки
max_period максимальный период блокировки
holdup_period период в днях - за который можно приостановить услугу. Например не чаще чем раз в 60 дней
daily_fees сумма дневной абон. платы при приостановленной услуге, если не указывать сниматься не будет
hold_fees_deposit лимит ниже которого деньги за приостановку сервиса не снимаются
active_fees Сумма за активацию приостановления
holdup_skip_gids группы с которых запрещено приостановку услуги

Внешний информатор услуги

в случае если штатные сообщения системы не устраивают можно их заменить собственными через опцию $conf{DV_WARNING_EXPR} . Если указать в ней текст он будет отображаться в информационной панели. Также можно запустить внешнюю программу, а вывод показать абоненту и администратору.

$conf{DV_WARNING_EXPR}='CMD:/usr/abills/misc/dv_warning.pl LOGIN=%LOGIN% LANGUAGE=%language%';

Диагностика соединения

По умолчания в биллинге используется команда ping для диагностики соединения. Но можно расширить инструменты диагностики за счет внешних программ при помощи опции DV_EXTERNAL_DIAGNOSTIC.

$conf{DV_EXTERNAL_DIAGNOSTIC}='-' Внешняя диагностика соединения

Объявление:

NAME:CMD ARGS 
NAME имя команды
CMD сама команда
ARGS аргументы

Список возможных аргументов:

USER_NAME
SESSION_START
ACCT_SESSION_TIME
ACCT_INPUT_OCTETS
ACCT_OUTPUT_OCTETS
EX_INPUT_OCTETS
EX_OUTPUT_OCTETS
CONNECT_TERM_REASON
FRAMED_IP_ADDRESS
LAST_UPDATE
NAS_PORT
NAS_IP_ADDRESS
CALLING_STATION_ID
CONNECT_INFO
ACCT_SESSION_ID
NAS_ID
ACCT_SESSION_STARTED
ACCT_INPUT_GIGAWORDS
ACCT_OUTPUT_GIGAWORDS
FILTER_ID

Пример Использование ARP Ping

$conf{DV_EXTERNAL_DIAGNOSTIC}='ARPPING:arping %CALLING_STATION_ID%';


Если нужно обявить несколько внешних программ это можно сделать через точку с запятой (;)

ARP Ping для mikrotik

$conf{DV_EXTERNAL_DIAGNOSTIC}='ARPPING:/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_dsa.abills_admin abills_admin@89.21.77.1 "ping arp-ping=yes interface=[put [ip arp get [find address=%FRAMED_IP_ADDRESS%] interface]] %FRAMED_IP_ADDRESS% count=3"';

Смена тарифного плана абонентом

$conf{DV_USER_CHG_TP}=1; Включение возможности смены тарифного плана в пользовательском портале.
Пользователям отображаются только те тарифные планы на для перехода на какие им хватает средств.
Меню в пользовательском аккаунте: Internet.
Также для разрешённых ТП нужно объединить их в группу и в свойствах группы включить опцию разрешающую изменять ТП
$conf{DV_USER_CHG_TP_SHEDULE}=1; Включить возможность задавать расписания изменения тарифного плана для пользователя. Тарифный план меняется в день указанный в расписании.
$conf{DV_USER_CHG_TP_NPERIOD}=1; Разрешить пользователю менять тарифный план на следующий учётный период. По умолчанию на следующий месяц или на дату следующего учётного периода ДАТА Активизации + 30 дней. Если с даты активации прошло больше 30 дней тарифный план меняется моментально.
Имеет более высокий приоритет чем $conf{DV_USER_CHG_TP_SHEDULE}.
Если с пользователя снимается дневная или месячная распределённая абон. плата то следующим учётным периодом будет следующий день.
$conf{DV_USER_CHG_TP_NEXT_MONTH}=1; Разрешить смену тарифного плана раз в месяц для дневных и месячных распределённых тарифов. (по умолчанию они могут менять ТП на следующий день). Работает вместе с опцией $conf{DV_USER_CHG_TP_NPERIOD}=1;
$conf{DV_SKIP_CHG_TPS}='1,2,23' не показывать тарифные планы в меню изменения тарифного плана личного кабинета

Авторегистрация абонентов (MAC)

Регистрация IP/MAC адреса клиента для последующей выдачи статического адреса данному клиенту в сети. Абонент подключается в гостевом режиме, его перенаправляет на страницу логина в личный кабинет. Абонент переходит в кабинет и нажимает кнопку зарегистрироваться. Система автоматически ищет следующий свободный рабочий адрес и присваивает его клиенту прописывая в таблице адресов DHCP. Свободные адреса ищутся в журнале DHCP сети ( / Настройка / IP (DHCP) Сети ). Если в пуле раздаваемых адресов не установлена опция статическая сеть, система возвращает адрес 0.0.0.0. Что разрешает раздавать таким абонентам динамические IP адреса.

Опция работает при включённом модуле Dhcphposts

Форма регистрации

Включение опции

$conf{DV_IP_DISCOVERY}='1:129.168.0.0/24:PORTS,VID,NAS_ID;NET_ID:ADDRESS_RANGE:CHECK_PARAMS';

NET_ID - в какую DHCP сеть регистрировать клиента (Dhcp сети).

ADDRESS_RANGE - диапазон адресов куда должен попадать незарегистрированный клиент. Если не указать эту опцию все клиенты попадают в общую сеть указанную в первом параметре. Шаблоны сравнения указываются через точку с запятой.

CHECK_PARAMS - Параметры которые заносятся в базу после регистрации Возможны:

PORTS - Порт
VID - Влан ID
SERVER_VID - SERVER Влан ID
NAS_ID - Номер сервера доступа
IP - IP
MAC - MAC

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

Например:

 IPN_ACTIVATE=1
 OPTION_82=1

Ошибки включения сервиса

100 Unknow error Unknow error
101 Turbo mode enable Error Error in TURBO MODE activation process.
102 User activation Error System can't add user IP/MAC to CID field
103 IP Discovery mode failed. Unknown error Can't add user IP to Dhcphosts
104 IP Discovery mode failed. Dublicate IP/MAC Some of parameters Exists in Dhcphosts table.
106 No responce from CoA server 'xxx.xxx.xxx.xxx' Нет определения статуса сессии. Запрос управления CoA не проходит.
112 DHCP $_ERROR MAC: $_NOT_EXIST IP: 'xxx.xxx.xxx.xxx' Система не может определить MAC адрес абонента. Проверте присутствует ли адрес в журнале /Мониторинг/Dhcp/.
114 $ERR_IP_ADDRESS_CONFLICT Конфликт адресов. адрес прописан статически на другом абоненте
118 $_ERROR: Dublicate Попытка добавить уже существующий адрес
119 $_ERROR: DHCP add hosts error Другая ошибка добавления
120 $_ERROR: Can't find assign network IP: 'xxx.xxx.xxx.xxx' Нельзя найти гостевую сеть для определения рабочей сети. Смотрите параметр $conf{DV_IP_DISCOVERY} на предмет присутствия сети

Внешний обработчик команд

При возникновении определённых событий система может вызывать внешние программы их обработки.
Для вызова таких программ, нужно прописать в конфигурационном файле название файла обработки и путь к нему. При определении внешних обработчиков можно указывать дополнительные флаги.
При вызове внешних обработчиков, система передаёт им определенный параметры и ожидает ответа в формате:

флаг_успешного_выполнения:информационное_сообщение_для_системы

флаг_успешного_выполнения 1 - Операция выполнена успешно
0 - Операция не выполнена
информационное_сообщение_для_системы Набор пар НАЗВАНИЕ=ПАРАМЕТРЫ

Пример ответа об успешном выполнении внешнего обработчика:
1:INFO=Операция выполнена

Пример программы . Возвращает код успешного выполнения

#!/bin/sh
# External щзукфешщт example

echo "1:INFO=Operation complite. Arguments: '$@'";

Тарифные планы

Учётная запись пользователя

Отчёты

/Отчёты/Internet /

Отчёты работы модуля

  • Использовано - отчёт про использованное время и траффик с возможностью выбора по временным периодам, группам.
  • Последние входы - Полный список сессий по всем пользователям с возможностью поиска
  • Ошибки подключения клиентов - Полный список всех попыток подключений пользователей
  • Turbo - отчёт по работе модуля Turto
  • Должники - Список должников
  • Тарифные планы - Отчет распределения тарифных планов

Мониторинг

Регистрация

В системе предусмотрена регистрация пользователей через веб интерфейс. Адрес регистратора: https://your.host:9443/registration.cgi

Для включения регистрации нужно заполнить переменную в конфигурационном файле.

 @REGISTRATION = ('Dv');


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

billd

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

  • Hanguped Login: knish DEPOSIT: -112.085652 CREDIT: -12.085652 SESSION_SUM: 5.28290305137634 SESSION_ID: RFxmphPuwf

Завершение сессии при отрицательном балансе

  • Error: Lost Alive / Login: rambo, Last Alive: 2007-10-05 21:54:19, Session-ID: GiK72BJT5E

Не было RADIUS Alive (пакетов подтверждающих активность абонентов) более 3 alive периодов

Перенос зависшей сессии в Zap. Система считает сессию не активной так как определённое время не приходят RADIUS Alive пакеты (периодические пакеты которые сообщают что лик еще работает) и переносит её в подозрительные сессии. Время прихода RADIUS Alive определяется в настройках сервера доступа.
Данная ситуация возникает:

  1. если по какой то причине потерялся Alive пакет
  2. Если сервер доступа перезагрузился в экстренном режиме и не успел завершить все сессии
  • Error: CALCULATIO rambo Last Alive: 1772, Session-ID: GiK72BJT5E

Система закрыла сессию в билинге так как не было RADIUS Alive (пакетов подтверждающих активность абонентов) пакетов более 5 интервалов

Другие ошибки

RECHANGE DEPOSIT: 66.000000 CREDIT: 0 SESSION_SUM: 0 SESSION_ID: 99412 STATE: 0 GUEST: 1 Hangup: 1 DURATION: 00:09:15

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

Активация абонентов со статусом "Слишком маленький депозит"

/usr/abills/libexec/billd dv_get_fee DEBUG=2 PAGE_ROWS=1000

Абон. плата (periodic)

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

# /usr/abills/libexec/periodic daily

Для месячной

# /usr/abills/libexec/periodic monthly

дополнительные параметры передаваемые при запуске снятий. Данные программы стоит выполнять через cron с интервалом 1 час. Например дневная программа периодических действий в 00:00:00 месячная в 01:00:00. Месячную и дневную программу нужно запускать каждый день

TP_ID Номер тарифного плана. Снятия производятся только для указанного тарифного плана.
Также можно указать несколько тарифных планов через точку с запятой.
Пример
TP_ID=«1;2;3;4;5»
LOGIN=«» Логин абонента. Снятия производятся только для определённого абонента.
DATE=xxxx-xx-xx Дата выполнения периодических процесов. Операции будут производиться с датой указанной в этом параметре
SKIP_ROTATE=1 Не проводить ротацию логов при месячном периодике.
DEBUG=1..7 Режим отладки. В режиме отладки выше 7 система показывает выполнение команд но не выполняет их

Снятие абон. платы за определённое число

дневная

# /usr/abills/libexec/periodic daily DATE="2014-06-05"

месячнная

# /usr/abills/libexec/periodic monthly DATE="2014-06-05"

Шаблон формирования описания начислений

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

$conf{DV_FEES_DSC}='  ';

Параметры Шаблона

%FEES_PERIOD_MONTH%
%FEES_PERIOD_DAY% Тип начисления
Д/А дневная абон. плата
%TP_NAME% Название тарифного плана
%TP_ID% Номер тарифного плана
%PERIOD% Период начисления. Устанавливается только в месячной абон. плате
%FEES_METHOD% Тип списания. Данный параметр можно указать в настройках тарифного плана.
По умолчанию: Периодические платежи

Шаблон по умолчанию

$conf{DV_FEES_DSC}='Internet: %FEES_PERIOD_MONTH%%FEES_PERIOD_DAY% %TP_NAME% (%TP_ID%) %PERIOD%';

PPPoE+

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


Рассмотрим на примере сервера доступа mpd 5.5.

При авторизации сервер доступа передаёт на радиус параметр

ADSL-Agent-Circuit-Id = test_switch_1:GigabitEthernet0/0/1

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


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

$conf{DV_PPPOE_PLUSE_PARAM}='ADSL-Agent-Circuit-Id';

В учётной записи абонента в поле Порт указываем дополнительные данные абонента

test_switch_1:GigabitEthernet0/0/1

Также если в конфигурации указана опция $conf{DV_PPPOE_PLUSE_PARAM} система автоматически заполняет параметр порт для абонентов с незаполненным полем. Чтобы не проверять параметр дополнительной авторизации в поле Порт нужно прописать параметр ANY