Интеграция пользовательской схемы состоит из трёх этапов:
Добавьте NAS в список
- В меню "Оборудование" -> "NAS" нажмите кнопку "Добавить"
- В открывшейся форме заполните поля Название, IP адрес, выберите OSS схему "Пользовательская", укажите версию "1" и нажмите "Сохранить"
- Обратите внимание, что после сохранения автоматически должно заполниться поле "OSS Каталог управления"
- Перейдите на вкладку "Управление" и нажмите кнопку "rtsh cfg init default v1"
- Должно появиться всплывающее окно, через несколько секунд появится надпись "/usr/local/bin/rtsh cfg init default_v1 [8032] is finished"
- Подключитесь к серверу по SSH и проверьте что файлы схемы создались: посмотрите какой указан путь до OSS каталога в настройках NAS и подставьте в команду:
Пример команды, путь до Вашего NAS уточните в его настройкахchroot /app/asr_billing/ ls -l /var/oss/core/MyNAS/
Вывод должен быть приблизительно следующий:
Настройте авторизацию RADIUS если это требуется
На вкладке "Дополнительно" выберите по какому параметру (Логин, IP или MAC) искать абонента в биллинге. Подробней как это настроить и отладить описано в статье "Авторизация по RADIUS"
Кастомизируйте скрипт
- Зайдите в контейнер биллинга
chroot /app/asr_billing
Перейдите в каталог с файлами схемы, каталог можно посмотреть в интерфейсе биллинга в настройках NAS. В нашем примере это "/var/oss/core/MyNAS/"
cd /var/oss/core/MyNAS/
- Скопируйте шаблон скрипта управления session
cp bin/session ubin/
- Откройте файл для редактирования. Например, это можно сделать редактором VIM
vim ubin/session
или MC
mcedit ubin/session
- Добавьте в скрипт ссылку на основной скрипт session. Это необходимо для правильной работы синхронизация. Первые две строки в скрипте должны выглядеть так:
#!/bin/bash . $(dirname $BASH_SOURCE)/../bin/session
- Опишите команды необходимые для управления Вашим оборудованием. Например, событие user_accept, которое проходит при любой разблокировке пользователя.
user_accept(){ __coa_send ip forward_allow add $ip __coa_send ip snat add $ip $snatip }
Обязательными обычно являются следующие состояния (их описания есть в статье):
- user_add
- user_del
- user_accept
- user_drop
- Выставьте права на выполнение скрипта
chmod +x ubin/session
Перезапустите nas_event_daemon
Чтобы слжба использовала исправленный скрипт для отправки команд, перезапустите её после исправления скрипта
chroot /app/asr_billing service nas_event_daemon restart
Проверьте что получилось
Выполните несколько команд, которые добавили в скрипте.
Например, для проверки работоспособности функции user_accept выполните следующую команду:
rtsh session 192.168.200.2 accept
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 +
Для проверки работоспособности функции user_get_mac:
rtsh session 192.168.200.2 get_mac
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
Для проверки работоспособности функции отключения абонента user_drop:
rtsh session 192.168.200.2 drop
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
Метки
Страница: Пример. Accel-PPP, PPPoE + IPoE L2
Страница: Пример. Burst для Mikrotik-Simple и Mikrotik-Simple-Hotspot
Страница: Пример. CKAT IPoE
Страница: Пример. SNAT для Mikrotik-Simple
Страница: Пример. Динамические очереди при radius авторизации
Страница: Пример. Несколько Mikrotik PPPoE в одном широковещательном домене
Страница: Пример. Отключить блокировку в Mikrotik-Simple
Страница: Пример. Разная скорость на локальную и внешнюю сеть MikroTik-Simple
Страница: Пример. Разрешен доступ к определённым хостам в Интернет MikroTik-Simple
Страница: Пример. Скрипт отправки команд
Страница: Пример. Функция user_get_mac для pppoe клиентов Mikrotik-Simple
Страница: Пример. Шейпер и адрес-листы на подсеть для Mikrotik-Simple