|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (49)
просмотр истории страницы{note}Помощь по внедрению пользовательских схем оказывается только на уровнях подписки "*Сопровождение*" и "*Аутсорсинг*". На подписках "*Стандарт*" и "*Бизнес*" предлагается использовать [стандартные схемы внедрения|CarbonBilling:Описание стандартных схем].{note} |
Интеграция пользовательской схемы состоит из трёх этапов: |
|
*Шаг 1.* Создать NAS через веб интерфейс, расставить опции (Имя, IP, Схема OSS - пользовательская), создать радиус атрибуты (если они у вас используются). |
{toc} |
|
h1. Добавьте NAS в список |
|
*Шаг *{*}2.* Заходим в контейнер биллинга |
# В меню "*Оборудование*" \-> "*NAS*" нажмите кнопку "*Добавить*" \\ \\ !nas_list.png|border=0,width=500!\\ \\ # В открывшейся форме заполните поля *Название*, *IP адрес*, выберите *OSS схему* "*Пользовательская*", укажите *версию "1"* и нажмите "*Сохранить*" \\ \\ !nas_add_form.png|border=0,width=350!\\ \\ # Обратите внимание, что после сохранения автоматически должно заполниться поле "*OSS Каталог управления*" \\ \\ !nas_created.png|border=0,width=350!\\ \\ # Перейдите на вкладку "*Управление*" и нажмите кнопку "*rtsh cfg init default v1*" \\ \\ !nas_management_tab.png|border=0,width=550!\\ \\ # Должно появиться всплывающее окно, через несколько секунд появится надпись "/usr/local/bin/rtsh cfg init default_v1 \[8032\] is finished" \\ \\ !nas_initiated.png|border=0,width=400!\\ \\ # Подключитесь к серверу по SSH и проверьте что файлы схемы создались: посмотрите какой указан путь до OSS каталога в настройках NAS и подставьте в команду: \\ \\ {code:title=Пример команды, путь до Вашего NAS уточните в его настройках}chroot /app/asr_billing/ ls -l /var/oss/core/MyNAS/{code} Вывод должен быть приблизительно следующий: \\ \\ !nas_list_files.png|border=1! |
|
{panel} chroot /app/asr_billing {panel} при создании NAS каталог уже будет с именем, которое вы ввели при создании , т.е |
|
{panel} /var/oss/core/имя {panel} *Шаг *{*}3.* Заходим в каталог |
h1. Настройте авторизацию RADIUS если это требуется |
|
{panel} cd /var/oss/core/имя {panel} |
На вкладке "*Дополнительно*" выберите по какому параметру (Логин, IP или MAC) искать абонента в биллинге. Подробней как это настроить и отладить описано в статье "[CarbonBilling:Авторизация по RADIUS]" |
|
*Шаг *{*}4.* Инициализуруем каталог |
h1. Кастомизируйте скрипт |
|
# Зайдите в контейнер биллинга {code}chroot /app/asr_billing{code} Перейдите в каталог с файлами схемы, каталог можно посмотреть в интерфейсе биллинга в настройках NAS. В нашем примере это "/var/oss/core/MyNAS/" {code}cd /var/oss/core/MyNAS/{code} # Скопируйте шаблон скрипта управления session {code}cp bin/session ubin/{code} # Откройте файл для редактирования. Например, это можно сделать редактором VIM {code}vim ubin/session{code} или MC {code}mcedit ubin/session{code} # Добавьте в скрипт ссылку на основной скрипт session. Это необходимо для правильной работы [синхронизация|CarbonBilling:Синхронизация абонентов на оборудовании]. Первые две строки в скрипте должны выглядеть так: |
{panel} {code}#!/bin/bash |
rtsh cfg init default |
. $(dirname $BASH_SOURCE)/../bin/session |
{panel} {code} |
# [Опишите команды|CarbonBilling:Состояния пользователей, услуг и команды управления интернет] необходимые для управления Вашим оборудованием. Например, событие user_accept, которое проходит при любой разблокировке пользователя. {code}user_accept(){ __coa_send ip forward_allow add $ip __coa_send ip snat add $ip $snatip } {code} Обязательными обычно являются следующие состояния (их описания есть в [статье|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=51708843]): #* user_add #* user_del #* user_accept #* user_drop # Выставьте права на выполнение скрипта {code} chmod +x ubin/session {code} |
|
*Шаг *{*}5.* Копируем стандартный файл обработки событий session |
h1. Перезапустите [CarbonBilling:nas_event_daemon] |
|
{panel} cp bin/session ubin/ {panel} *Шаг *{*}5.* Открываем файл обработки событий |
Чтобы слжба использовала исправленный скрипт для отправки команд, перезапустите её после исправления скрипта |
|
{panel} vim /var/oss/core/имя/ubin/session {panel} |
{code}chroot /app/asr_billing service nas_event_daemon restart{code} |
|
или |
h1. Проверьте что получилось |
|
{panel} mcedit /var/oss/core/имя/ubin/session {panel} *Шаг *{*}6.* Добавить команды управления в файл session, согласно описанным функциям. |
Выполните несколько команд, которые добавили в скрипте. Например, для проверки работоспособности функции user_accept выполните следующую команду: {code:title=Запрос к клиенту 192.168.200.2} rtsh session 192.168.200.2 accept {code} |
|
Например событие user_accept, которое проходит при любой разблокировке пользователя. |
{code:title=В ответ будет представлен вывод:} 2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1' env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1 |
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416user_accept |
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416send_mikrotik_cmd -s 192.168.0.5 bill+ct billadmin /ip firewall address-list remove numbers=192.168.200.2_crb_blocked 2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416: 2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416send_mikrotik_cmd -s 192.168.0.5 bill+ct billadmin /ip firewall address-list remove numbers=192.168.200.2_crb_blocked WARNING: NoSearchItem message: 'no such item', command: '/ip/firewall/address-list/remove =numbers=192.168.200.2_crb_blocked' exit code: 253 2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416set + |
{code} |
#!/bin/bash . $(dirname $BASH_SOURCE)/../bin/session |
|
user_accept(){ #здесь пишем команду, с помощью которой можно управлять вашим NAS из консоли биллинга } |
Для проверки работоспособности функции user_get_mac: {code:title=Запрос к клиенту 192.168.200.2 на получение его mac-адреса} rtsh session 192.168.200.2 get_mac |
{code} |
Обязательными обычно являются следующие состояния: user_add, user_del, user_accept, user_drop. Их описания есть в [статье|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=51708843] |
|
*Шаг *{*}7.* Выставляем права |
{code:title=Вывод:} 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False |
|
blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1' env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074user_get_mac 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074local TMPDIR=/tmp/nas_event_daemon/192.168.0.5/user_get_mac/ 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074mkdir -p /tmp/nas_event_daemon/192.168.0.5/user_get_mac// 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074read ip int mac t 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[207send_mikrotik_cmd 192.168.0.5 bill+ct billadmin /ip arp print .proplist=address,mac-address,interface '?address=192.168.200.2' 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074echo 08:00:27:55:41:04 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074chmod 777 -R /tmp/nas_event_daemon/ 2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074set +x |
{panel} {code} |
chmod \+x ubin/session {panel} |
|
*Шаг *{*}8.* Проверяем прописанные команды |
|
Для проверки работоспособности функции отключения абонента user_drop: {code:title=Запрос к клиенту 192.168.200.2} rtsh session 192.168.200.2 drop |
{panel} {code} |
rtsh session 10.100.1.2 accept rtsh session 10.100.1.2 drop rtsh session 10.100.1.2 redirect rtsh session 10.100.1.2 redirect_cancel {panel} |
|
*Шаг *{*}9.* Проверяем авторизацию и управление пользователем. |
{code:title=Вывод:} 2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1' env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1 2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:user_drop 2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:send_mikrotik_cmd 192.168.0.5 bill+ct billadmin /ip firewall address-list add list=crb_blocked_list address=192.168.200.2 comment=192.168.200.2_crb_blocked 2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:set +x {code} |