Skip to end of metadata
Go to start of metadata

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

По умолчанию в биллинге используется команда ping для диагностики соединения. Можно расширить инструменты диагностики за счет внешних программ или Perl-модулей при помощи опции INTERNET_EXTERNAL_DIAGNOSTIC

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

Объявление для внешней программы:

NAME:CMD ARGS::QINDEX:MODAL_TPL
NAMEИмя команды
CMDКоманда
ARGSАргументы
QINDEXПараметр, указывающий, нужно ли отображать страницу с диагностикой через qindex. "qindex" - отображать через qindex, пустое поле - отображать через index
MODAL_TPLНазвание шаблона с формой. Если задано, при нажатии кнопки диагностики появится всплывающее окно с этой формой. Параметры, введенные пользователем в форме могут быть переданы как параметры программе для диагностики.

Объявление для Perl-модуля:

NAME:package:MODULE:QINDEX
NAMEИмя команды
MODULEНазвание Perl-модуля
QINDEXПараметр, указывающий, нужно ли отображать страницу с диагностикой через qindex. "qindex" - отображать через qindex, пустое поле - отображать через index

Для разделения диагностических команд используется точка с запятой (;)

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

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
Любые, введенные пользователем. См. MODAL_TPL.

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

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


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

ARP Ping для mikrotik

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='/usr/abills/Abills/modules/Internet/arping.pl ACCT_SESSION_ID=%ACCT_SESSION_ID%';

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

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='/usr/abills/Abills/modules/Internet/arping.pl ACCT_SESSION_ID=%ACCT_SESSION_ID% EXTENDED=1';

Тогда будут дополнительно выводиться IP пользователя, должник ли он, address list на mikrotik, скорость шейпера, ARP-запись, будет проводиться и arping, и обычный ping.

Ping с возможностью задать размер пакета, количество пакетов

$conf{INTERNET_EXTERNAL_DIAGNOSTIC} = "Ping:ping -W 1 -c %PACKET_COUNT% -s %PACKET_SIZE% %FRAMED_IP_ADDRESS%:::internet_external_diagnostic_modal_ping";

TCPDUMP на Linux

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='TCPDUMP:/usr/bin/sudo /usr/sbin/tcpdump -c 3 -vv host %FRAMED_IP_ADDRESS%';

в файле /etc/sudoers  пропишите

www-data   ALL = NOPASSWD: /usr/sbin/tcpdump

Если нужно работать с удаленным хостом

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='TCPDUMP:/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.abills_admin abills_admin@%NAS_IP_ADDRESS% "/usr/bin/sudo /usr/sbin/tcpdump -c 3 -vv host %FRAMED_IP_ADDRESS%"';

На удаленном хосте  откройте доступ по сертификату и пропишите  /etc/sudoers

www-data   ALL = NOPASSWD: /usr/sbin/tcpdump

Tcpdump в реальном времени

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='TCPDUMP:package:Tcpdump:qindex';

Работает на серверах доступа с типом accel-ipoe. Заходит на сервер доступа по ssh, запускает tcpdump на интерфейсе выбранного клиента и показывает вывод tcpdump в браузере.

На серверах доступа должна быть настроена аутентификация по ssh-ключу (/usr/abills/Certs/id_rsa.*имя_пользователя*).

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

Запустите visudo, добавьте строку (в этом примере имя пользователя - abills_admin):

abills_admin   ALL = NOPASSWD: /usr/sbin/tcpdump

Интерфейс абонента, на котором tcpdump должен слушать будет найден по SESSION_ID с помощью accel-cmd:

accel-cmd show sessions ifname match sid %ACCT_SESSION_ID%

Команде accel-cmd можно передать дополнительные параметры переменной конфигурационного файла $conf{INTERNET_EXTERNAL_DIAGNOSTIC_ACCEL_CMD_EXTRA_PARAMS}.

Например, если accel не слушает порт для работы с accel-cmd на localhost, и нужно указать указать хост явно, укажите $conf{INTERNET_EXTERNAL_DIAGNOSTIC_ACCEL_CMD_EXTRA_PARAMS} = '-H 10.10.10.10';
Тогда accel-cmd будет подключаться к 10.10.10.10:

accel-cmd -H 10.10.10.10 show sessions ifname match sid %ACCT_SESSION_ID%

Если задана переменная конфигурационного файла $conf{INTERNET_EXTERNAL_DIAGNOSTIC_TCPDUMP_SSH_PORT}, для подключения к серверу доступа по ssh будет использован порт из этой переменной, а не из настроек сервера доступа. Пример:

$conf{INTERNET_EXTERNAL_DIAGNOSTIC_TCPDUMP_SSH_PORT} = '2222';

Дополнительный пароль сервиса

$conf{INTERNET_PASSWORD}=1; 

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

Дополнительный логин сервиса

$conf{INTERNET_LOGIN}=1; 

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

Изменение даты активации при платеже

$conf{INTERNET_PAY_ACTIVATE}=1;

Изменение даты активации (если дата активации клиента выставлена). Дата активации клиента меняется если соблюдаются следующие условия:

  1. На момент пополнения счета баланс клиента должен быть отрицательным (баланс=депозит+кредит).

  2. После пополнения счета баланс абонента должен быть положительным.

  3. Поточная дата должна быть более чем на 3 дней старше даты активации сервиса

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

Установка даты активации при первом подключении абонента

$conf{INTERNET_USER_ACTIVATE_DATE}=1;

Установка даты активации при первом подключении абонента со статусом «Не активировано». Абонент подключается, статус меняется на Активно и устанавливается текущая дата активации.

Активировать только при депозите не ниже полного месяца

$conf{INTERNET_FULL_MONTH}=1;

 - Для тарифных планов с месячной распределённой абон. платой производить активацию только при наличии полной суммы абон. платы на месяц.

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

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

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

$conf{INTERNET_WARNING_EXPR}='CMD:/usr/abills/Abills/modules/Internet/internet_warning.pl LOGIN=%LOGIN% LANGUAGE=%language% USER_PORTAL=%USER_PORTAL%';


LOGIN=Логин абонента
LANGUAGE=язык интерфейса
USER_PORTAL=

0 - Запуск с админ. интерфейса

1 - Запуск с портала абонента

Привязка MAC адреса в аккаунте пользователя

$conf{MAC_AUTO_ASSIGN}=1;  

Заполнять поле CID при соединении, если оно не заполнено. Если при включённой опции не надо определённому пользователю присваивать CID, нужно поставить в поле слово ANY. Система анализирует RADIUS параметр Calling-Station-Id и если он в формате MAC xx:xx:xx:xx:xx:xx запоминает его.

Игнорировать параметр Calling-Station-Id

$conf{INTERNET_CID_SKIP}=1;

Не проводить дополнительную авторизацию по параметру Calling-Station-Id

Время хранения логов детализации

$conf{INTERNET_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)

Разрешить дублирование CPE MAC

$conf{INTERNET_ALLOW_MAC_DUPS}=1;

Запретить дублирование параметров опции 82 (NAS, Порт) у абонентов

$conf{INTERNET_PROHIBIT_DUPLICATE_NAS_PORT} = 1;

При попытке прописать абоненту NAS и Порт, которые уже прописаны у другого абонента система не разрешит это сделать.

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

$conf{INTERNET_EXTERNAL_CMD}='команда на выполнение';

Внешний обработчик. Запускает внешние программы обработки при изменении учётной записи абонента через веб интерфейс.

В качетсве аргументов передаются параметры сервиса абонента UID TP_ID LOGIN DEPOSIT CREDIT

Не снимать абонплату 1 числа перед месячным периодиком (экспериментальная)

$conf{MONTH_FEE_TIME}='01:00:00';

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

Группирование лога последнего подключения абонента

$conf{CONNECT_LOG}=1; 

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

Не выдавать IPv6  адреса гостевым сессиям

$conf{AUTH_SKIP_GUEST_IPV6}=1;


Снимать снимать плату за активацию услуги при регистрации.

Снимать активизационный платеж при регистрации абонента и активировать услугу.

$conf{INTERNET_MANDATORY_FEE}=1;

  • No labels