Граф Wiki

Интеграция с оборудованием

Раздел описывает интеграцию СмИТ Биллинг v1.6.0 с сетевым оборудованием: NAS/BRAS-серверами, коммутаторами, VoIP-шлюзами, IPTV-системами и абонентским оборудованием.

Интеграция с оборудованием
Содержание страницы
Схема интеграции оборудования ISP

Интернет оборудование — Пользовательская схема

Содержание раздела

Для интеграции нестандартного NAS-оборудования с СмИТ Биллинг 1.6 используется пользовательская схема. Процесс интеграции состоит из 5 шагов:

  1. Добавить NAS — зарегистрируйте новое NAS-устройство в разделе Оборудование → NAS веб-интерфейса биллинга. Укажите IP-адрес, тип устройства, RADIUS-secret.
  2. Настроить RADIUS — сконфигурируйте на NAS-устройстве параметры RADIUS-аутентификации: адрес RADIUS-сервера (IP биллинга), порты авторизации (1812) и учёта (1813), shared secret.
  3. Создать пользовательский скрипт — разработайте скрипт управления сессиями для вашего оборудования. Скрипт размещается в каталоге пользовательских бинарных файлов.
  4. Перезапустить nas_event_daemon — после добавления нового NAS перезапустите демон обработки событий для подхвата новой конфигурации.
  5. Верификация — выполните тестовую авторизацию абонента и убедитесь, что сессия корректно создаётся и завершается.

Пользовательские скрипты управления NAS размещаются в директории проекта и монтируются в Docker-контейнер FreeRADIUS:

# Создать пользовательский скрипт NAS
docker compose exec freeradius bash
cd /app/radius_python/nas_scripts/
cp template_session.py my_nas_session.py
# Отредактировать скрипт под ваше оборудование

# Перезапустить FreeRADIUS
docker compose restart freeradius
FreeRADIUS работает в отдельном Docker-контейнере с модулем rlm_python3. Три виртуальных сервера: default (интернет, порты 1812/1813), voip (2812/2813), iptv (6812/6813).

Поддерживаемое интернет-оборудование

NAS — назначение и роль в биллинге

Содержание раздела

NAS (Network Access Server) — устройство, которое физически терминирует абонентскую сессию (PPPoE, IPoE, DHCP) и отправляет RADIUS-запросы в биллинг. Запись хранится в таблице nas, редактируется на странице /admin/equipment/Nas/.

Зачем NAS заводится в БД

Запись nas в биллинге решает четыре задачи:

1. RADIUS-доверие (clients.conf)

FreeRADIUS принимает Access-Request только от IP, перечисленных в clients.conf. Этот файл генерируется при старте контейнера app-freeradius-1 из таблицы nas (см. docker/freeradius/entrypoint.sh) — каждая enabled-запись становится client <name> { ipaddr=<IP>; secret=<SECRET> }. Без записи в БД ваш роутер физически не сможет авторизовать клиентов.

2. Привязка абонента к серверу доступа (Users.NAS_ID)

Когда абонент авторизуется, FreeRADIUS заполняет Users.NAS_ID ID сервера, через который пришёл запрос. Это нужно для:

3. Назначение IP-пулов (nas.PULL_ID и связанные)

NAS имеет 4 поля привязки к пулам: основной (PULL_ID), белый (WHITE_PULL_ID), NAT (NAT_PULL_ID), Hotspot (HOTSPOT_PULL_ID). FreeRADIUS при авторизации выбирает свободный IP из соответствующего пула. Можно строить chain-цепочки (ip_pull.NEXT_PULL_ID) — когда основной пул заполнен, выдача переходит во вспомогательный.

4. Развёртывание / автоконфиг (buttons_nas.html)

Поля TELNET_IP / TELNET_LOGIN / TELNET_PASSWORD / TELNET_PORT используются вкладкой «Развёртывание» в карточке NAS — там можно с UI запустить cfg_init / cfg_fill / cfg_make / cfg_upload. Это ssh-команды через скрипт ssh_send, генерирующие конфиг роутера на основании текущих абонентов и пулов.

Где это поле используется

ГдеПоле / связьЧто происходит
nasIP + SECRETПопадает в clients.conf FreeRADIUS — без этого NAS не может слать RADIUS-запросы
UsersNAS_IDАвто-заполнение при авторизации; используется для CoA и СОРМ
nasPULL_ID / WHITE_PULL_ID / NAT_PULL_ID / HOTSPOT_PULL_ID4 IP-пула с назначением — FreeRADIUS выдаёт IP из соответствующего
RADIUS_SESSIONSNAS_IP_ADDRESSИстория сессий с привязкой к NAS — для отчётов и SORM
nas_radius_paramsNAS_IDДополнительные RADIUS-атрибуты, отдаваемые в Access-Accept (vendor-specific)

Нужно ли вам это

Запись NAS в БД нужна всегда, как только у вас есть хоть один сервер доступа который шлёт RADIUS-запросы:

Что делать со старыми/неиспользуемыми NAS

Хорошие индикаторы что NAS-запись «мёртвая»:

  1. enabled=false — выключен в UI, но строка не удалена;
  2. 0 RADIUS-сессий за последние 30 дней (см. дашборд /admin/equipment/nas_status/ → колонка «Активность»);
  3. 0 абонентов на нём (Users.NAS_ID = ваш_id);
  4. не упоминается ни в одной NAS-цепочке (nas.PULL_ID не используется другими).

Перед удалением:

Важно: после любого изменения списка NAS (добавление, удаление, смена IP, смена secret) — перезапустите FreeRADIUS кнопкой «Перезапустить RADIUS» (или через меню деплоя). clients.conf генерируется только при старте контейнера, на лету не перечитывается. Без перезапуска новый NAS не сможет работать, а удалённый продолжит работать «по старой памяти».

Редактирование NAS — модальное окно

Начиная с, все операции с NAS-устройствами выполняются в модальном окне (без перехода на отдельную страницу). Кнопка в строке таблицы открывает полнофункциональное окно редактирования.

Список NAS

Модальное окно содержит 6 вкладок:

NAS модалка — вкладка Основное NAS модалка — вкладка RADIUS NAS модалка — вкладка Авторизация NAS модалка — вкладка Управление NAS модалка — вкладка IP-пулы NAS модалка — вкладка OSS
После сохранения NAS биллинг показывает баннер «Требуется перезапуск FreeRADIUS» — clients.conf обновляется при следующем старте контейнера.

Онлайн-абоненты NAS

Начиная с, в столбце Онлайн таблицы NAS отображается кликабельная ссылка с числом активных сессий. Клик открывает модальное окно со списком абонентов, подключённых через данный NAS прямо сейчас.

Список NAS — кликабельный счётчик онлайн

Модальное окно «Онлайн на NAS» показывает до 200 активных сессий:

Модалка онлайн-абонентов NAS

Кнопка Обновить перезагружает данные без закрытия окна. Если сессий больше 200 — отображается подсказка о лимите.

Данные берутся из таблицы USERS_RADIUSAUTH по условию logged=1, user.nas_id=<id>. Если сессия зависла (NAS не прислал Accounting-Stop), она всё равно будет отображаться — используйте кнопку «Sync» для принудительной синхронизации.

Коммутаторы (Switch) в биллинге — назначение и роль

Содержание раздела

Коммутатор (Switch) в СмИТ Биллинг — это запись в БД, отражающая физический сетевой коммутатор / OLT (PON-головку), через который абонент подключён к сети провайдера. Запись хранится в таблице switch, редактируется на странице /admin/equipment/Switch/.

Зачем коммутатор хранится в БД

Запись switch в биллинге решает три задачи:

1. Привязка абонента к точке физического подключения

Поле Users.SWITCH_ID указывает «через какой коммутатор работает данная учётная запись». Эта информация используется в:

2. OPT82-авторизация (привязка по порту)

Таблица SWITCH_PORTS хранит список портов конкретного коммутатора и привязки к учёткам. При OPT82-авторизации (см. раздел ниже) FreeRADIUS получает из DHCP Option 82 IP коммутатора + номер порта, парсит их по шаблонам из Типа коммутатора и находит абонента в SWITCH_PORTS без логина/пароля.

Это самый «технологический» способ использования коммутатора в биллинге: реально влияет на авторизацию.

3. Связь с IP-пулом (ip_pull.SWITCH_ID)

Можно привязать конкретный IP-пул к конкретному свитчу — тогда выдача IP-адресов клиентам этого свитча идёт только из назначенного пула. Используется в небольших сегментированных сетях, где хочется строго контролировать какой кусок адресации работает с какой железкой.

Где это поле используется

ГдеПоле / связьЧто происходит
Users (учётная запись)SWITCH_ID + PORTПривязка абонента к коммутатору и порту — отображение в карточке, СОРМ, OPT82
SWITCH_PORTSSWITCH_ID + id (номер порта)OPT82-авторизация — поиск абонента по физическому порту
CONNECTION_POINTSSWITCH_ID + SWITCH_P_IDТочка физического подключения с указанием конкретного порта
ip_pullSWITCH_IDПривязка IP-пула к свитчу — клиенты этого свитча получают IP только отсюда

Нужно ли вам это

Зависит от модели работы вашего ISP:

Что делать со старыми/неиспользуемыми коммутаторами

В аудите чистоты БД (журнал dev_reports) часто встречаются записи коммутаторов с users_on_it=0 и cp_on_it=0 — то есть ни один абонент через них не привязан. Перед удалением проверьте:

  1. OLT/PON-головки (имя содержит «OLT», «GPON», «BDCOM», «ELTEX_LTE», тип SwitchType с PON-полями) — не удалять без подтверждения сетевиков. Это реальное оборудование в сети, на нём могут позже появиться абоненты.
  2. Старые маленькие коммутаторы доступа (D-Link, SNR на 24 порта) — если им больше 5 лет и у них нет ни одного клиента, чаще всего это рудимент после декомиссии. Можно удалять после подтверждения от инженера, что эта железка реально снята.
  3. Тестовые записи (имя совпадает с IP, тип не указан, дом не указан) — обычно безопасно удалять.

Удаление выполняется через UI /admin/equipment/Switch/ кнопкой 🗑 в строке. SQL-каскад: switch защищён NO ACTION на FK из users.SWITCH_ID, CONNECTION_POINTS.SWITCH_ID, ip_pull.SWITCH_ID — то есть удаление заблокируется, если есть хотя бы одна привязка. Это safety net.

Рекомендация: прежде чем удалять коммутатор «потому что 0 пользователей», убедитесь у сетевого инженера, что это не запасное оборудование на складе с заранее заведённой записью в биллинге. Удаление 4 пустых записей не даёт экономии (БД от них не тормозит), а ошибочное удаление действующего OLT — это потенциальный геморрой когда на нём появятся новые клиенты.

Редактирование коммутаторов — модальное окно

Коммутаторы (/admin/equipment/Switch/) редактируются в модальном окне с двухколоночным макетом: слева — название и IP, справа — адрес установки (Select2), этаж, помещение.

Начиная с, в таблице коммутаторов добавлена колонка Тип — отображает привязанный тип коммутатора (бейдж с названием). Тип определяет регулярные выражения для парсинга Option 82 и используется при OPT82-авторизации.

Список коммутаторов с колонкой Тип Модалка коммутатора — поле Тип

Типы коммутаторов

Содержание раздела

Справочник типов коммутаторов /admin/equipment/SwitchType/ — настройка правил парсинга DHCP Option 82 для каждого типа оборудования. Используется при авторизации абонентов по коммутатору.

Типы коммутаторов — список

С добавление и редактирование типов выполняется в модальном окне с двумя вкладками: Основные (название, признак «Порты с 0») и Opt82 (поля парсинга). Изменения сохраняются без перезагрузки страницы.

Модалка типа коммутатора

Параметры Opt82

Каждая запись задаёт регулярные выражения для извлечения данных из поля Option 82:

OPT82-авторизация

Содержание раздела

OPT82 (DHCP Option 82) — механизм авторизации абонентов по физическому расположению в сети: система определяет, к какому коммутатору и на какой порт подключён клиент, без необходимости знать его логин или MAC-адрес.

Как это работает

  1. Абонент подключает устройство к порту коммутатора и посылает DHCP-запрос.
  2. Коммутатор добавляет в DHCP-пакет поле Option 82 — информацию о своём IP-адресе и номере порта (формат зависит от производителя).
  3. DHCP-запрос попадает на NAS/BRAS, который перенаправляет его в FreeRADIUS биллинга.
  4. FreeRADIUS парсит Option 82 с помощью регулярных выражений из Типа коммутатора (PARS_SWIP, PARS_PORT, PARS_VLAN).
  5. Извлечённый IP коммутатора и номер порта ищутся в таблице SwitchPorts → находится привязанная учётная запись абонента (Users).
  6. Биллинг авторизует абонента и возвращает RADIUS-атрибуты (IP из пула, скорость и т.д.).
Ключевое отличие от логин-авторизации: при OPT82 логин и пароль не нужны — биллинг идентифицирует абонента по физическому порту коммутатора.

Шаг 1 — Тип авторизации в учётной записи абонента

В карточке абонента откройте вкладку Учётные записи → кнопка редактирования учётной записи → вкладка Основные. В поле Тип авторизации выберите по OPT82.

Доступные типы авторизации (поле auth_type в таблице Users):

Шаг 2 — Привязка к порту коммутатора

В той же карточке учётной записи перейдите на вкладку Сеть. Здесь три поля для OPT82:

После сохранения в таблице SwitchPorts создаётся запись: switch_id + port_num → user_id. Именно по ней FreeRADIUS находит абонента при авторизации.

Шаг 3 — Коммутатор в справочнике

Перейдите в Оборудование → Коммутаторы (/admin/equipment/Switch/). Убедитесь, что коммутатор добавлен с корректным IP-адресом — именно этот IP будет извлекаться из Option 82 и сравниваться с записями справочника.

Поля коммутатора:

Шаг 4 — Тип коммутатора (шаблоны парсинга)

Перейдите в Оборудование → Типы коммутаторов (/admin/equipment/SwitchType/). Каждый производитель по-своему кодирует данные в Option 82. Тип коммутатора задаёт регулярные выражения для их извлечения.

Проверьте, что для вашего оборудования создан тип с правильно заполненными полями PARS_SWIP (IP коммутатора) и PARS_PORT (номер порта). Если данных недостаточно — добавьте PARS_VLAN для VLAN-авторизации.

Шаг 5 — Флаги OPT82 на NAS

В карточке NAS (Оборудование → NAS → вкладка Авторизация) включите нужные флаги:

Обычно включают все три для максимальной точности идентификации.

Итоговая схема привязки

СущностьГде настраиватьЧто задаётся
Учётная запись абонентаКарточка абонента → Учётные записи → вкладки Основные + СетьТип авторизации = «по OPT82», SWITCH + PORT + VLAN
Коммутатор/admin/equipment/Switch/Название, IP-адрес коммутатора, адрес установки
Тип коммутатора/admin/equipment/SwitchType/Регулярные выражения PARS_SWIP / PARS_PORT / PARS_VLAN
NASКарточка NAS → вкладка АвторизацияФлаги auth_opt82_switch_ip / auth_opt82_port / auth_opt82_vlan

Телефония

Содержание раздела

Типовой план интеграции VoIP-оборудования с СмИТ Биллинг v1.6.0 занимает 20-30 минут и состоит из 7 этапов:

  1. Настройка OSS-схемы подключения к VoIP-шлюзу/АТС.
  2. Настройка парсера CDR-файлов (формат, кодировка, путь).
  3. Конфигурация правил нормализации телефонных номеров (E.164).
  4. Настройка направлений вызовов (VoIP-направления и категории).
  5. Создание тарифных планов телефонии (поминутная, посекундная тарификация).
  6. Тестовый вызов и верификация тарификации.
  7. Запуск сервиса в эксплуатацию.

Поддерживаемые OSS-схемы

Поддерживаемые парсеры CDR

ПарсерФормат
D-LinkCSV
AsteriskCSV / RADIUS
CiscoCDR binary / CSV
Mera Networks (MVTS)CSV
AlterteksCSV с разделителем «;»
GNU Gk (GnuGatekeeper)RADIUS / CSV
VoiceComCSV
Quintum TenorCSV / RADIUS
Unitel TS-004Проприетарный формат
АТС Iskratel SI3000CSV
AvayaCSV / SFTP

IPTV

Содержание раздела

СмИТ Биллинг v1.6.0 интегрируется с IPTV-платформами для автоматического управления аккаунтами абонентов, ТВ-пакетами и блокировками. Интеграция работает в двух режимах:

TVIP Media (TMS)

TVIP TMS — IPTV/OTT middleware для управления телевизионными услугами, абонентами и STB-приставками. Подключение через REST API с HTTP Basic Auth.

Настройки TVIP Media

Настройка: Настройки → Интеграции → TVIP Media

ПараметрОписание
URL панели TVIPАдрес панели провайдера (https://my.tvip.media)
Логин / ПарольУчётные данные для REST API (HTTP Basic Auth)
Provider IDИдентификатор провайдера в TVIP (узнать в панели)
Включить интеграциюГлобальный переключатель синхронизации

Возможности интеграции с TVIP Media:

Документация TVIP REST API: docs.tvip.tv/en/tms/usage/rest_api.html

LFStream (Смотрёшка)

LFStream — IPTV-прокси/CDN для доставки телевизионного контента. Управление аккаунтами абонентов и ТВ-пакетами через CMS-панель провайдера.

Настройки LFStream

Настройка: Настройки → Интеграции → LFStream

ПараметрОписание
URL API LFStreamАдрес панели провайдера (https://smit34.proxy.lfstrm.tv)
Логин / ПарольУчётные данные для CMS-панели
Включить интеграциюГлобальный переключатель синхронизации

Маппинг IPTV-пакетов

Для каждого IPTV-провайдера необходимо настроить соответствие между услугами биллинга и пакетами во внешней системе. Настройка: Настройки → IPTV-пакеты.

Маппинг IPTV-пакетов

Таблица маппинга содержит:

КолонкаОписание
ПровайдерTVIP Media или LFStream
Услуга биллингаУслуга (Usluga) из справочника биллинга
ID пакетаИдентификатор пакета во внешней IPTV-системе
Название пакетаНаименование пакета (для справки)
ВклВключён ли данный маппинг

Кнопка Загрузить пакеты запрашивает актуальный список ТВ-пакетов у выбранного провайдера через API и добавляет строки в таблицу.

Синхронизация

Биллинг синхронизирует данные с IPTV-платформами в следующих случаях:

СобытиеДействие в IPTV
Блокировка абонента (отрицательный баланс)Блокировка аккаунта в TVIP/LFStream
Разблокировка абонента (баланс восстановлен)Разблокировка аккаунта
Включение IPTV-услуги абонентуПодписка на соответствующий ТВ-пакет
Отключение IPTV-услугиОтписка от ТВ-пакета
Ежедневная сверка (Celery Beat)Полная проверка аккаунтов, подписок, блокировок

Все API-вызовы логируются в таблице iptv_api_log для мониторинга и отладки.

Логи синхронизации с IPTV-платформами:

docker compose logs celery | grep iptv_sync
# Просмотр API-логов в Django shell:
from billing.models.iptv import IptvApiLog
IptvApiLog.objects.filter(success=False).order_by('-created_at')[:10]

Другие поддерживаемые IPTV-платформы

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

Абонентское оборудование

Управление абонентским оборудованием (CPE): роутеры, модемы, ONT-терминалы. Биллинг поддерживает удалённую настройку оборудования через протокол TR-069 (CWMP). Для каждого устройства хранятся: модель, серийный номер, MAC-адрес, статус подключения, параметры конфигурации.

Модуль CPE/TR-069 доступен в расширенной версии. Для подключения обратитесь в отдел продаж.

Камеры

Интеграция с системами видеонаблюдения, в частности Flussonic Watcher. Биллинг управляет подписками абонентов на услуги видеонаблюдения: активация/деактивация доступа к камерам, тарификация просмотра архива, управление правами доступа к группам камер.

Модуль видеонаблюдения (Flussonic Watcher) доступен в расширенной версии. Для подключения обратитесь в отдел продаж.

Аренда оборудования

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

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