Настройка единого кода управления для услуг CFU и CFU Type2

Начиная с версии 3.8 у каждой услуги в рамках домена должны быть свои собственные, уникальные коды управления услугами. По этому если надо, чтобы у разных абонентов были одинаковые коды для услуг CFU и CFU Type2, их необходимо разнести в разные домены.

Настройка кодов управления услуг через CoCon

Начиная с версии 3.8 коды управления услуг настраиваются через консоль CoCon. Команды по управлению кодами располагаются по пути domain/<DOMAIN>/ss/feature-codes/.

Например, чтобы изменить код управления услугой "Безусловная переадресация (cfu)", можно воспользоваться командой:

antoniy@[mycelium1@ryabkov]:/$ domain/test.domain/ss/feature-codes/set cfu activate *88
Feature code successfully changed
antoniy@[mycelium1@ryabkov]:/$ domain/p.city/ss/feature-codes/set cfu deactivate #88
Feature code successfully changed
antoniy@[mycelium1@ryabkov]:/$ domain/p.city/ss/feature-codes/set cfu test *#88      
Feature code successfully changed

Если в результате изменения кода новый код пересечется с кодом другой услуги, системе предупредит пользователя об этом:

antoniy@[mycelium1@ryabkov]:/$ domain/p.city/ss/feature-codes/set cfu activate *99 
Warning: feature code changed but duplicates was found:
┌────────┬───────────┬────────────┬────────────────────────────────────────┐
│SS name │Feature key│Feature code│              Description               │
├────────┼───────────┼────────────┼────────────────────────────────────────┤
│cfu     │activate   │*99         │Activate 'Call Forwarding Unconditional'│
│vip_call│use        │*99         │Use VIP-call service                    │
└────────┴───────────┴────────────┴────────────────────────────────────────┘

Если возникает необходимость изменить разделитель параметров услуг или символ окончания набора, можно воспользоваться командами расползающиеся по пути domain/<DOMAIN>/ss/feature-codes/properties/

Настройка услуг через web-конфигуратор

Откройте приложение web-конфигуратора "SS Install" ("Управление услугами"). Изменение кодов происходит в разделе "SS Codes" ("Коды услуг").

Подробно про изменения кодов услуг через web описано в разделе Изменение кодов услуг.

Настройка подсистем

Стратегия аварийной остановки сервисов

Для основных сервисов

ecss-core.service
ecss-ds.service
ecss-mediator.service
ecss-mycelium.service
ecss-pa-megaco.service
ecss-pa-sip.service
ecss-subscriber-portal.service

по умолчанию определена стратегия автоматической аварийной остановки сервиса при превышении частоты его перезапуска: 4 раза за 120 секунд.

При необходимости данные значения можно переопределить с помощью команды sudo systemctl edit и и прописав параметры RestartSec, StartLimitIntervalSec, StartLimitBurst.

sudo systemctl edit <НАЗВАНИЕ СЕРВИСА>

Пример:

RestartSec=1
StartLimitIntervalSec=120
StartLimitBurst=4

Дополнительную информацию см. https://www.freedesktop.org/software/systemd/man/systemd.unit.

Настройка подсистемы Mediator

Описание системы Mediator

Система Mediator предназначена для сбора и экспорта предупреждений и статистической информации.

Общая схема взаимодействия Mediator с нодами SSW:

Рисунок 1 — Общая схема взаимодействия кластера Mediator с другими кластерами системы

В качестве источников предупреждений и статистики выступают следующие подсистемы:

  • Core;
  • Adapters (SIP, Megaco, SIGTRAN);
  • DS.

Статистика

В качестве статистической информации выступают события вызова (call events) и счетчики (counters). Каждая подсистема, принимающая участие в обработке вызова, формирует соответствующий набор событий и счетчиков, которые агрегируются в подсистеме Mediator в соответствии с указанными правилами.

Правило агрегации определяется "модулем статистики". Совокупность модуля статистики, интервала экспорта и "модуля (или модулей) экспорта" определяет задание статистики. Описание команд добавления, просмотра и удаления представлено в разделе Команды работы с заданиями статистики.

В общем виде схема обработки статистики может быть представлена в следующем виде:

Рисунок 2 — Схема обработки статистики

Предупреждения

В общем виде схема обработки предупреждений может быть представлена в следующем виде:

Рисунок 3 — Схема обработки предупреждений

Конфигурирование

Секция AMQP-клиента

Определяет подключения к AMQP-брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами:

%Секция AMQP клиента.
 {amqp10_client,
  [
   {realms,
    [
     %Строка подключения к брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами
     {local, "/ssw", "ssw", "ssw", [{localhost, {host, "IP or Hostname of RPS amqp broker"}, 5672, 10}]},
     %Строка подключения к брокеру, к которому подключена система TTS
     {tts, "/ssw", "ssw", "ssw", [{tts, {host, "IP or Hostname of TTS amqp broker"}, 5672, 10}]}
    ]
   }
  ]
 }
Секция SSH-консоли
{cocon, [
           {realm, local}  % Realm, определенный в секции AMQP-клиента
         ]}
Секция подключения к LDAP-серверу
{ldapman,
[
 {ldap_server_ip, "127.0.0.1"},   % IP-адрес LDAP-сервера
 {ldap_server_port, 389},       % Порт LDAP-сервера
 {ldap_dc, "dc=ecss"},            % DC директория, в которой будем работать
 {ldap_system_username, "admin"}, % Имя пользователя, из под которого система будет работать с LDAP-сервером (вести аудит и прочее)
 {ldap_system_password, "admin"}  % Пароль
]}
Секция rtop_agent

Определяет название кластера.

 {rtop_agent, [
               {realm, local} % идентификатор подключения к системе DS
              ]}
Секция логирования
%Секция конфигурирования подсистемы логирования:
    {chronica, [
        {rules, [
            {restart,       "ecss_starter",         info,    [restart],         on},
            {alarm_error,   "*",                    error,   [rps_alarm],       on}, % notification via alarm subsystem
            {all_errors,    "*",                    error,   [error, journald], on}, % catch all errors
            {all_warning,   "*",                    warning, [error],           on}, % catch all warnings
            {all_infos_bin, "*&!rps_watchdog",      info,    [info_bin],        on},
            % Binary
            {all_logs_bin,           "*",           debug,   [default_bin], off},
            {mycelium_bin,           "mycelium*",   debug,   [default_bin], off},
            {alarm_bin,              "alarm*",      debug,   [default_bin], off},
            {ap_bin,                 "ap_*",        debug,   [default_bin], off},
            {ccn_bin,                "ccn*",        debug,   [default_bin], off},
            {oasys_bin,              "oasys*",      debug,   [default_bin], off},
            {snmp_bin,               "snmp*",       debug,   [default_bin], off},
            {http_terminal_cmds_bin, "hc_*",        debug,   [default_bin], off},
            {http_terminal_bin,      "cocon_http*", debug,   [default_bin], off}
            ]},
        {flows, [
            % Text flows
            {default_bin, [{file, "default.log.bin", binary}]},
            {error,       [{file, "error.log"}]},
            {info_bin,    [{file, "info.log.bin", binary}]},
            {journald,    [{journald, default}]},
            {restart,     [{file, "restart.log"}]},
            {rps_alarm,   [{rps_alarm, default}]}
            ]},
        {formats, [
            {default, "%Y-%M-%D %H:%Mi:%S:%Ms %PRIORITY %Pid [%Module:%Line]: %Message\n"},
            {alarm_trace, "%Message\n"}
            ]},
        {active, true},
        {rotate_at_start, true},
        {file_check_timeout, 10000},
        {backend_modules, [
            {rps_alarm, chronica_rps_alarm_backend},
            {journald, chronica_journald_backend}
            ]},
        {internal_logger, [
            {file, "chronica", {101048576, 1}, error},
            {tty, error}
            ]},
        {data_root, "/var/cache/ecss/mediator/chronica/<Node>"},
        {log_root, "/var/log/ecss/mediator/<Node>"},
        {max_file_size, 52428800}, %% 50M per file
        {max_file_num, 10},
        {debug, true},
        {debug_level, 2}
        ]}
Секция SNMP-агента
 % Секция SNMP-агента. Будет использована, если значение snmpAgentEnable выставлено в "true". 
 % В этом случае данная секция обязательна
 {snmp, 
  [
   {agent,
    [
     % Директория хранения служебной информации SNMP-агента
     % Данная директория должны быть предварительно создана
     {db_dir, "/var/lib/ecss/snmp/"}, 

     % Местоположение конфигурационных файлов SNMP-агента
     {config, [{dir, "/etc/ecss/snmp/agent/"}, {force_load, true}, {verbosity, silence}]}, 

     % Рекомендуется не изменять эти параметры
     {priority, normal}, 
     {versions, [v2, v3]}, 
     {mib_storage, {mnesia, []}}, 
     {target_cache, [{verbosity,silence}]}, 
     {symbolic_store, [{verbosity,silence}]}, 
     {local_db, [{repair,true},{auto_save,5000},{verbosity,silence}]}, 
     {error_report_module, snmpa_error_logger}, 
     {agent_type, master}, 
     {agent_verbosity, silence}, 
     {discovery, [{terminating, [{enable, true}, {stage2, discovery}, {trigger_username, ""}]}, {originating, [{enable, true}]}]}, 
     {multi_threaded, false}, 
     {mib_server, [{mibentry_override,false},{trapentry_override,false},{verbosity,silence},{cache,true}]}, 
     {note_store, [{timeout,30000},{verbosity,silence}]}, 
     {net_if, [{module,snmpa_net_if},{verbosity,silence},{options,[{bind_to,true},{no_reuse,false},{req_limit,infinity}]}]}
    ]
   }
  ]
 }
Секция SNMP-менеджера
 % Секция SNMP-менеджера, опциональная. Позволяет задать настройки менеджера "слушателя" SNMP-трапов.
 {snmp, 
  [
    {manager,
      [
          {config, [
                    % Местоположение конфигурационных файлов SNMP-агента
                    {dir, "/etc/ecss/snmp/manager/"},
                    % silence | info | log | debug | trace 
                    {verbosity, silence},
                    % Директория хранения служебной информации SNMP-менеджера
                    % Данная директория должны быть предварительно создана
                    {db_dir, "/var/lib/ecss/snmp/"}
                   ]},
          % Имя модуля-обработчика SNMP-трапов. ВНИМАНИЕ! НЕ МЕНЯТЬ ДАННУЮ НАСТРОЙКУ
          {def_user_mod, snmp_alarm_user}
      ]
    }
  ]
 }

Конфигурирование источника статистической информации

Необходимо сконфигурировать приложение RPS для каждой ноды.

В конфигурации Node.config должны присутствовать следующие секции:

%Секция AMQP-клиента
 {amqp10_client,
  [
   {realms,
    [
     % Строка подключения к брокеру, на котором будет осуществляться обмен информацией между системой Mediator и другими нодами
     {local, "/ssw", "ssw", "ssw", [{localhost, {host, "IP or Hostname of RPS amqp broker"}, 5672, 10}]}
    ]
   }
  ]
 },

 {rps, [
        {realm, local}
       ]}

Пороги использования ресурсов

Опрос значений использования диска и памяти осуществляется раз в минуту.

Включение мониторинга диска:

{rps, [
        {realm, local},
        {thresholds, [{disk, [{enabled, true}]}]} % без указания "points" мониторинг всех смонтированных разделов
]}

Для включения мониторинга только заданных разделов необходимо указать точки монтирования:

{rps, [
        {realm, local},
        {thresholds, [{disk, [
                              {enabled, true},
                              {points, [{"/var/lib/ecss/cdr", {W, M, C}}, 
                                        {"/var/lib/ecss/statistics", {W, M, C}}, 
                                       ]}
                             ]}]}
]}

где

  • W — значение занятости раздела в процентах для порога "warning";
  • M — значение занятости раздела в процентах для порога "major";
  • C — значение занятости раздела в процентах для порога "critical".

Также допускается такой вариант:

{rps, [
        {realm, local},
        {thresholds, [{disk, [
                              {enabled, true},
                              {points, [{"/var/lib/ecss/cdr", {W, M, C}}, 
                                        {"/var/lib/ecss/statistics", {W, M, C}}, 
                                       ]}
                             ]}]}
]}

При этом будут использованы пороги по умолчанию — {80, 95, 98}.

Переопределить пороги по умолчанию можно следующим образом:

{rps, [
        {realm, local},
        {thresholds, [{disk, [
                              {enabled, true},
                              {default, {85, 96, 99}},
                              {points, ["/var/lib/ecss/cdr", 
                                        "/var/lib/ecss/statistics", 
                                       ]}
                             ]}]}
]}

При включенном мониторинге диска посылаются предупреждения на медиатор при достижении порогов.

Мониторинг раздела /var/lib/ecss-mysql включается при положительном ответе на вопрос "Взводить аварию ECSS-10 при заполнении раздела MySQL?" ("Send ECSS-10 alarm in case of MySQL drive is overload?") во время инсталляции пакета ecss-node. При этом в файле /etc/ecss/global.config в секцию rps -> thresholds -> disk -> points автоматически добавляется путь "/var/lib/ecssmysql":

[
...
    {rps, [
        {thresholds, [
            {disk, [{enabled, true},
                    {points, ["/var/lib/ecss-mysql"]}
                   ]},
        {monitoring, [
            %{applications, [%%APPS_MON%%]}
            %{interfaces, [{noAlarmFor, [%%IFACES_MON%%]}]}
            ]}
        ]}
...

Разрешение на использование портов < 1024 для erlang-процессов

Чтобы подсистема SNMP могла получать/отправлять трапы по портам 161/162 необходимо добавить соответствующие права на файл beam.smp следующим образом:

  1. Установить утилиту setcap командой из консоли ОС Linux:

    sudo aptitude install libcap2-bin
  2. Задать права на файл beam.smp командой из консоли ОС Linux:

     sudo setcap cap_net_bind_service=+ep /usr/lib/erlang/erts-6.4.1.2/bin/beam.smp
     sudo setcap cap_net_bind_service=+ep /usr/lib/erlang/erts-6.4.1.2/bin/beam

    где
    "/usr/lib/erlang/erts-6.4.1.2/bin/" — путь, по которому располагается файл beam.smp.

Конфигурирование SNMP-агента

  1. Создать папку по пути, указанному в настройках SNMP-агента — параметр "db_dir".
  2. В случае использования портов < 1024 необходимо добавить разрешение на файл beam.smp (Конфигурирование).
  3. Раскоментировать секции "agent" в секции SNMP в настройках кластера mediator.
  4. Создать файл по пути: /etc/ecss/snmp/agent/agent.conf

    % Порт, который будет слушать SNMP-агент и на который ему будут приходить SNMP-трапы.
    % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2.
    {intAgentUDPPort, 161}.
    % IP-адрес, на котором будет открыт порт для слушания SNMP-трапов.
    {intAgentIpAddress, [0,0,0,0]}.
    % Уникальный текстовый идентификатор SNMP-агента. Не изменять.
    {snmpEngineID, "ECSS-10-SNMP-Agent"}.
    % Максимальная длина SNMP-сообщения (в октетах), которые SNMP-агент может получать/отправлять.
    {snmpEngineMaxMessageSize, 484}.
  5. Создать файл по пути: /etc/ecss/snmp/agent/community.conf.

    % community нужны для обеспечения аутентификации, проверки прав доступа при взаимодействии SNMP-агента и менеджера.
    % Первым параметром идет уникальный идентификатор community. Вторым - человеко-читабельное имя. Третьим - secret-key для данного community.
    {"public", "public", "initial", "", ""}.
    {"all-rights", "all-rights", "all-rights", "", ""}.
    {"standard trap", "standard trap", "initial", "", ""}.
  6. Создать файл по пути: /etc/ecss/snmp/agent/context.conf.

    %% The default context
    "".
  7. Создать файл по пути: /etc/ecss/snmp/agent/notify.conf.

    {"standard trap", "std_trap", trap}.
  8. Создать файл по пути: /etc/ecss/snmp/agent/standard.conf.

    % Имя SNMP-агента. Не изменять
    {sysDescr, "Eltex ECSS SNMP agent"}.
    % Корневой OID для всех SNMP-трапов системы ECSS-10
    {sysObjectID, [1, 3, 6, 1, 4, 1, 35265, 2, 10]}.
    % Контакт человека, отвечающего за управление данной нодой. НЕОБХОДИМО УКАЗАТЬ EMAIL сервис-центра.
    {sysContact, "techsupp@eltex.nsk.ru"}.
    % Физическое расположение данной ноды.
    {sysLocation, "naomi.eltex.loc"}.
    % Идентификатор для группы сервисов, предоставляемых ECSS-10. НЕ ИЗМЕНЯТЬ.
    {sysServices, 72}.
    % Флаг, показывающий, разрешено или нет SNMP генерировать authenticationFailure-трапы.
    {snmpEnableAuthenTraps, enabled}.
    % Административное имя данной ноды. Но по соглашению принято в качестве sysName выставлять полное доменное имя данной ноды.
    {sysName, "ECSS-10 Agent"}.
    Отдельное замечание для интеграции с EMS. Значение поля "sysName" должно совпадать с именем узла в дереве объектов. Иначе значение поле "hostname" в описании узла будет считаться ошибочным (но на работу это никак не влияет).
  9. Создать файл по пути: /etc/ecss/snmp/agent/target_addr.conf.

    % В данной конфигурации указана транспортная информация, куда необходимо пересылать трапы
    % {TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.
    % TargetName - уникальное имя для направления отправки трапов
    % Ip, Udp - адрес и порт для отправки трапа
    % Timeout - тайм-аут на доставку сообщения
    % RetryCount - количество повторных посылок сообщения
    % TagList - имя тега, указанного в notify.conf
    % EngineId - имя target-а, который будет указан в target_params.conf
    {"Eltex EMS v2", [172,16,0,22], 162, 1500, 3, "std_trap", "target_v2", "", [], 2048}.
  10. Создать файл по пути: /etc/ecss/snmp/agent/target_params.conf.

    % Each row is a 5-tuple:
    % {Name, MPModel, SecurityModel, SecurityName, SecurityLevel}.
    % Name - имя target-а, который используется в target_addr.conf
    % MPModel - v1, v2c или v3
    % SecurityModel - v1, v2c, или usm
    % SecurityName - имя группы доступа в View-based Access Control Model (VACM)
    % SecurityLevel - noAuthNoPriv, authNoPriv или authPriv.
    {"target_v2", v2c, v2c, "initial", noAuthNoPriv}.


  11. Создать файл по пути: /etc/ecss/snmp/agent/vacm.conf.

    % В данной конфигурации описаны параметры, необходимые для авторизации SNMP-запросов
    {vacmSecurityToGroup, v2c, "initial", "initial"}.
    {vacmSecurityToGroup, v2c, "all-rights", "all-rights"}.
    {vacmAccess, "initial", "", any, noAuthNoPriv, exact, "restricted", "", "restricted"}.
    {vacmAccess, "initial", "", usm, authNoPriv, exact, "internet", "internet", "internet"}.
    {vacmAccess, "initial", "", usm, authPriv, exact, "internet", "internet", "internet"}.
    {vacmAccess, "all-rights", "", any, noAuthNoPriv, exact, "internet", "internet", "internet"}.
    {vacmViewTreeFamily, "restricted", [1,3,6,1], included, null}.
    {vacmViewTreeFamily, "internet", [1,3,6,1], included, null}.
  12. Создать пустой файл по пути: /etc/ecss/snmp/agent/usm.conf.

Конфигурирование SNMP-менеджера

Для работы SNMP-менеджера требуется запуск SNMP-агента.
  1. Создать папку по пути, указанному в настройках SNMP-менеджера — параметр "db_dir".
  2. Если используются порты < 1024, необходимо добавить разрешение на файл beam.smp (Конфигурирование).
  3. Раcкоментировать секции "agent", "manager" в секции SNMP в настройках кластера Mediator.
  4. Создать файл по пути: /etc/ecss/snmp/manager/manager.conf.

    % IP-адрес, на котором будет открыт порт для слушания/отправки SNMP-трапов.
    {address,          [0,0,0,0]}.
    % Порт, с которого SNMP-менеджер будет отправлять SNMP-трапы.
    % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2.
    {port,             162}.
    % Уникальный текстовый идентификатор SNMP-менеджера. Не изменять.
    {engine_id,        "ECSS-10-SNMP-Manager"}.
    % Максимальная длина SNMP-сообщения (в октетах), которые SNMP-агент может получать/отправлять.
    {max_message_size, 484}.
  5. Создать файл по пути: /etc/ecss/snmp/manager/agents.conf.
    В данном файлы указаны разрешения для агентов, которых использует менеджер.

    % Первый параметр указывает ID-агента, для которого задаются настройки. Его в дальнейшем будут использовать в файле users.conf.
    % Четвертый параметр - IP-адрес, с которого будут отправляться/приниматься трапы.
    % Пятый параметр - порт, с которого будут отправляться/приниматься трапы.
    % ВНИМАНИЕ! Если номер порта < 1024, необходимо выполнить пункт 2.
    {"ecss_mediator", "md", "public", [192,168,23,34], 161, "", 1500, 484, v2, any, "initial", noAuthNoPriv}.
  6. Создать файл по пути: /etc/ecss/snmp/manager/users.conf.

    % Первый параметр указывает ID-агента (из файла agents.conf), с которого будут приходить трапы.
    % Второй параметр - имя модуля, который данные трапы будет обрабатывать. Не изменять.
    % Третий параметр - аргументы инициализации модуля snmp_alarm_user. Не изменять.
    {"ecss_mediator", snmp_alarm_user, undefined}.

Настройка параметров адаптера MEGACO

Настройки адаптера MEGACO производятся на уровне виртуальных АТС.

Для изменения параметров воспользуемся командой:

domain/<DOMAIN>/megaco/config/set
где

  • <DOMAIN> — имя виртуальной АТС.

При необходимости можно изменить следующие параметры:

  • bind_to — IP-адрес сетевого интерфейса, который будет использован для протокола MEGACO;
  • enabled — использование MEGACO-адаптера;
  • encoding — способ кодирования сообщений MEGACO;
  • fax_detect — выбор стороны детектирования факса;
  • listen_port — порт для приема MEGACO-сообщений;
  • pkg_adid_dt
  • send_release_ack
  • transport — выбор транспортного протокола UDP, TCP;
  • use_rtcp — использования RTCP для контроля передачи RTP-трафика.

Настройка параметров LDAP

В данном разделе описывается настройка параметров LDAP-соединения. Используя нижеописанную команду set, приведите настройки LDAP вашей системы к следующему виду:

------------------------------------------------------------------------
|  Parameter   |            Definition             |       Value       |
|--------------+-----------------------------------+-------------------|
| ip           | LDAP server IP                    | ip_address        |
| port         | LDAP server port                  | 389               |
| access.path  | Path to registration domains      | ou=pa_sip,dc=ecss |
| access.login | Login for access for this path    | cn=admin,dc=ecss  |
| access.passw | Password for access to this path  | password          |
| attr.domain  | Attribute for registration domain | dc                |
| attr.phone   | Attribute for phone number        | telephoneNumber   |
| attr.login   | Attribute for users login         | cn                |
| attr.passw   | Attribute for password            | description       |
------------------------------------------------------------------------
  • ip_address — IP-адрес LDAP-сервера на первой ноде;
  • password — пароль для доступа к LDAP-серверу, задаётся при установке slapd.

Абсолютный путь команды:

domain/<DOMAIN>/sip/ldap/set

Описание:

Команда установки значения параметров соединения с сервером LDAP.

Синтаксис:

set <KEY> <VALUE>

Параметры:

<KEY> – настраиваемый параметр, принимает значения:

  • access.login – атрибут, хранящий имя пользователя;
  • access.passw – пароль доступа к данным по назначенному пути;
  • access.path – путь доступа, который назначается кластеру для хранения/получения информации по авторизации абонента;
  • attr.domain – атрибут, хранящий домены регистрации;
  • attr.login – атрибут, хранящий логин пользователя;
  • attr.passw – атрибут, хранящий пароль пользователя;
  • attr.phone – атрибут, хранящий телефонный номер авторизующегося абонента;
  • ip – IP-адрес LDAP-сервера;
  • port – порт LDAP-сервера;

<VALUE> — значение параметра.

Пример:

Установить IP-адрес LDAP-сервера 192.168.23.23:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set ip 192.168.18.111 
Executed on the pa_sip1@leonid1
[{old,"192.168.18.111"},{new,"192.168.18.111"}]

Установить порт LDAP-сервера 389:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set port 389
Executed on the pa_sip1@leonid1
[{old,"389"},{new,"389"}]

Установить путь доступа для хранения/получения информации по авторизации абонента «pa_sip»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set access.path ou=sip1,dc=ecss 
Executed on the pa_sip1@leonid1
[{old,"ou=pa_sip,dc=ecss"},{new,"ou=sip1,dc=ecss"}]

Установить имя пользователя «admin»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set access.login cn=admin,dc=ecss 
Executed on the pa_sip1@leonid1
[{old,"cn=admin,dc=ecss"},{new,"cn=admin,dc=ecss"}]

Установить пароль для доступа к данным «admin»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set access.passw admin 
Executed on the pa_sip1@leonid1
[{old,"admin"},{new,"admin"}]

Установить домен регистрации «dc»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set attr.domain dc 
Executed on the pa_sip1@leonid1
[{old,"dc"},{new,"dc"}]

Установить телефонный номер, авторизующегося абонента «telephoneNumber»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set attr.phone telephoneNumber 
Executed on the pa_sip1@leonid1
[{old,"telephoneNumber"},{new,"telephoneNumber"}]

Установить логин пользователя «cn»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set attr.login cn
Executed on the pa_sip1@leonid1
[{old,"cn"},{new,"cn"}]

Установить пароль пользователя «description»:

ecss-root@[md1@leonid1]:/# domain/<DOMAIN>/sip/ldap/set attr.passw description 
Executed on the pa_sip1@leonid1
[{old,"description"},{new,"description"}]

Ручная синхронизация алиасов с LDAP сервером

Для начала нужно настроить сервер ldap командой

domain/<domain>/ldap/declare
CODE

Далее нужно настроить сервер для синхронизации (нужно если синхронизация будет происходить по времени):

domain/<domain>/ldap/sync/properties/set server
CODE

Также нужно настроить параметр, по которому будет производиться поиск в ldap

domain/<domain>/ldap/sync/properties/set search_parameter
CODE

Опциональной можно настроить правила того, каким образом должны параметры ldap копироваться в параметры ssw:

domain/<domain>/ldap/sync/properties/set ldap_to_alias_settings_map <ldapParam> <sswParam> <Type> 

Type :: atom | binary | integer | string | term 
CODE

Для синхронизации нужно выполнить команду:

domain/<domain>/ldap/sync/force <ldap_server> <address_range>
CODE

Ошибка Alias with address <address> not found говорит о том, что в ldap нет ни одной записи, searchParam которой был бы равен используя <address>.

Настройка таймеров очистки временного каталога приема факсов

Для промежуточного сохранения файлов факсов при работе услуги "Fax to Email" используется директория /var/spool/ecss/ecss-media-server/. В штатном режиме после приема и сохранения на http-сервере файл из данного каталога удаляется. Если по каким-либо причинам сохранение на http-сервер не удалось(например, обрыв вызова во время приема файла), то файл остается во временном каталоге. По умолчанию время хранения — 180 дней или при превышении размера каталога сверх значения, указанного в конфигурационном файле медиа-сервера.

Механизм автоматической очистки реализован реализован на базе системного сервиса incrond. Все файлы, попадающие в /var/spool/ecss/ecss-media-server будут удаляться по истечении времени, установленного в ecss-media-server.conf.

Пример установленного значения:

sasha@ecss1:~$ cat /usr/lib/tmpfiles.d/ecss-media-server.conf 
#Type Path        Mode UID  GID  Age Argument
d    /var/spool/ecss/ecss-media-server   0755 ssw ssw 180d -

После изменения времени хранения необходимо перечитать настройки systemd:

sudo systemctl daemon-reload

Настройка периодичности мониторинга находится в файле systemd-tmpfiles-clean.timer. Для изменения периода мониторинга нужно воспользоваться командой:

sudo systemctl edit systemd-tmpfiles-clean.timer

Прописать секцию новых настроек таймеров, например:

[Timer]
OnBootSec=5min
OnUnitActiveSec=1h

где

  • OnBootSec=5min — проверка файлов через 5 минут после старта сервиса
  • OnUnitActiveSec=1h — далее проверять каждый час.

Просмотр получившихся настроек:

sasha@ecss1:/var/spool/ecss/ecss-media-server$ sudo systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

# /etc/systemd/system/systemd-tmpfiles-clean.timer.d/override.conf
[Timer]
OnBootSec=5min
OnUnitActiveSec=ih

Журнал работы сервиса можно также просмотреть системными инструментами, например:

sasha@ecss1:/var/spool/ecss$ journalctl -u systemd-tmpfiles-clean -n 4 -x
-- Logs begin at Thu 2019-04-25 09:07:49 +07, end at Mon 2019-06-24 17:32:38 +07. --
июн 24 16:22:02 ecss1 systemd[1]: Starting Cleanup of Temporary Directories...
-- Subject: Начинается запуск юнита systemd-tmpfiles-clean.service
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Начат процесс запуска юнита systemd-tmpfiles-clean.service.
июн 24 16:22:02 ecss1 systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: Запуск юнита systemd-tmpfiles-clean.service завершен
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Процесс запуска юнита systemd-tmpfiles-clean.service был завершен.
-- 
-- Результат: RESULT.
июн 24 17:22:03 ecss1 systemd[1]: Starting Cleanup of Temporary Directories...
-- Subject: Начинается запуск юнита systemd-tmpfiles-clean.service
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Начат процесс запуска юнита systemd-tmpfiles-clean.service.
июн 24 17:22:03 ecss1 systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: Запуск юнита systemd-tmpfiles-clean.service завершен
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Процесс запуска юнита systemd-tmpfiles-clean.service был завершен.
-- 
-- Результат: RESULT.

Таймеры контроля размера каталога /var/spool/ecss/ecss-media-server задаются сервисом ecss-media-server-cleaner, который запускает скрипт

/usr/lib/ecss/ecss-media-server/cleaner

Если размер превышает установленный в /etc/ecss/ecss-media-server/config.xml, параметр

spool-dir-size="100M" 

Происходит удаление старых файлов до достижения разрешенного размера каталога.

Настройка IPv6 на системных интерфейсах

Описание

На уровне системы реализована поддержка протокола IPv6 для ряда системных интерфейсов.
Для работы системных интерфейсов требуется использовать глобальные IPv6 адреса. При использовании локальных адресов системные интерфейсы работать не будут.

Для использования IPv6 используется следующий формат:

[ip]:port

Перед тем как присваивать ipv6 адрес на интерфейс командой

sudo ifconfig Имя_Интерфейса inet6 add Адрес_IPv6

Требуется включить возможность назначения IPv6 адреса на интерфейс. Для это следует в файле /proc/sys/net/ipv6/conf/Имя_Интерфейса/disable_ipv6 изменить значение с 1 на 0.
После чего перезагрузить сервис systemd-networkd.

Системный сервис cocon_exec

Данный сервис позволяет выполнять команды Cocon не подключаясь к нему, для этого используется следующий формат:

ccnexec -u *login* -p *password* [*IPv6*]:*port* -c *comand*

где

  • login — логин для подключения к Cocon;
  • password — пароль для подключения к Cocon;
  • IPv6 — IP адрес версии 6 для подключения к Cocon;
  • port — порт для подключения к Cocon;
  • comand — команда передаваемая в Cocon.

Системный сервис ssh

Для подключения к удаленному терминалу имеется возможность использовать IPv6, например для подключения к Cocon.

ssh *login*@2*IPv6* -p *port*

где

  • login — логин для подключения к удаленному терминалу;
  • password — пароль для подключения к удаленному терминалу;
  • port — порт для подключения к удаленному терминалу.

Системный сервис HTTP Terminal

Для подключения к системному терминалу через IPv6 требуется настроить IP. Для этого требуется ввести:

cluster/mediator/md1/properties/cocon_http_terminal/set md1@ecss1 http_server_listen_iface *IPv6*

где

  • IPv6 — IPv6 адрес, на который требуется заходить для подключения к WEB.

Системный сервис Chronica

Для системы логирования в поле {udp, {"ipaddr", 514} можно вводить IPv6 адрес.

Системный сервис Restfs

Для включения IPv6 следует добавить /usr/lib/ecss/ecss-restfs/nginx/ecss-restfs-core:

server {
    ….
    listen [Ip]:Port;
    …..
}

Перезагрузить nginx:

service nginx restart

Перезагрузить ecss-restfs:

systemctl restart ecss-restfs-core.service

Добавить сервер:

restfs/declare ip6 http://[Ip]:Port;

Проверить статус серверов:

restfs/list

Системный сервис Custom_callback

Пример http запроса:

curl -G -d "number=1010&time=1&attempts=1&timeout=10000" http://[::1]:8086/test.ats/service/custom_cb/4b4fdc08e490b7c2-verbose

Системный сервис Mycelium

Для использования IPv6 в Mycelium нужно в /etc/ecss/ecss-mycelium/mycelium1.config изменить bind_ip_addresses для mycelium_broker. IP задается в виде восьмизначного тапла:

{0,0,0,0,0,0,0,1} — localhost.

Т.е каждый октет требуется перевести из 16-ти разрядной системы в 10-ти разрядную.
Чтобы ноды подключались к выставленному IP нужно в конфигурационном файле каждого приложения настроить mycelium_client. Например:

В /etc/ecss/ecss-ds/ds.1config для mycelium_client изменить поле host.

Системный сервис Mysql

Для открытия соединения IPv6 следует в конфигурационный файл /etc/mysql/mysql.conf.d/mysqld.cnf определить поле:

bind-address = ::1

Перезапустить сервис:

systemctl restart mysql

Сейчас все базы данных определены только для IPv4 адресов. Чтобы подключиться к БД необходимо добавить пользователей для IPv6 адресов.

GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'::1' IDENTIFIED BY 'password';

Системный сервис RADIUS

Чтобы открыть соединение для радиус сервера на IPv6 в /etc/freeradius/radiusd.conf (при использовании freeradius) в секции listen необходимо закомментировать ipaddr и добавить ipv6addr = :: (или любой другой IPv6 адрес). Использовать IPv4 и IPv6 одновременно нельзя.

Добавить клиента в /etc/freeradius/cilents.conf. 
Например:

client 2001:db8:0:f101::/64 {
secret          = secret123
shortname       = localhost
}

Перезагрузить сервис:

service freeradius restart

Определить account сервер. Пример: 

domain/test.ats/aaa/radius/declare account_server6 ::1 account secret123 retry-count = 3, retry-timeout = 250, ip-family = inet6

Определить access сервер. Пример: 

domain/test.ats/aaa/radius/declare access_server6 ::1 access secret123 retry-count = 3, retry-timeout = 250, ip-family = inet6

Опция ip-family используется для разделения типа IP-адреса. Может принимать значение inet6 или inet. Для подключения по IPv6 является обязательной.

Так же для каждого уже созданного сервера можно установить опцию ip-family командой:

domain/test.ats/aaa/radius/set account_server ip-family = inet6

Добавить radius сервера: 

domain/test.ats/aaa/accounting/set servers add account_server6
domain/test.ats/aaa/access/set servers add access_server6

Включить использование radius:

domain/test.ats/aaa/accounting/set enable true
domain/test.ats/aaa/access/set enable true

Запуск доменов отдельными "пачками"

При большом количестве доменов(>200) рекомендуется в конфигурации изменить параметры, чтобы не все домены стартовали сразу одновременно.

Есть опция запуска трайк неймспейсов (доменов) пачками. Размер пачки задается в конфигурации ядра /etc/ecss/ecss-core/core1.config, параметр chunk_size, по умолчанию 1. Рекомендуется выставлять не слишком большой размер пачек, например 30.

{trike_core, [
  {chunk_size, 1},
CODE