ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать

”становка OpenSIPS на Linux

SIP-прокси-сервер операторского уровн€

ћерион Ќетворкс

10 минут чтени€

OpenSIPS - это SIP-прокси-сервер с открытым исходным кодом операторского уровн€, используемый дл€ сигнализации SIP, и может обрабатывать все типы операций SIP. ќн используетс€ многими провайдерами телекоммуникационных услуг, телефонии и операторами св€зи из-за его надежности и производительности.

”становка OpenSIPS на Linux

»так, если вы, реб€та, хотите обрабатывать тыс€чи одновременных вызовов и SIP-сессий, тогда OpenSIPS - ваш выход. —уществует множество различных сценариев, в которых openSIPS может хорошо играть в вашей инфраструктуре. Ќекоторые из них:

  • OpenSIPS как SIP Edge Proxy
  • OpenSIPS в качестве среднего регистратора или главного сервера регистрации
  • OpenSIPS как вход€щий и исход€щий шлюз
  • OpenSIPS как балансировщик нагрузки
  • » многое другое
ѕримечание: OpenSIPS обрабатывает только SIP-сигнализацию, а не медиа. ƒл€ обработки мультимедиа вы можете использовать RTPPROXY или RTPENGINE.

 ак установить OpenSIPS 3 из исходного кода на Debian 9

явл€€сь модульным, мощным и гибким SIP-сервером, OpenSIPS можно установить на все основные дистрибутивы Linux. ¬ этом уроке мы будем использовать Debian 9 в качестве базовой операционной системы. »так, вот шаги, которым мы должны следовать, чтобы запустить наш первый экземпл€р OpenSIPS и запустить его:

  1. ”становите все необходимые зависимости
  2. —клонируйте последнюю версию репозитори€ OpenSIPS
  3. —компилируйте это
  4. —оздайте файлы конфигурации
  5. Ќастройте сервис OpenSIPS
  6. Ќастройте OpenSIPS-CLI
  7. —оздайте базу данных OpenSIPS
  8. «апустите сервер OpenSIPS 3

ѕоэтому, прежде чем мы начнем устанавливать зависимости, нам нужно сначала пон€ть, как мы будем настраивать наш экземпл€р OpenSIPS. „то ж, базовому серверу OpenSIPS не нужно много библиотек или зависимостей, но мы будем использовать панель управлени€ OpenSIPS позже вместе с поддержкой MySQL, поэтому мы установим некоторые другие зависимости, чтобы мы могли легко скомпилировать некоторые дополнительные модули OpenSIPS.


Ўаг 1: ”становка всех зависимостей

ƒавайте обновим все списки пакетов, которые у нас есть.

apt update

“еперь давайте установим все зависимости вместе с сервером MySQL (MariaDB).

apt install git gcc bison flex make openssl perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libberkeleydb-perl mysql-server ssh libxml2 libxml2-dev libxmlrpc-core-c3-dev libpcre3 libpcre3-dev subversion libncurses5-dev git ngrep libssl-dev net-tools

ѕосле того, как мы установили все эти пакеты, нам нужно установить пакеты devel дл€ сервера MySQL.

ƒл€ MariaDB:

apt install libmariadbclient-dev-compat sudo

ƒл€ сервера MySQL:

apt install libmysqlclient-dev

“еперь нам нужно установить зависимости дл€ сервера micro httpd, который OpenSIPS будет использовать дл€ прослушивани€ соединений JSON RPC.

apt install libmicrohttpd-dev pkg-config libjsoncpp-dev libjson-c-dev
ln -s /usr/include/jsoncpp/json/ /usr/include/json
wget http://ftp.us.debian.org/debian/pool/main/j/json-c/libjson-c3_0.12.1-1.1_amd64.deb
dpkg -i libjson*

¬се зависимости должны быть установлены сейчас, и теперь мы готовы клонировать исходный код openSIPS 3.

ѕримечание: не забудьте установить им€ пользовател€ и пароль root дл€ msyql, использу€ - mysql_secure_installation

Ўаг 2:  лонирование репозитори€ OpenSIPS

ћы будем клонировать последнюю версию репозитори€ OpenSIPS 3 в /usr/src

cd /usr/src ; git clone https://github.com/OpenSIPS/opensips.git -b 3.0 opensips-3.0

Ўаг 3: —компилируйте исходный код

„тобы сначала скомпилировать модули OpenSIPS или исходный код, перейдите в каталог opensips-3.0.

cd /usr/src/opensips-3.0

“еперь наберите

make menuconfig

ќткроетс€ главное меню конфигурации OpenSIPS. »з этого меню мы можем скомпилировать OpenSIPS и сгенерировать наши конфигурационные скрипты. ѕоэтому, прежде чем мы скомпилируем, нам нужно включить дополнительный модуль, который нам нужен дл€ поддержки MySQL и JSON.

ћеню конфигурации

“еперь давайте выберем несколько дополнительных модулей, которые нам нужны. »так, перейдите к Configure Compile Options -> Configure Excluded Module (Ќастройка параметров компил€ции -> Ќастройка исключенного модул€).

Configure Excluded Module

ћы должны выбрать 4 модул€ - db_mysql, dialplan, json, httpd

4 модул€
ѕримечание: если вы хотите выбрать или скомпилировать какой-либо другой модуль, об€зательно установите его зависимости.

“еперь вернитесь, использу€ клавишу со стрелкой влево и сохраните изменени€. » как только мы выберем наши модули дл€ компил€ции, тогда просто выберите Compile and Install OpenSIPS

ћодули дл€ компил€ции Compile and Install OpenSIPS

 омпил€ци€ началась, и если вы правильно установили все зависимости, то ошибок быть не должно.

ѕосле успешной компил€ции вам будет предложено нажать любую клавишу, чтобы вернутьс€ в главное меню.

”спешна€ компил€ци€

Ўаг 4: √енераци€ скрипта конфигурации OpenSIPS.

—крипт конфигурации OpenSIPS - это мозг сервера OpenSIPS, он контролирует всю маршрутизацию, обработку SIP-трафика, регистрации и почти все операции SIP. ѕоэтому дл€ нас очень важно создать его из меню конфигурации. ѕосле компил€ции всех модулей, перейдите к Generate OpenSIPS Script.

Generate OpenSIPS Script

ћы можем сгенерировать 3 типа скриптов из меню конфигурации:

  1. Residential Script - обеспечивает регистрацию пользовател€.
  2. Trunking Script - ѕодходит дл€ предоставлени€ услуги транкинга. ќн не поддерживает регистрацию.
  3. Load-Balancer Script - используетс€ дл€ балансировки нагрузки вход€щих и исход€щих вызовов.
ѕримечание. Ёти конфигурационные файлы будут иметь базовую конфигурацию. ¬ам всегда нужно редактировать эти файлы, чтобы они работали в соответствии с вашим сценарием.

ƒл€ этой установки мы будем использовать Trunking Script.

Trunking Script

“еперь перейдите к настройке скрипта Configure Script

Configure Script

¬ыберите функции, которые вы хотите добавить в свой скрипт.

‘ункции

ѕосле выбора всех необходимых параметров сохраните сценарий и выберите Generate Trunking Script.

Generate Trunking Script

Ёто все. “еперь вернитесь и сохраните все изменени€ - Exit & Save All Changes.

Exit & Save All Changes

Ўаг 5: Ќастройка сервиса OpenSIPS

ќчень важно пон€ть файловую структуру OpenSIPS и важные каталоги, прежде чем начать работу над ней. ¬от некоторые основные каталоги, над которыми мы будем работать во всей этой установке.

  • /usr/local/etc/opensips/ -  аталог файлов конфигурации OpenSIPS по умолчанию
  • /usr/local/lib64/opensips/modules/ -  аталог модулей OpenSIPS
  • /etc/init.d/ -  аталог файлов сервиса OpenSIPS
  • /etc/default/opensips - ‘айл конфигурации службы OpenSIPS

ћы можем найти файл opensips.init и opensips.default в каталоге /usr/src/opensips-3.0/packaging/debian/. ѕоэтому нам нужно скопировать эти файлы в каталог /etc/init.d/ и /etc/default/.

cp /usr/src/opensips-3.0/packaging/debian/opensips.init /etc/init.d/opensips
cp /usr/src/opensips-3.0/packaging/debian/opensips.default /etc/default/opensips
chmod 755 /etc/init.d/opensips
update-rc.d opensips defaults 99
mkdir -p /var/run/opensips

“еперь у нас все настроено и готово запустить наш первый сервис OpenSIPS, но прежде чем мы это сделаем, нам нужно скопировать наш файл конфигурации в каталог /usr/local/etc/opensips/, который мы создали из меню конфигурации OpenSIPS. Ётот файл конфигурации находитс€ в /usr/src/opensips-3.0/etc/

ls /usr/src/opensips-3.0/etc/
ls /usr/src/opensips-3.0/etc/

“еперь мы скопируем этот конфигурационный файл транкинга в /usr/local/etc/opensips/

mv /usr/src/opensips-3.0/etc/opensips_trunking* /usr/local/etc/opensips/opensips_trunk.cfg
mv /usr/src/opensips-3.0/etc/opensips_trunking* /usr/local/etc/opensips/opensips_trunk.cfg

“еперь вы можете видеть, что у нас есть opensips_trunk.cfg в каталоге /usr/local/etc/opensips, и мы будем использовать этот же файл дл€ нашего сервера OpenSIPS, поэтому мы должны указать путь к нему в файле инициализации opensips.

ѕримечание: мы также должны убедитьс€, что у нас есть правильный двоичный путь OpenSIPS в файле инициализации opensips.
nano /etc/init.d/opensips
nano /etc/init.d/opensips

ћы должны добавить путь к скрипту и демону в переменную DAEMON и CFGFILE.


Ўаг 6: Ќастройка OpenSIPS-CLI

Ќачина€ с OpenSIPS 3, мы будем использовать инструмент OpenSIPS-CLI дл€ управлени€ экземпл€рами OpenSIPS. –анее мы использовали дл€ работы со скриптом opensipsctl, но он был удален из OpenSIPS версии 3. ћы будем использовать это приложение дл€ выполнени€ всех видов различных операций, таких как отправка команд MI, создание базы данных и многое другое.

ƒавайте клонируем репозиторий opensips-cli в /usr/src/

cd /usr/src && git clone https://github.com/OpenSIPS/opensips-cli.git

“еперь давайте установим все зависимости, которые нам нужны дл€ этого удобного небольшого приложени€.

sudo apt install python3 python3-pip python3-dev gcc default-libmysqlclient-dev
sudo pip3 install mysqlclient sqlalchemy sqlalchemy-utils pyOpenSSL

 ак только мы установим все зависимости, пришло врем€ установить OpenSIPS-CLI.

cd /usr/src/opensips-cli
sudo python3 setup.py install clean

ѕосле успешной установки мы сможем выполнить команду opensips-cli.

opensips-cli
ѕримечание.  огда opensips-cli запускаетс€, она всегда ищет файл opensips-cli.cfg в каталоге /etc/. ≈сли файл отсутствует, она запуститс€ с настройками по умолчанию.

“еперь мы создадим файл opensips-cli.cfg в каталоге /etc/.

nano /etc/opensips-cli.cfg
[opensips-1]
 log_level: WARNING
 prompt_name: opensips-cli
 prompt_intro: Welcome to OpenSIPS at SECUREVOIP
 prompt_emptyline_repeat_cmd: False
 history_file: ~/.opensips-cli.history
 history_file_size: 1000
 output_type: pretty-print
 communication_type: fifo
 fifo_file: /tmp/opensips_fifo
 database_path: /usr/src/opensips-3.0/scripts/
 database_url: mysql://root:password@localhost
 database_name: opensips	

ћы должны добавить вышеуказанный блок в файл opensips-cli.cfg. ¬ы можете настроить все параметры в файле конфигурации. —интаксис и значение каждой переменной следующие:

  • [opensips-1] - »м€ экземпл€ра
  • log_level - ”ровень сообщений лога
  • prompt_name - »м€ оболочки
  • prompt_intro - ѕриветственное сообщение оболочки
  • history_file - √де хранить историю opensips-cli
  • output_type - ѕараметры вывода, вы также можете использовать json
  • communication_type - “ип св€зи - fifo, json
  • database_path - ѕуть к сценари€м базы данных
  • database_url - URL вашей базы данных MySQL
  • database_name - Ѕаза данных, котора€ будет использоватьс€

“еперь давайте запустим opensips-cli с нашим новым файлом конфигурации.

opensips-cli -i [instance_name] -f [config file]	
opensips-cli -i [instance_name] -f [config file]

Ўаг 7: —оздание базы данных OpenSIPS

Ќаконец, пришло врем€ создать базу данных OpenSIPS. ћы будем использовать бэкэнд MySQL, и если вы захотите использовать другой бэкэнд, такой как PostgreSQL, вам, возможно, придетс€ установить некоторые зависимости.

—начала откройте файл opensips-cli и выполните следующие действи€:

opensips-cli
  • «апустите OpenSIPS-CLI
  • ¬ыполните - database create
  • ¬ведите URL базы данных MySQL

“еперь давайте проверим базу данных и таблицы opensips, войд€ в MySQL.

MySQL opensips
ѕримечание. –екомендуетс€ создать отдельного пользовател€ mysql дл€ доступа к базе данных opensips.

Ўаг 8: «апуск сервера OpenSIPS 3

“еперь пришло врем€ наконец запустить наш сервер OpenSIPS, но прежде чем мы это сделаем, нам нужно настроить некоторые параметры в файле opensips_trunk.cfg.

nano /usr/local/etc/opensips/opensips_trunk.cfg

Ќам необходимо обновить URL-адрес MySQL всех модулей в скрипте, указав им€ пользовател€ и пароль MySQL.

nano /usr/local/etc/opensips/opensips_trunk.cfg
ѕримечание. ≈сли после запуска службы opensips вы получаете сообщение об ошибке отказа в доступе на стороне сервера MySQL, создайте нового пользовател€ MySQL только дл€ базы данных opensips.

Ќам нужно убедитьс€, что у нас указан правильный путь к модулю в скрипте конфигурации.

ѕуть к модулю

ќбновите переменную PATH в файле /etc/init.d/opensips.

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin

 ак только мы это сделаем, последний шаг - установить дл€ переменной RUN_OPENSIPS значение yes.

nano /etc/default/opensips
nano /etc/default/opensips
ѕримечание. ”бедитесь, что в вашей ќ— существует пользователь opensips, или вы можете добавить его с помощью - useradd -r opensips.

ѕосле обновлени€ конфигурации в файле default нам нужно выполнить systemctl daemon-reload.

»так, теперь мы готовы запустить наш сервис opensips. ¬о-первых, давайте удостоверимс€, что в нашем конфигурационном файле OpenSIPS нет неправильной конфигурации.

opensips -C -f /usr/local/etc/opensips/opensips_trunk.cfg 
opensips -C -f /usr/local/etc/opensips/opensips_trunk.cfg

“еперь давайте запустим сервис OpenSIPS

systemctl start opensips
systemctl enable opensips 

≈сли вы выполнили все шаги и установили все зависимости, вы увидите, что сервер opensips работает и прослушивает порт 5060.

5060
ѕримечание. ѕо умолчанию OpenSIPS использует файл /var/log/syslog дл€ ведени€ журнала. ѕоэтому, если вы получаете какие-либо ошибки при запуске службы opensips, обратитесь к этому файлу логов дл€ устранени€ неполадок.

ћы можем убедитьс€, что сервер OpenSIPS работает или нет по-разному.

  1. ѕровер€€ файл opensips_fifo в каталоге /tmp. opensips_fifo
  2. ¬ыполн€€ команды MI через opensips-cli

    MI

ѕоздравл€ем! ¬ы успешно установили свой первый сервер OpenSIPS, и мы желаем вам всего наилучшего в вашем путешествии по VoIP.