21.04.2021

Kamailio and Opensips

This is the list of completed solutions based on Kamailio\opensips.

KAMAILIO:

WEBRTC2SIP server – using kamailio + rtpengine, makes possible to use webphone based on webrtc to using common SIP servers

  • transfer between SIP and WEBRTC protocols and vice versa.
  • transconding g729 to g711

LoadBalancer – using only kamailio without DBs, makes loadbalancing between asterisks servers.

SBC – using kamailio and sql DBs for manage incoming traffic to asterisk, placed before asterisk on same PC.

  • insert custom headers
  • block hackers traffic
  • manage CPS and monitoring tools
  • control PDD of calls

OPENSIPS:

Redirect server – working with billing software JERA. Makes simultaneously outbound calls based on redirect messages from billing.

  • control CPS for customers
  • block unwanted traffic
  • monitoring online calls with custom dashboard
  • make CDRs for insert into billing

Failover server – makes possible to switch between 2 opensips servers without loosing online calls.

12.04.2021

install opensips 3.1 + opensips control panel

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 049AD65B
echo "deb https://apt.opensips.org focal 3.1-releases" >/etc/apt/sources.list.d/opensips.list
echo "deb https://apt.opensips.org focal cli-nightly" >/etc/apt/sources.list.d/opensips-cli.list

apt-get update && apt-get upgrade

apt-get install opensips
apt-get install apache2 libapache2-mod-php php-curl opensips-http-modules -y

echo '
<Directory /var/www/html/opensips-cp/web>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
</Directory>
<Directory /var/www/html/opensips-cp>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all denied
</Directory>
Alias /cp /var/www/html/opensips-cp/web

<DirectoryMatch "/var/www/html/opensips-cp/web/tools/.*/.*/(template|custom_actions|lib)/">
    Require all denied
</DirectoryMatch>

' > /etc/apache2/sites-enabled/opensips-cp.conf

mkdir /var/www/html/opensips-cp 

cp -r opensips-cp-8.3.1/* /var/www/html/opensips-cp

chown -R www-data:www-data /var/www/html/opensips-cp/
apt-get install php php-mysql php-gd php-pear php-cli php-apcu -y

systemctl restart apache2

#add into opensips.conf 
#–--
loadmodule "httpd.so"
loadmodule "mi_http.so"
modparam("mi_http", "root", "mi")
#–--

add file opensips-cli.conf
#–--
[default]
#database_modules: acc clusterer dialog dialplan dispatcher domain rtpproxy usrloc
database_modules: ALL

#database_admin_url: postgres://root@localhost
database_admin_url: mysql://root:phefubuho@127.0.0.1
database_url: mysql://root:phefubuho@127.0.0.1
###–-

| Posted in opensips | No Comments »
12.03.2021

183 ringback. OPensips + Rtpproxy.

Задача подменить КПВ идущее от провайдера на 10 секунд, далее прокидывать КПВ от провайдера. Задача решается при помощи opensips 3.1 + rtpproxy 2.1 и минимальной конфигурацией.

rtpproxy прекрасно компилируется на базу Ubuntu 20
opensips 3.1 устанавливается из репозиториев с конфигурацией по умолчанию
для проигрывания своего приветсвия необходимо сделать 2 вещи:

а) подключить rtpproxy и использовать rtpproxy_stream2uac функцию. Пример находится в репозитории.

б) для rtpproxy приветствия необходимо подготовить в нужном формате при помощи makeann (создается после компиляции).

репозиторий с примером конфига.

Схема решения:

client -> opensips -> carrier.

24.12.2020

asterisk 16. webrtc. sipml5

Основная статья по настройке на официальном сайте:

у меня не завелось сразу по причине:

подгружался модуль chan_sip , нужно добавить noload = chan_sip.so в modules.conf

И не стартовал внутренний https сервер астериска с сертификатами которые сгенерил астериск, решением может быть генерация через letsencrypt

короткая инструкция по установке:

for centos 7 only:
install asterisk 16 , apache and git use asterisk configuration files inside repository
repository with example and configuration files are in : 
cd /root git clone 
https://erewin@bitbucket.org/yooxy/webrtc-asterisk-example.git
download sipml5 into /var/www/html directory 
cd /var/www/html 
git clone https://github.com/DoubangoTelecom/sipml5.git
you have to add ssl for apache yum install mod_ssl
change ssl.conf to useing your certificates or use ssl.conf from repository
tune your codecs at asterisk side
remember that certificates are allowed for 3 months only then it have to be renewed
firewall setting you may check with 
firewall-cmd --info-zone=public

Tags: , , ,
| Posted in Asterisk | No Comments »
23.12.2020

esxi useful command. vmware.

оригинальная статья тут: https://www.nakivo.com/blog/most-useful-esxcli-esxi-shell-commands-vmware-environment/

из тех команд которые пригодились мне

esxtop (n - network, d- disks, c - cpu, e - extend process) 
esxcli vm process list - запущенные виртуальные машины
esxcli vm process kill -t (soft,hard,force) -w World_ID - позволяет завершить машину если этого не получается сделать через интерфейс.
dcui - запускает интерфейс ESXI. 

Tags: , ,
| Posted in vmware | No Comments »
22.12.2020

opensips as SBC

Example of opensips SBC with 2 interfaces with full RTP proxy and g729 transcoding.

Software: opensips 3.1, rtpengine, bcg729.

example settings for rtpengine:

OPTIONS="-i external/172.18.254.50!EXTERNAL_IP -i internal/172.25.150.242 -n 127.0.0.1:2223 -m 35000 -M 65000 -L 4 --log-facility=local1 --table=0 --delete-delay=0 --timeout=60 --silent-timeout=600 --final-timeout=7200 –offer-timeout=60 --num-threads=4 --tos=184 –no-fallback"

example opensips config: git clone https://bitbucket.org/yooxy/opensips-sbc-local-external-transcode.git

9.12.2020

sipdump per day. compressed. heplify.

Ниже представлен скрипт для установки сервиса systemd сбора sip пакетов в папку /var/log/sipdump по дням. в дальнейшем можно распаковать файлы и и пробежаться по ним sngrep.

!/usr/bin/sh
echo "Instaiiling sipdump have started: \n"
yum install wget git -y
apt install wget git -y
cd /usr/src/
mkdir sipdump
cd sipdump
wget https://github.com/sipcapture/heplify/releases/download/1.62/heplify
chmod 760 heplify
cp heplify /usr/bin
rm heplify
mkdir /var/log/sipdump
echo "
[Unit]
Description=Yooxy sipdump
After=network.target
ConditionPathExists=/var/log/sipdump
[Service]
WorkingDirectory=/var/log/sipdump
ExecStart=/usr/bin/heplify -dim OPTIONS,NOTIFY -wf /var/log/sipdump -rt 1440 -zf -sl
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=sipdump.service" > sipdump.service
chmod 664 sipdump.service
cp sipdump.service /etc/systemd/system/sipdump.service
rm sipdump.service
systemctl daemon-reload
systemctl start sipdump
echo "Script ending \n"

8.12.2020

kamailio. siremis. xmlrpc. jsonrpc.

xmlrpc работает через порты, которые используются и для SIP. Файлы настройки протоколов для siremis

siremis/modules/sipadmin/service/

jsonrpc может работать через разные транспорты, по умолчанию работается через Unixsock.нужные параметры в конфиге kamailio:

<UnixSockLocal name="unixsocklocal" address="/var/run/siremis/siremis_rpc.sock" timeout="3.0"/>
<!-- kamailio.cfg: modparam("jsonrpcs", "dgram_socket", "/var/run/kamailio/kamailio_rpc.sock") -->
<!-- kamailio.cfg: modparam("jsonrpcs", "dgram_mode", 0666) --> <UnixSockRemote name="unixsockremote" address="/var/run/kamailio/kamailio_rpc.sock" timeout="3.0"/>

TIPs: Возможны проблемы с разрешениями поправляется выставлением разрешения на каталог /var/run/kamailio 701 (добавить поиск для остальных пользователей) ну и сам файл sock должен быть доступен для чтения\записи

30.11.2020

kamailio. Rtpproxy not apply on re-invite.

При реинвайте не применяется rtpproxy, использовал rtpproxy_manage. Проблема была в том, что при реинвайте провайдер отправлял ответ с уже включенным a=nortpproxy в sdp. соответственно kamilio просто игнорил этот ответ. полечилось добавлением в конфиг такой строчки:

modparam("rtpproxy", "nortpproxy_str", "")

30.10.2020

Asterisk. hints. States.

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

Подключаемся по AMI: telnet 127.0.0.1 5038

Action: Login
ActionID: 1
Username: manager
Secret: password

получаем данные:

Action: Getvar
ActionID: 1
Variable: DEVICE_STATE(SIP/1000)

ответ:

ActionID: 1 
Variable: DEVICE_STATE(SIP/1003) 
Value: INUSE