В результате выполнения шагов из данного руководства ожидается, что:
Архитектура DION предусматривает возможность переноса части компонентов, отвечающих за обработку медиа-трафика, на площадку организации. Такие компоненты называются гибридными узлами. Наличие гибридных узлов позволяет проводить конференции в защищенном контуре, не передавая медиа-трафик в облако DION. В гибридном сценарии связь гибридных узлов с облаком DION является обязательным условием для работы конференций, так как в облако передаются сигнальная информация и управляющие команды.
Все гибридные компоненты, доступные к установке, можно разделить на три группы по функциональному назначению:
Установка и настройка узлов из первых двух групп описаны в отдельном руководстве по установке. Данное руководство описывает установку и настройку узлов, отвечающих за проведение SIP-звонков внутри контура безопасности компании.
Если компоненты SIP не развернуты в гибридном варианте, как описано в данном руководстве, все SIP-звонки, включая звонки с устройств, расположенных в контуре компании, проходят через облако. При этом медиа-трафик от SIP-устройств не шифруется. Этот вариант полностью поддерживается со стороны DION, но не всегда удовлетворяет требованиям информационной безопасности.
При наличии гибридных узлов SIP-трафик звонков в "гибридные конференции" замыкается внутри контура безопасности компании. Трафик в сторону "облачных конференций" DION передается в защищённом канале по протоколу SRTP, что исключает угрозу перехвата трафика.
Кроме того, наличие гибридного SIP позволяет совершать вызовы в "облачные конференции" DION даже при отсутствии в SIP-инфраструктуре компании элемента, выполняющего роль SBC (Session Border Controller), либо устройства NAT с поддержкой SIP ALG.
При наличии гибридных SIP-узлов внутри контура компании звонки с собственных SIP-устройств компании всегда терминируются на гибридом SIP Server.
Если звонок был выполнен в собственную "гибридную конференцию", SIP Server взаимодействует с собственными гибридными медиа-серверами компании по протоколу SRTP и подключает абонента к конференции.
Если звонок адресован в "облачную конференцию" DION, SIP Server перенаправляет трафик на облачные TURN-серверы DION, а в случае звонка в "гибридную конференцию", проводимую на стороне другой организации, на TURN-серверы, принадлежащие этой организации.
Установка локальных медиа-серверов и TURN не является обязательной. SIP-компоненты могут быть использованы исключительно для звонков в облако.
DION Proxy выполняет служебные функции и обязателен для установки.
Описание компонентов:
Наименование компонентна | Описание компонента |
---|---|
MEDIA (SFU + Audiohub) | Компонент, отвечающий за обработку аудио и видео-потоков в гибридных конференциях. Установка не описана в данном документе. См. основную инструкцию. |
SIP Server, SIP Transcoder, SIP Translator | Компоненты, отвечающие за прием SIP-вызова и преобразование медиа-трафика в формат, необходимый для участия в конференции WebRTC, и обратно в формат, совместимый с SIP-устройствами. |
TURN | Компонент, отвечающий за подключение внешних пользователей ко внутренним медиа-серверам через NAT. Установка не описана в данном документе. См. основную инструкцию. |
Dion Proxy | Компонент, отвечающий за обнаружение гибридных узлов облаком DION и передачу управляющих команд. Установка не описана в данном документе. См. основную инструкцию. |
Компоненты могут быть дублированы с целью обеспечения отказоустойчивости и масштабирования.
Прежде, чем перейти к установке и конфигурированию SIP, выполните следующие действия:
Скачайте образы в виде deb- (или rpm-) пакетов и образов контейнеров в следующем составе:
SIP Server и SIP Transcoder:
SIP Translator:
Запросите в службе поддержки пользователей (support@diongo.ru) сертификаты, выпущенные для вашей организации.
Запрос должен быть отправлен с почтового адреса пользователя, зарегистрированного в DION с ролью Администратор организации.
Вам должны быть предоставлены следующие файлы:
ID организации можно также посмотреть и скопировать в административной панели DION.
Для корректной работы SIP-модуля необходима версия dion-proxy не ниже 5.15.
Проверьте установленную версию dion-proxy, используя команду:
apt list --installed | grep dion
Если установлена версия ниже 5.15, выполните следующие действия:
Скачайте версию не ниже 5.15. См. основную инструкцию.
Выполните последовательность команд:
mv /etc/dion/proxy.yaml /etc/dion/proxy.yaml1
apt purge dion-proxy
apt install /путь к файлу dion-proxy-5.15.x.deb
mv /etc/dion/proxy.yaml1 /etc/dion/proxy.yaml
systemctl restart dion-proxy
Примеры в данном разделе приведены для ОС Ubuntu.
Если в процессе установки и конфигурации возникнут ошибки, рекомендуем воспользоваться руководством по устранению неисправностей в гибридном DION.
Для редактирования конфигурационных файлов и перезапуска сервисов вам потребуются root-права.
При недостатке прав используйте sudo перед каждой командой или введите sudo su один раз в начале работы.
Если в системе несколько экземпляров гибридных узлов, настройки нужно выполнить на каждом экземпляре.
Мы рекомендуем устанавливать SIP Server и SIP Transcoder на одну машину.
Чтобы установить и сконфигурировать сервисы SIP Server и SIP Transcoder, выполните следующие действия:
Перенесите на соответствующий сервер/виртуальную машину:
Установите пакет ffmpeg:
sudo apt install ffmpeg
Установите зависимости для пакета dion-sip-transcoder в соответствии с ОС:
apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
yum install gstreamer.x86_64 gstreamer-plugins-base.x86_64 gstreamer1-plugins-good.x86_64 gstreamer1-plugins-bad-free.x86_64 gstreamer1-plugins-ugly.x86_64 gstreamer1-libav.x86_64
dnf install gstreamer1.x86_64 gstreamer1-libav.x86_64 gstreamer1-plugins-bad-free.x86_64 gstreamer1-plugins-base.x86_64 gstreamer1-plugins-good.x86_64 gstreamer1-plugins-ugly.x86_64 gstreamer1-plugins-ugly-free.x86_64 gstreamer-tools.x86_64
Установите deb-пакеты:
a. Выполните обновление репозиториев:
sudo apt update
sudo apt upgrade
b. Запустите установку пакета с помощью менеджера пакетов, например apt:
sudo apt install -f {путь к файлу}
Опция -f в команде установщика важна для установки необходимых пакету зависимостей.
Выполните конфигурирование сервисов SIP Server и SIP Transcoder.
В CLI откройте на редактирование конфигурационный файл /app/dion/sipserver/sipserver.yml:
sudo nano /app/dion/sipserver/sipserver.yml
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте инструкции и комментариям ниже.
При редактировании файла очень важно сохранить исходные отступы! Меняйте значения переменных, только если это в явном виде требуется в комментариях.
В секциях sip
, grpc
и http
впишите в переменные, согласно комментариям, локальный адрес данного экземпляра sip-server в кавычках (например, 192.168.1.12):
clientHost: "192.168.1.12"
Cекции apiGrpcClient
и mk
служат для указания адреса шлюза dion-proxy в контуре. Необходимо четко соблюдать отступы в документе, для создания отступов используются пробелы.
Укажите адреса всех узлов данной площадки dion-proxy в кавычках в виде списка. Для каждого адреса укажите порт 9764 через двоеточие. Если адресов несколько, добавьте новую строку для каждого нового адреса.
Пример заполнения секций gwAddress
и mkAdresses
:
- "192.168.0.1:9764"
- "192.168.0.2:9764"
- "192.168.0.3:9764"
Перейдите в секцию outgoingCalls
.
По умолчанию исходящие звонки на номера городской телефонной сети из конференций DION проходят через облако DION и производятся с телефонного номера, принадлежащего DION. Изменив конфигурацию в данной секции, можно перенаправить исходящие звонки через телефонную станцию организации.
Если вы планируете использовать облако DION для таких исходящих звонков, не меняйте значение переменной callsEnabled
.
Чтобы исходящие звонки проходили через вашу телефонную станцию, измените значение callsEnabled
на true
:
callsEnabled: true
Также внесите изменения в конфигурационный файл organizations.yml. Инструкции по заполнению см. ниже.
Перейдите в секцию organizations
:
a. Укажите ID вашей организации без кавычек вместо нулей. Пример заполнения секции:
organizations:
- 000000056-0000-0045-Afrd-00000000rft45
b. Укажите ID вашей организации в переменной organization
:
organization: 000000056-0000-0045-Afrd-00000000rft45
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перезапустите сервис:
systemctl restart dion-sipserver
Для перенаправления исходящих звонков из конференций DION через телефонную станцию вашей организации используется файл organizations.yml. По умолчанию исходящие звонки из конференций DION на телефонные номера городской сети проходят через облако DION и производятся с телефонного номера, принадлежащего DION.
Если требуется настроить перенаправление исходящих звонков на локальную АТС, следуйте инструкциям ниже.
Если перенаправление исходящих звонков на локальную АТС не требуется, не выполняйте действия в этой секции и не меняйте ничего в файле organizations.yml.
Маршрутизация звонков осуществляется по группам пользователей. Например, звонки от группы А могут быть направлены на АТС А, а звонки от группы Б — на АТС Б.
Чтобы использовать перенаправление звонков, необходимо создать как минимум одну группу пользователей в административной панели DION:
Перейдите в браузере в административную панель DION.
Перейдите в раздел Группы пользователей.
Создайте группу пользователей и добавьте в неё необходимых пользователей.
Скопируйте ID группы. Для этого необходимо перейти в настройки конкретной группы и скопировать адрес из адресной строки браузера. Например в ссылке:
https://admin.dion.vc/user-groups/914509be-f02b-4000-9000-bc2211276000/settings
ID — 914509be-f02b-4000-9000-bc2211276000
Откройте на редактирование файл /app/dion/sipserver/organizations.yml:
nano /app/dion/sipserver/organizations.yml
Следуйте комментариям в тексте файла. Вам необходимо аккуратно раскомментировать указанные строки и вписать в них значения для вашей организации.
Чтобы раскомментировать строку, удалите символ
#
в начале строки, но не удаляйте пробелы! Пробелы составляют отступы, которые необходимо сохранить для корректной работы. Каждый уровень отступа отличается от предыдущего на два пробела.
В результате должна получиться секция следующего вида:
120000ab-cd30-4560-ef7g-0000000008hi: #ID вашей организации
1123-abc1-3451111ef: #ID группы пользователей
phoneNumber: "4952223333" #номер телефона, который будет подставлен в поле FROM для звонка на АТС
outgoingTrunks:
- "192.168.0.1" #адрес удаленной стороны для построения SIP Trunk (адрес АТС)
- "192.168.0.2" #второй адрес удаленной стороны для построения SIP Trunk (адрес АТС), опционально
# раскомментируйте секцию ниже и не меняйте ничего в ней
sdpTemplate:
bandwidth:
type: "AS"
value: 64
media:
- type: "audio"
proto: "RTP/AVP"
bandwidth:
type: "TIAS"
value: 64000
mode: "sendrecv"
format:
- payload: 111
- payload: 9
- payload: 0
- payload: 8
- payload: 101
#Для каждой следующей группы пользователей добавляем новую секцию, начиная с ID группы
2223-abc1-3451111ef: #ID второй группы пользователей
phoneNumber: "4952224444" #номер телефона, который будет подставлен в поле FROM для звонка на АТС
outgoingTrunks:
- "192.168.0.3" #адрес удаленной стороны для построения SIP Trunk (адрес АТС)
- "192.168.0.4" #второй адрес удаленной стороны для построения SIP Trunk (адрес АТС), опционально
# раскомментируйте секцию ниже и не меняйте ничего в ней
sdpTemplate:
bandwidth:
type: "AS"
value: 64
media:
- type: "audio"
proto: "RTP/AVP"
bandwidth:
type: "TIAS"
value: 64000
mode: "sendrecv"
format:
- payload: 111
- payload: 9
- payload: 0
- payload: 8
- payload: 101
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перезапустите сервис:
systemctl restart dion-sipserver
При установке системы на RedOS или другие системы, где есть сложности с установкой актуальной версии пакета gstreamer, необходимо изменить файл Utenants.yml следующим образом:
Неверная версия пакета приводит к недоступности входящего потока контента в сторону SIP-устройства.
nano /app/dion/sipserver/tenants.yml
sipendpoints
и поменяйте значение переменной dualVideo
на false
:tenants:
- name: "default"
domain: "default"
ipaddresses: []
sipendpoints:
- name: "default"
model: "default"
dualVideo: false
При такой настройке входящий контент на SIP-терминал передается в одном канале с видео.
В CLI откройте на редактирование файл /app/dion/siptranscoder/siptranscoder.env:
nano /app/dion/siptranscoder/siptranscoder.env
Для переменной NET_INTERFACE_NAME
укажите имя активного сетевого интерфейса вашего сервера, например: eth0
. Чтобы узнать имя интерфейса, используйте команду ip link.
NET_INTERFACE_NAME=eth0
Перечислите адреса узлов Dion Proxy данной площадки в переменной MK_GW_ADDRESSES
. Укажите порт 9764 через двоеточие для каждого адреса:
MK_GW_ADDRESSES=192.168.0.1:9764,192.168.0.2:9764
Для переменной ORGANIZATION
укажите ID вашей организации без кавычек. Его можно взять в файле org_id.txt, который вы получили вместе с образами.
ORGANIZATION=a2ae8888-b888-4efe-eaee-cf865535555
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перезапустите сервис:
systemctl restart dion-siptranscoder
Мы рекомендуем устанавливать SIP Translator на отдельную машину.
На машине предварительно должен быть установлен Docker. Для установки рекомендуем воспользоваться официальной инструкцией.
Чтобы установить и сконфигурировать сервис SIP Translator, выполните следующие действия:
Перенесите на соответствующий сервер/виртуальную машину:
Установите пакет ffmpeg:
sudo apt install ffmpeg
Установите deb-пакет:
a. Выполните обновление репозиториев:
sudo apt update
sudo apt upgrade
b. Запустите установку пакета с помощью менеджера пакетов, например apt:
sudo apt install -f {путь к файлу}
Загрузите образ контейнера vscreen_transcoder.tar в Docker.
sudo docker load -i {путь к образу vscreen_transcoder.tar}
Выполните проверку:
docker image ls
Поскольку служба SIP Translator запускается от имени пользователя dion, для возможности запуска контейнера vscreen_transcoder добавьте пользователя в группу docker:
sudo usermod -aG docker dion
В CLI откройте на редактирование файл /app/dion/siptranslator/siptranslator.env:
nano /app/dion/siptranslator/siptranslator.env
Для переменной NET_INTERFACE_NAME
укажите имя активного сетевого интерфейса вашего сервера, например: eth0
. Чтобы узнать имя интерфейса, используйте команду ip link.
NET_INTERFACE_NAME=eth0
Для переменной SIPTRANSLATOR_HOST
укажите локальный адрес данного узла SIP Translator:
SIPTRANSLATOR_HOST=192.168.0.7
В переменных MK_GW_ADDRESSES
и CAPI_GW_ADDRESSES
перечислите адреса узлов Dion Proxy. Укажите порт 9764 через двоеточие для каждого адреса:
MK_GW_ADDRESSES=192.168.0.1:9764,192.168.0.2:9764
В переменной TRANSCODER_CONTAINER_NAME
укажите актуальные имя и версию контейнера `vscreen_transcoder, установленного на данном хосте.
Проверить версию и написание имени можно, выполнив команду docker image ls. Версия должна быть указана через двоеточие. С выходами новых патчей для контейнера, последняя цифра версии может меняться, например 5-22-0 и 5-22-1, и, при проверке значения переменной, стоит проверить какая версия контейнера была установлена вами. Например:
TRANSCODER_CONTAINER_NAME=git-registry.service.t1-cloud.ru/vc/vscreen_transcoder/vscreen_transcoder_prod:5-22-0
Для переменной ORGANIZATION
укажите ID вашей организации без кавычек. Его можно взять в файле org_id.txt, который вы получили вместе с образами.
ORGANIZATION=a2ae8888-b888-4efe-eaee-cf865535555
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перезапустите сервис:
systemctl restart dion-siptranslator
Установка и конфигурация
dion-proxy
подробно описана в основной инструкции по установке.
Чтобы сконфигурировать сервис Dion Proxy, выполните следующие действия:
Перейдите в CLI узла, на котором установлен пакет dion-proxy.deb.
Откройте на редактирование конфигурационный файл /etc/dion/proxy.yaml:
sudo nano /etc/dion/proxy.yaml
Все переменные, требующие редактирования, находятся в первой части файла. Следуйте комментариям и инструкции ниже.
При редактировании файла очень важно сохранить исходные отступы!
Перейдите в секцию, перечисляющую адреса сервисов SIP.
Для переменных host
укажите локальные IP-адреса серверов, на которых развернуты соответствующие компоненты SIP. Порты не меняйте.
Обратите внимание, что адреса сервисов необходимо писать в строке host
, а не в строке с именем сервиса!
Например:
sipservers:
- host: 192.168.0.14
commandGRPCPort: 9091
healthCheck:
connectionType: http
port: 9092
meta:
# для перенаправления исходящих вызовов через АТС вашей организации измените значение переменной is_outgoing_calls_enabled на true
# для перенаправления потребуется внести соотвествующие изменения в файл organizations.yml и конфигурацию sip server, следуйте инструкции по установке
# при значении false исходящие звонки из конференций совершаются через облачную АТС DION
is_outgoing_calls_enabled: false
organizations:
- "" # Укажите ID вашей организации в кавычках
siptranslators:
- host: 192.168.0.13
commandGRPCPort: 9059
healthCheck:
connectionType: http
port: 8059
transcoderservers:
- host: 192.168.0.12
commandGRPCPort: 9034
healthCheck:
connectionType: http
port: 8034
Перенаправление исходящих вызовов подробно описано выше в разделе Перенаправление исходящих вызовов через локальную АТС.
Меняйте значение переменной
is_outgoing_calls_enabled:
наtrue
, только если вы включили перенаправление в секцииoutgoingCalls:
конфигурационного файлаsipserver.yml
и заполнили файлorganizations.yml
.
Если у вас будет запущено несколько экземпляров какого-либо компонента, например, SFU, перечислите все экземпляры в виде списка. Например:
В списке очень важно сохранить исходные отступы!
sfus:
- host: 192.168.1.2
commandGRPCPort: 9016
healthCheck:
connectionType: http
port: 8016
- host: 192.168.1.4
commandGRPCPort: 9016
healthCheck:
connectionType: http
port: 8016
Сохраните изменения в файле: ctrl+O ctrl+X в Nano.
Перезапустите сервис:
systemctl stop dion-proxy
systemctl start dion-proxy
Убедитесь, что сервис запущен без ошибок и находится в статусе Active (Running):
systemctl status dion-proxy
Если сервис не запускается, обратитесь к вашей аккаунт-команде за помощью в настройке.
По умолчанию вызов должен выполняться в формате ххххххх@IP-адрес или FQDN вашего SIP SERVER, где ххххххх — семизначный добавочный номер, указанный в приглашении на встречу для звонка с телефона.
Найти соответствующий номер можно в настройках комнаты DION в личном кабинете, либо в приглашении на встречу.
Если ваша АТС позволяет, вы можете настроить правила маршрутизации звонков по вашему усмотрению. Это может упростить формат вызова для ваших абонентов.