Page tree
Skip to end of metadata
Go to start of metadata

Настройка провижининга

Теги

В разделе Справочники → Теги добавляем новые записи:

  • Тег абонентский_порт для маркировки спецификаций номенклатурных позиций коммутаторов доступа.
  • Тег интернет-тариф для маркировки пакетов услуг, оказываемых с использованием DHCP-сервера.

Создание новых тегов

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

В разделе Справочники → Номенклатура, в группе Все → ТМЦ → Активное оборудование → Коммутатор добавляем позицию для коммутатора доступа:

  • Указываем модель коммутатора в полях Код и Наименование, например Cisco WS-C2950-24.
  • Ставим флаги Может быть объектом и Операторское оборудование.
  • Нажимаем Добавить.

Создание номенклатурной позиции коммутатора доступа

Заполняем раздел Спецификация:

  • В поле Тип выбираем позицию спецификации, например Порт.
  • Поля Наименование и Кол-во заполняем в соответствии с используемой моделью оборудования.
  • В поле Теги указываем созданный ранее тег абонентский_порт.

Заполнение спецификации номенклатурной позиции коммутатора доступа

С помощью кнопки Добавить в разделе Оборудование → Активное оборудование создаём коммутатор доступа, к портам которого будет привязываться абонентское оборудование. На форме создания активного оборудования:

  1. В лукапе Тип выбираем созданную на предыдущем этапе номенклатурную позицию Cisco WS-C2950-24.
  2. Нажимаем кнопку Добавить — форма создания сменится формой редактирования, на которой в разделе Адреса указываем IP-адрес этого коммутатора:

    Форма редактирования коммутатора с привязанным IP-адресом

  3. На вкладке Состав добавляем компоненты — порты, к которым будет привязываться абонентское оборудование:

    Добавление компонентов-портов к коммутатору

Шаблон профилей операторского оборудования

В разделе Оборудование → Шаблоны профилей (необходимо право Провижининг → Редактирование шаблонов профилей) переходим на вкладку Операторское оборудование и создаём новый шаблон:

  1. В поле Теги номенклатурных позиций оборудования указываем тег абонентский_порт, которым ранее промаркировали спецификацию номенклатурных позиций коммутаторов доступа.
  2. Заполняем Наименование.
  3. Устанавливаем флаг Отправлять профили в очередь: профили по данному шаблону будут использоваться агентом HARD.

    Создание шаблона профилей операторского оборудования

  4. Нажимаем на кнопку Добавить — форма создания шаблона сменится формой его редактирования:

    Добавление атрибутов в шаблон профилей операторского оборудования

Наполняем шаблон атрибутами с помощью кнопки Добавить на форме его редактирования:

ПодстановкаНаименованиеПараметры
ОборудованиеSwitch-Port-Number
  • Временной интервал — Прочерк.
  • Группировать профили по значениям — Нет.
  • Обязательный атрибут — Да.
  • Параметры для вычисления:
    • Возвращаемое значение — Код.
Адрес основного оборудованияSwitch-IP-Address
  • Временной интервал — Прочерк.
  • Группировать профили по значениям — Нет.
  • Обязательный атрибут — Да.
  • Параметры для вычисления:
    • Тип адресаIP-адрес.
    • Вид адресаФактический адрес.
    • Внешний адресНе важно.
    • Состояние адресаНе важно.
    • Возвращаемое значение — Код.
  • Профили будут формироваться для компонентов (портов), для которых коммутатор с привязанным к нему IP-адресом является основным оборудованием.

  • Автонумератор по умолчанию для кода компонентов активного оборудования — это Номер по порядку в разрезе спецификации и родительского объекта учета. Таким образом код компонента активного оборудования соответствует номеру порта реального коммутатора.

Меняем состояние шаблона на Активен и нажимаем Сохранить, после чего переформировываем профили по новому шаблону.

Открываем вкладку Профили операторского оборудования и убеждаемся, что профили сформировались корректно. Периоды действия профилей определяются периодами действия участвующих в них привязок адресов к оборудованию, поэтому в данном случае у каждого компонента должно быть два профиля:

Шаблон профилей абонентского оборудования

Маркируем в разделе Справочники → Номенклатура тегом интернет-тариф все пакеты услуг, оказываемые с использованием DHCP-сервера:

Маркировка пакета услуг тегом интернет-тариф

В разделе Оборудование → Шаблоны профилей (необходимо право Провижининг → Редактирование шаблонов профилей) создаём новый шаблон:

  1. В поле Тип оборудования указываем номенклатурную позицию абонентского оборудования, например Оконечное оборудование.
  2. В поле Теги услуг выбираем тег, которым промаркировали на предыдущем этапе интернет-тарифы.
  3. Заполняем Наименование.
  4. В блоке Состояние услуги отмечаем все состояния: DHCP-сервер должен выдавать активным абонентам параметры доступа к сети при любом состоянии услуги. Единственным исключением является технологическое состояние Услуга заказана.

    Создание шаблона профилей абонентского оборудования

  5. Нажимаем на кнопку Добавить — форма создания шаблона сменится формой его редактирования:

    Добавление атрибутов в шаблон профилей абонентского оборудования

Наполняем шаблон атрибутами с помощью кнопки Добавить на форме его редактирования:

ПодстановкаНаименованиеПараметры
Адрес компонента оборудованияIP-Address
  • Временной интервал — Прочерк.
  • Группировать профили по значениям — Нет.
  • Обязательный атрибут — Да.
  • Заменять значением атрибута дочернего профиля — Нет.
  • Параметры для вычисления:
    • Тип адреса — IP-адрес.

    • Вид адреса — Фактический адрес.

    • Внешний адрес — Не важно.

    • Состояние адреса — Не важно.

    • Возвращаемое значение — Код.

Адрес компонента оборудованияSubnet-Mask
  • Временной интервал — Прочерк.
  • Группировать профили по значениям — Нет.
  • Обязательный атрибут — Да.
  • Заменять значением атрибута дочернего профиля — Нет.
  • Параметры для вычисления:
    • Тип адреса — IP-адрес.

    • Вид адреса — Фактический адрес.

    • Внешний адрес — Не важно.

    • Состояние адреса — Не важно.

    • Возвращаемое значение — Маска родительской подсети.

Адрес компонента оборудованияRouter-IP-Address
  • Временной интервал — Прочерк.
  • Группировать профили по значениям — Нет.
  • Обязательный атрибут — Да.
  • Заменять значением атрибута дочернего профиля — Нет.
  • Параметры для вычисления:
    • Тип адреса — IP-адрес.

    • Вид адреса — Фактический адрес.

    • Внешний адрес — Не важно.

    • Состояние адреса — Не важно.

    • Возвращаемое значение — Шлюз по умолчанию.

  • В данном примере предполагается, что DHCP-сервер выдаёт статические IP-адреса всем абонентам.

  • Профили будут формироваться для Оконечного оборудования, а IP-адрес привязывается к его компоненту — используем подстановку Адрес компонента оборудования.

  • Подсети и шлюзы для них определяются в разделе Справочники → Сетевые адреса → IP-нумерация.

Абонентское оборудование (Оконечное оборудование) должно быть привязано к операторскому (порт коммутатора). При обработке DHCP-запроса будет подбираться профиль операторского оборудования по данным опции 82, а из него будет извлекаться привязанный профиль абонентского оборудования.

 

Меняем состояние шаблона на Активен и нажимаем Сохранить, после чего переформировываем профили по новому шаблону.

Открываем вкладку Профили абонентского оборудования, подписанного на промаркированный тегом интернет-тариф пакет услуг, и убеждаемся, что профили сформировались корректно. Периоды действия профилей определяются периодами действия участвующих в них привязок адресов к оборудованию, поэтому в данном случае у каждого оборудования с одним привязанным IP-адресом должно быть два профиля:

Профили абонентского оборудования

Настройка брокера ActiveMQ

Установку и настройку производим в соответствии со статьёй Настройка брокера ActiveMQ.

Настройка агента HARD

Установку агента выполняем в соответствии со статьёй Установка агента HARD.

Общие параметры

Редактируем общий конфигурационный файл агента в соответствии с примером:

/etc/hydra/hard/hard.yml
# Список активных плагинов
enabled_plugins:
  - 'base/dhcp-option82'

# Логирование
log:
  # Общий лог агента
  common:
    # Уровень логирования: debug для отладки, info для эксплуатации
    level: 'debug'

# Системные фильтры
filters:
  # Базовая HTTP-аутентификация клиента (hard.pm / hard-dhcp.pm в FreeRADIUS)
  agent.basic_auth:
    main:
      # Логин базовой аутентификации
      login: 'freeradius'
      # Пароль базовой аутентификации
      password: 'freeradius_password'

# Серверные процессы агента
server:
  # IP-адрес сетевого интерфейса для приема запросов
  address: '127.0.0.1'
  # Номер TCP-порта для приема запросов
  port: 11080
  # Количество дочерних процессов агента - обработчиков запросов
  workers: 4

# Подключения к базам данных
connection_pools:
  # Подключение к БД кэша (MongoDB)
  mongo:
    main:
      # IP-адрес mongod
      host: '127.0.0.1'
      # Номер TCP-порта mongod
      port: 27027
      # Наименование базы данных
      name: 'hard_cache'
      # Имя пользователя базы данных
      user: 'hard'
      # Пароль пользователя базы данных
      password: 'mongo_user_password'

  # Подключение к БД провижининга (Oracle)
  database:
    main:
      # Наименование (net service name) базы данных
      name: 'hydra'
      # Имя пользователя базы данных
      user: 'AIS_RADIUS'
      # Пароль пользователя базы данных
      password: 'oracle_user_password'

      # Служебный абонент Гидры
      hydra:
        # Логин пользователя Гидры для доступа к приложению RADIUS-сервер
        user: 'hard'
        # Пароль пользователя Гидры для доступа к приложению RADIUS-сервер
        password: 'hydra_user_password'

# Синхронизация кэша с провижинингом
syncer:
  stomp:
    # IP-адрес сервера ActiveMQ
    host: '127.0.0.1'
    # Номер TCP-порта STOMP-коннектора ActiveMQ
    port: 61613
    # Логин пользователя ActiveMQ
    login: 'hydra'
    # Пароль пользователя ActiveMQ
    password: 'activemq_user_password'

  queues:
    # Наименование ActiveMQ-очереди с сообщениями об изменении профилей оборудования
    profiles: 'hydra_profiles_1'
    # Наименование ActiveMQ-очереди с сообщениями об изменении привязок оборудования
    binds: 'hydra_equipment_binds_1'

В данной конфигурации меняем значения параметров с паролями:

  • Пароль базовой аутентификации модулей hard.pm и hard-dhcp.pm сервера FreeRADIUS: ключ filters → agent.basic_auth → main → password.
  • Пароль пользователя базы данных кэша: ключ connection_pools → mongo → main → password.
  • Пароль пользователя базы данных провижининга: ключ connection_pools → database → main → password.
  • Пароль пользователя Гидры для доступа к приложению RADIUS-сервер: ключ connection_pools → database → main → hydra → password.
  • Пароль пользователя ActiveMQ: ключ syncer → stomp → password.

В MongoDB добавляем базу данных hard_cache и пользователя hard для неё в соответствии с описанным в статье Настройка агента HARD примером.

Экземпляр плагина base

Добавляем конфигурационный файл экземпляра dhcp-option82 плагина base агента HARD в соответствии с примером:

/etc/hydra/hard/plugins/base-dhcp-option82.yml
plugins:
  base:
    dhcp-option82:
      actions:
        # Действия authorize и authenticate не используются при работе FreeRADIUS в режиме DHCP-сервера
        authorize: {}
        authenticate: {}

        # Действие post_auth выполняется FreeRADIUS при получении им запросов DHCPDISCOVER, DHCPREQUEST
        post_auth:
          # Для идентификации абонентского оборудования сначала подбираем профиль операторского оборудования
          provider_profile:

            # Профиль операторского оборудования нужно искать в БД кэша
            set_by: search_cache
            query:
              # В подопции Remote Id запроса приходит IP-адрес коммутатора, в формате ASCII-HEX.
              # Пример преобразования: 0x495031302e31382e33322e31 → IP10.18.32.1 → 10.18.32.1
              Switch-IP-Address: $request.RAD_REQUEST.DHCP-Relay-Remote-Id.unhex().substring(2)
 
              # В подопции Circuit Id, в последних двух байтах, запроса приходит номер порта
              # Примеры преобразований: 0x000402d7010c → 0c → 12; 0x000402d70105 → 05 → 5
              Switch-Port-Number: $request.RAD_REQUEST.DHCP-Relay-Circuit-Id.substring(-2).to_i(16)

 
          # Для авторизации получаем профиль абонентского оборудования
          customer_profile:
            # Извлекаем профиль абонентского оборудования из профиля операторского
            set_by: set_first_from_provider_profile
 
            # В данном примере активный профиль абонентского оборудования может быть только один,
            # поэтому дополнительной фильтрации не требуется
            filter: {}
 
          reply:
            # Профиль оборудования подобран - формируем ответ с сетевыми параметрами
            - condition: $customer_profile.present?()
              template:
                RAD_REPLY:
                  # Атрибуты данного блока будут закодированы FreeRADIUS в соответствующие DHCP-опции
                  DHCP-Your-IP-Address: $customer_profile.attributes.IP-Address
                  DHCP-Subnet-Mask: $customer_profile.attributes.Subnet-Mask
                  DHCP-Router-Address: $customer_profile.attributes.Router-IP-Address
                  DHCP-DHCP-Server-Identifier: $customer_profile.attributes.Router-IP-Address
                  DHCP-Server-IP-Address: $customer_profile.attributes.Router-IP-Address
                  DHCP-Domain-Name-Server:
                    - '"172.16.0.2"'
                    - '"172.16.0.4"'
                  DHCP-NTP-Servers:
                    - '"172.16.0.3"'
                    - '"172.16.0.4"'
                  DHCP-IP-Address-Lease-Time: '"3600"'
                result: $rlm.OK

            # Профиль оборудования не найден - отвечаем отказом
            - template:
                RAD_REPLY: {}

                result: $rlm.NOTFOUND

        # Действие accounting не используется при работе FreeRADIUS в режиме DHCP-сервера
        accounting: {}

Настройка сервера FreeRADIUS

Установку и настройку сервера FreeRADIUS выполняем в соответствии со статьёй Установка и настройка DHCP-сервера FreeRADIUS. В модуле hard-dhcp.pm (файл /etc/freeradius/hard-dhcp.pm) указываем следующие параметры взаимодействия с агентом HARD:

# Параметры для связи с HARD
my @HARD_API_URLS = (                                     # Пул API URL для запросов
  "http://127.0.0.1:11080/base/dhcp-option82"
);

use constant HARD_AUTH_USER     => "freeradius";          # Логин
use constant HARD_AUTH_PASSWORD => "freeradius_password"; # Пароль

Пароль в константе HARD_AUTH_PASSWORD укажите тот же, что задан в ключе filters → agent.basic_auth → main → password конфигурации агента HARD.

Результат

В роли DHCP-сервера используется FreeRADIUS. В Гидре ведётся учёт операторского оборудования — коммутаторов доступа и привязок к нему абонентского оборудования. К абонентскому оборудованию привязаны статические IP-адреса. Сервер получает DHCP-запросы (DHCPDISCOVERDHCPREQUEST), с помощью Perl-модуля hard-dhcp.pm передаёт их на обработку агенту HARD. Агент подбирает профиль операторского оборудования, извлекает из него профиль привязанного абонентского оборудования и принимает решение о типе (успех, отказ) и составе (набор атрибутов-опций) ответа. Результат авторизации передаётся обратно, и FreeRADIUS на основе него отправляет DHCP-ответ: DHCPOFFERDHCPACK или DHCPNAK.

  • No labels