Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Данный пример предполагает выдачу абоненту биллингом адреса по DHCP и управление Mikrotik'ом с помощью Mikrotik-API для назначения скорости и ограничений данному IP-адресу.

Настройка

  1. На вкладке Устройства и ресурсы - IP-ресурсы создайте категорию IP-ресурса, а затем IP-ресурс в этой категории. Можете также указать роутер, маску подсети и DNS - они будут выданы в DHCP (данные параметры можно также указывать в конфигурации устройства-коммутатора).
  2. На вкладке Устройства и ресурсы - VLAN-ресурсы создайте категорию VLAN-ресурса и VLAN-ресурс.
  3. На вкладке Справочники - Опции создайте опцию-папку Скорость, создайте дочерние опции-скорости, укажите в их конфигурациях address list'ы Mikrotik'а, например:

    list=512k_ip
  4. На вкладке Устройства и ресурсы - Типы устройств создайте тип устройства с названием Access+Accounting.

  5. Создайте тип устройства RouterOS, укажите в качестве Обработчика активации сервисов TerminalServiceActivator. Укажите в конфигурации данного типа устройства:

    # Порт подключения (если не указан, то используется порт из поля Хост/порт)
    sa.terminal.port=8729
    # протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell)
    sa.terminal.protocol=mikrotik-api-ssl
    
    # Команда выхода (отключения)
    sa.terminal.exit=
    
    # Команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к ID=x) на соединении
    sa.terminal.connection.inetOption.1.enable.1=/ip/firewall/address-list/print .proplist=.id where address=${ip()} and comment=bgb${servId()}
    sa.terminal.connection.inetOption.1.enable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove .id=${mikrotikLastIds()}
    sa.terminal.connection.inetOption.1.enable.3=/ip/firewall/address-list/add address=${ip()} list=${param(option(1),'list','512k_ip')} comment=bgb${servId()}
    # команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к ID=x) на соединении
    sa.terminal.connection.inetOption.1.disable.1=/ip/firewall/address-list/print .proplist=.id where address=${ip()} and comment=bgb${servId()}
    sa.terminal.connection.inetOption.1.disable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove .id=${mikrotikLastIds()}

    Обратите внимание на макрос ${param(option(1),'list','512k_ip')} - он берет текущую активную опцию, дочернюю по отношению к опции с ID=1 и получает значение параметра list из ее конфигурации (третий параметр - значение по умолчанию).
    При работе через SSH настройки подключения будут такими (но также нужно будет поменять команды, т.к. в Mikrotik SSH и API синтаксис различается):

    # Порт подключения (если не указан, то используется порт из поля Хост/порт)
    sa.terminal.port=22
    # протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell)
    sa.terminal.protocol=ssh
    
    sa.terminal.endSequence=\\[\w+@\w+\]\s+>\
     
    # Команда выхода (отключения)
    sa.terminal.exit=quit
  6. Создайте тип устройства-relay, например, Cisco Catalyst, укажите в конфигурации параметры разбора Agent-Remote-Id из Option 82, например:

    dhcp.option82.removeHeader=2
    # Параметры для извлечения из пакета agentRemoteId
    # вид значения в опции agentRemoteId: 0 (по умолчанию) - байты, 1 - строка
    #dhcp.option82.agentRemoteId.type=0
    # код субопции 82, содержащей идентификатор коммутатора клиента, позиция и длина последовательности идентификатора
    dhcp.option82.agentRemoteId.code=2
    dhcp.option82.agentRemoteId.position=0
    dhcp.option82.agentRemoteId.length=6
    
    # код субопции 82, содержащей VLAN, позиция и длина в субопции
    #dhcp.option82.vlanId.code=1
    #dhcp.option82.vlanId.position=0
    #dhcp.option82.vlanId.length=2
    # код субопции 82, содержащей SVLAN, позиция и длина в субопции
    #dhcp.option82.agentSvlanId.code=1
    #dhcp.option82.agentSvlanId.position=0
    #dhcp.option82.agentSvlanId.length=2
  7. Создайте тип устройства с названием SA-Rerouting, с обработчиком активации сервисов RecipientListServiceActivator, в конфигурации укажите:

    # При пересинхронизации вызываем onAccountingStart
    sa.device.sync.onAccountingStart=1

    Устройство данного типа будут перенаправлять задания синхронизации на другу папку дерева устройств.

  8. Создайте тип устройства коммутатора доступа, например DGS-1100-06/ME, на вкладке Интерфейсы создайте интерфейсы (порты) коммутатора.

  9. В дереве устройств создайте устройство типа Access+Accounting, оно будет "корневым" для приложений InetAccess и InetAccounting. Укажите в нем конфигурацию:

    # Идентификатор DHCP-сервера (IP-адрес InetAccess)
    dhcp.serverIdentifier=10.0.25.35
    
    # Категория ресурсов VLAN для статического назначения абонентам
    vlan.resource.category=1
    # Категория IP-ресурсов для динамической выдачи абонентам
    dhcp.ipCategories=1
    # lease time, выдаваемый абоненту
    dhcp.option.leaseTime=1800
    # Таймаут закрытия сессии по отсутствию DHCP(RADIUS/Netflow)-пакетов
    connection.suspend.timeout=1300
    connection.close.timeout=1300 
    
    # Режим поиска сервиса договора, например, по VLAN
    dhcp.servSearchMode=4
     
    # Параметры тарификации
    accounting.worker.1.thread.count=1
    accounting.worker.1.tariffication.1.minDeltaAmount=0
    accounting.worker.1.tariffication.1.delay=10
    accounting.worker.1.tariffication.1.batchSize=500
    accounting.worker.1.tracking.1.delay=10
    accounting.worker.1.tracking.1.batchSize=500
    accounting.worker.2.thread.count=1
    accounting.worker.2.flushing.1.minDeltraAccount=0
    accounting.worker.2.flushing.1.delay=20
    accounting.worker.2.flushing.1.batchSize=500
    accounting.worker.3.thead.count=1
    accounting.worker.3.finishing.1.delay=20
    accounting.worker.3.finishing.1.batchSize=500
     
    # При выдаче Access-Accept заносим запись в БД
    connection.start.fromAccept=1
    
  10. Создайте дочерние устройства-папки BRASыRelayКоммутаторы:

  11. В папке BRASы создайте устройство типа RouterOS, укажите в поле Хост/порт IP-адрес данного BRAS'а, в полях Логин и Пароль - соответственно логин и пароль для управления данным устройством.

  12. В конфигурации папки Relay укажите в конфигурации, что для всех устройств в данной папке агентскими устройствами будут устройства в папке Коммутаторы, указав ID папки Коммутаторы:

    # Папка с агентскими устройствами (коммутаторами)
    device.agentDeviceRootId=14
  13. В папке Relay создайте устройство типа Cisco Catalist, в поле Хост/порт укажите IP-адрес данного устройства.

  14. В папке Коммутаторы создайте устройство типа SA-Rerouting и укажите в его конфигурации в параметре sa.recipientList.rootDeviceId ID папки BRASы, чтобы задания синхронизации дублировались на устройства данной папки:

    # Дублируем запросы синхронизации на другую папку устройств (BRASы)
    sa.recipientList.rootDeviceId=12
  15. В устройстве SA-Rerouting создайте дочернюю папку (например, для группировки по районам).
  16. Дочерним к устройству типа SA-Rerouting создайте устройство типа DGS-1100-06/ME, укажите в поле идентификатор MAC-адрес коммутатора:
  17. На вкладке Справочники - Типы сервисов создайте тип сервиса с названием, например IPoE, установите галочки устройство, интерфейс, интерфейс персонален, VLAN, VLAN персонален, MAC-адрес. Типа адреса: динамический или статический. В конфигурации:

    # Шаблон имени сервиса в договоре
    title.pattern=(${deviceIdentifier})/(${interfaceId})
  18. В договоре создайте сервис данного типа, укажите коммутатор, порт, VLAN и MAC-адрес.

Примечание

Указание всех полей в типе сервиса не является обязательным - важны лишь те поля, по которым идет поиск. Например, при поиске по VLAN обязательно нужно лишь указать устройство-коммутатор (не обязательно коммутатор доступа, этом может быть коммутатор агрегации, если у вас VLAN-per-User) и VLAN. Остальные поля могут быть использованы при управлении устройствами (коммутаторами).

Дереву устройств не обязательно быть именно таким. Если у вас один BRAS (шейпер), то SA-Rerouting не нужен. Если релеи не дублируются (т.е. в папке Relay будет только одно устройство), то не обязательно делать отдельные папки:


  • Нет меток