1.10.2020

opensips 3.1 centos 7

Установка Opensips 3.1\opensips-cli\database на centos 7

устанавливаем репозиторий для centos 7:

yum install epel-release
yum install https://yum.opensips.org/3.1/releases/el/7/x86_64/opensips-yum-releases-3.1-6.el7.noarch.rpm

устанавливаем все пакеты в репозитории opensips (если нужно конечно все модули opensips поставить)
yum repo-pkgs opensips install

opensips-cli можно поставить из репозитория:

yum install opensips-cli -y

А можно из github:

yum install git -y
git clone https://github.com/OpenSIPS/opensips-cli.git
yum install python36 python36-pip python36-devel gcc mysql-devel python36-mysql python36-sqlalchemy python36-pyOpenSSL
cd opensips-cli
python3 setup.py install

Далее обновим и поставим mysql: mariadb и установим рутовый пароль:

cat > /etc/yum.repos.d/mariadb.repo <<EOF
# MariaDB 10.5 CentOS repository list - created 2020-10-09 07:01 UTC 
# http://downloads.mariadb.org/mariadb/repositories/ 
[mariadb] 
name = MariaDB 
baseurl = http://yum.mariadb.org/10.5/centos7-amd64 
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
gpgcheck=1
EOF

yum install mariadb-server -y
systemctl start mariadb
mysql_secure_installation

сделаем так чтобы всё запускалось при перезапуске:

systemctl enable opensips
systemctl enable mariadb
vi /etc/systemd/system/multi-user.target.wants/opensips.service

вместо mysqld.service в строчке After, запишем mariadb.service

systemctl daemon-reload

29.09.2020

rtpengine-installation-configuration

установка rtpengine На debian 10. проходит на ура, вместе с g729 кодеком, т.е. можно использовать transonding.

исходная статья.
репозиторий со скриптами: https://bitbucket.org/yooxy/rtpengine-debian-10-install/src/master/

скрипт для debian 10 buster:

#!/usr/bin/sh

apt update
apt install devscripts python3-debian equivs git -y
#for some reason my debian take old version libsystemd-dev by default
apt install libsystemd-dev=247.3-6~bpo10+1 -y

git clone https://github.com/sipwise/rtpengine.git

#there are some steps to make fix for buster OS
cd rtpengine/pkg/deb
bash ./generator.sh
bash ./backports/buster
cp -r buster/* ../../debian
cd ../../

#install dependencies in automatically way
mk-build-deps --install

#compile rtpengine
dpkg-buildpackage -b -us -uc

cd ../

dpkg -i rtpengine-daemon_11.4.0.0+0~mr11.4.0.0_amd64.deb rtpengine-iptables_11.4.0.0+0~mr11.4.0.0_amd64.deb rtpengine-kernel-dkms_11.4.0.0+0~mr11.4.0.0_all.deb rtpengine-utils_11.4.0.0+0~mr11.4.0.0_all.deb rtpengine_11.4.0.0+0~mr11.4.0.0_all.deb

apt --fix-broken install 

24.09.2020

TCP\TLS NAT Zoiper

Столкнулся с проблемой, когда через sip прокси (opensips) не проходили пакеты (OPTIONS, NOTIFY, INVITE) в сторону uac при использовании TCP и TLS протоколов. при TLS opensips ругался 477/Send Error, при использовании TCP – 408 timeout. И действительно пакеты с opensips уходили, но не доходили до UAC.

Причина была в использовании STUN, если его отключить на Zoiper то связь работает хорошо в обе стороны.

9.08.2019

systemd. opensips 1.7. centos7

Чтобы использовать автозагрузку на centos7 без понимания как работает systemd можно взять файл из новых версий opensips для systemd доработать его и добавить к себе в систему

  1. разместить файл opensips.service в /etc/systemd/multi-user.target.wants
  2. отредактировать файл:

[Unit]
Description=OpenSIPS is a very fast and flexible SIP (RFC3261) server
Documentation=man:opensips
After=network.target mariadb.service postgresql.service rtpproxy.service
Requires=mariadb.service

[Service]
Type=forking
User=root
Group=root
RuntimeDirectory=opensips
RuntimeDirectoryMode=775
Environment=P_MEMORY=32 S_MEMORY=32
EnvironmentFile=-/etc/sysconfig/opensips
PermissionsStartOnly=yes
PIDFile=%t/opensips/opensips.pid
ExecStart=/usr/local/sbin/opensips -P %t/opensips/opensips.pid -f /etc/opensips/opensips.cfg
ExecStop=/usr/bin/pkill –pidfile %t/opensips/opensips.pid
Restart=always
TimeoutStopSec=30s
LimitNOFILE=262144

[Install]
WantedBy=multi-user.target

3. выполнить systemctl enable openspis.service

по идее это всё, можно перезагружать, если ошибки будут, то проверить можно в логах journalctl -xe

полезная статья.

10.04.2019

opensips. dispatcher. loadbalancing. wrong destination.

По установке по умолчания, если вы добавите несколько шлюзов в dispatcher то про запросе авторизации, Opensips будет пересылать новый invite на новый шлюз.

решается выставлением hash механизма ‘0’ в функции ds_select_dst который учитывает callid.

8.04.2019

troubleshoot. ACK sending to wrong host

picture when ACK sending to wrong dest

solve is add function fix_sdp_contact() into onreply_route .

по-русски: проблема была в том, что опенсипс получая ACK от абонента не пересылал его обратно, через внутренний интерфейс железке. А слал ACK напрямую тому, кто указан был в 200 OK оригинальном. в Итоге помогло добавление функции в onreply_route которая по идее должна заменять поле контакт на адрес источника запроса.

29.11.2018

opensips 1.11 uac_regstrant timer error 100% cpu load

При большом количестве записей от 150, начинаются проблемы с регистрацией, причина в моём случае в SRV lookup – это когда для домена сначала определяется SRV запись и если её нет, то тогда отдаётся обычная. 

В моём случае помогла смена dns серверов на 8.8.8.8 и на 4.4.4.4.