Установка и начальная настройка Opensips 2.2

Установка и начальная настройка Opensips

Opensips это прямой конкурент kamailio, на текущий момент времени на мой взгляд, opensips развивается лучше и активнее чем kamailo. Оба продукта функционально схожи и конфигурируются одинаково. Решения в коде для kamailio с не большими изменениями можно использовать для opensips и наоборот. В этой статье будет приведен пример установки, начального конфигурирования opensips, кроме того будут приложены полноценные файлы маршрутизации. Конструктивно локальный вызов будет выглядеть как путь прохождения метода INVITE от UA(A) через opensips1 в сторону opensips2 который будет релеить INVITE в сторону медиасерверов Asterisk, Asterisk будет разворачивать вызов к opensips2, opensips2 вернет INVITE opensips1 и приземлит вызов к UA(B).

Схема работы:
__________________________________________________________________________
UA(A) ---> Opensips1 ---> Opensips2 --->Asterisk ---
                                                                                   |
                   UA(B) <--- Opensips1 <--- Opensips2 <-- 
__________________________________________________________________________

Установка и настройка opensips:
Готовим сервер

apt-get install net-tools tcpdump sngrep mc dnsutils git-core htop

Скачиваем версию LTS
cd /usr/local/src
git clone -b 2.2 https://github.com/OpenSIPS/opensips.git opensips_2_2

Зависимости для сборки
apt-get install gcc build-essential make bison flex dh-systemd libconfuse-dev libcurl4-gnutls-dev libdb-dev libexpat1-dev libgeoip-dev libhiredis-dev
libjson-c-dev libldap2-dev liblua5.1-dev libmemcached-dev libmicrohttpd-dev libncurses5-dev libpcre3-dev libperl-dev libpq-dev librabbitmq-dev libradcli-dev
libsctp-dev libsnmp-dev libsqlite3-dev libssl-dev libxml2-dev python unixodbc-dev xsltproc python-dev libdbi-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perllibberkeleydb-perl default-libmysqlclient-dev libboost-regex-dev openssl ssl-cert

Создаем необходимые файлы и директории
mkdir /var/run/opensips
cd packaging/debian/common
cp opensips.default /etc/default/opensips
cp opensips.init /etc/init.d/opensips
chmod 755 /etc/init.d/opensips
adduser --quiet --system --group --disabled-password --shell /bin/false --gecos "Opensips" --home /var/run/opensips opensips
set ownership to /var/run/opensips
chown opensips:opensips /var/run/opensips
update-rc.d opensips defaults 99
nano /root/.bash_profile
PATH=$PATH:/usr/local/sbin
export PATH
touch /var/log/opensips.log
chown root:opensips /var/log/opensips.log

Собираем opensips
make menuconfig, выбрал
- aaa_radius
b2b_logic
cached_memcached
carrierroute
compression
cpl_c
db_postgres
dialplan
regex
- identity
json
lua
mmgeoip
perl
proto_sctp
proto_tls
presence
presence_dialoginfo
presence_mwi
presence_xml
python
snmpstats
tls_mgm
xcap
Собираем
make

Соберем пакет для debian
Готовим архив

tar -czvf opensips_2.2.5.orig.tar.gz opensips-2.2.5/
apt-get install dh-make
dh_make --createorig
nano debian/control (descriptions)
Description: Opensips-2.2.5-TLS-MAIN
dpkg-buildpackage –rfakeroot
dpkg –I пакет opensips

Подготовка окружения opensips
mkdir /etc/opensips-2.2.5-TLS
ln -s /usr/local/etc/opensips/ /etc/opensips-2.2.5-TLS/cfg
ln -s /usr/local/lib64/opensips/modules/ /etc/opensips-2.2.5-TLS/modules
ln -s /usr/local/sbin/opensips/ /etc/opensips-2.2.5-TLS/command
mkdir console
ln -s /usr/local/sbin/opensips /etc/opensips-2.2.5-TLS/console/opensips
ln -s /usr/local/sbin/opensipsctl /etc/opensips-2.2.5-TLS/console/opensipsctl
ln -s /usr/local/sbin/opensipsdbctl /etc/opensips-2.2.5-TLS/console/opensipsdbctl
ln -s /usr/local/sbin/opensipsunix /etc/opensips-2.2.5-TLS/console/opensipsunix
ln -s /usr/local/sbin/osipsconfig /etc/opensips-2.2.5-TLS/console/osipsconfig
ln -s /usr/local/sbin/osipsconsole /etc/opensips-2.2.5-TLS/console/osipsconsole
ln -s /etc/default/opensips /etc/opensips-2.2.5-TLS/cfg/opensips_default
mkdir help
эта команда будет проверять конфиг opensips
nano chk
#!/bin/bash
/usr/local/sbin/opensips -C /usr/local/etc/opensips.cfg
ln -s /usr/local/share/doc/opensips /etc/opensips-2.2.5-TLS/help/opensips
ln -s /usr/local/share/man/ /etc/opensips-2.2.5-TLS/help/man5-8
chown -R root:opensips /etc/opensips-2.2.5-TLS/
chown -R root:opensips /usr/local/sbin/
chown -R root:opensips /usr/local/etc/
chmod 640 /usr/local/etc/opensips/opensipsctlrc
chmod 640 /usr/local/etc/opensips/osipsconsolerc
chmod 755 /etc/init.d/opensips
chown root:opensips /etc/init.d/opensips
chown -R root:opensips /usr/local/lib64/opensips/modules/
ln -s /var/log/opensips.log /etc/opensips-2.2.5-TLS/log
chmod 664 /var/log/opensips.log
chmod 664 /etc/default/opensips
chown root:opensips /etc/default/opensips

Настройка и запуск
nano /etc/default/opensips
RUN_OPENSIPS=yes
USER=opensips
GROUP=opensips
S_MEMORY=2048
P_MEMORY=128

nano /etc/init.d/opensips
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/opensips
NAME=opensips
DESC=opensips
CFGFILE=/usr/local/etc/opensips/opensips.cfg
M4CFGFILE=/usr/local/etc/opensips/opensips.m4
M4ARCHIVEDIR=/usr/local/etc/opensips/archive
HOMEDIR=/var/run/opensips
PIDFILE=$HOMEDIR/$NAME.pid
DEFAULTS=/etc/default/opensips
RUN_OPENSIPS=yes

systemctl daemon-reload
systemctl status opensips
ps -ef | grep opensips
netstat -alnp | grep opensip

Настроим логи
nano /etc/rsyslog.conf
local0.*                        -/var/log/opensips.log
service rsyslog restart
apt-get install logrotate
cd /etc/logrotate.d
touch opensips
/var/log/opensips.log
{
rotate 90
daily
missingok
notifempty
delaycompress
compress
create 660 root opensips
postrotate
            /etc/init.d/opensips force-reload
endscript
}
logrotate -d /etc/logrotate.d/opensips
logrotate -v -f /etc/logrotate.d/opensips
nano /etc/logrotate.d/rsyslog
/var/log/messages – rotate 7

Файл opensipsctlrc

# Наш SIP домен
SIP_DOMAIN=sbc.example.ru

# Директория песочницы
# $CHROOT_DIR="/path/to/chrooted/directory"

# Тип базы даных работающей с OPENSIPS
DBENGINE=PGSQL

# Порт базы данных PostgreSQL=5432
DBPORT=5432

# Имя хоста с базой данных
DBHOST=dbhost

# Имя базы данных
DBNAME=opensips

# Пользователь для r.w из базы
DBRWUSER=opensips

# Пароль пользователя для r.w из базы
DBRWPW="opensips"

# Супер пользователь базы данных
DBROOTUSER="postgres"

# Колонка с именем пользователя
USERCOL="username"

# Какие дополнительные таблицы будем устанавливать, и определение как устанавливать таблицы:
# ask - интерактивная установка
# yes - устанавливать
# no - не устанавливать

# Установить таблицы для дополнительных модулей
INSTALL_EXTRA_TABLES=ask

# Установить таблицы для модулей определения местоположения
INSTALL_PRESENCE_TABLES=ask

# Определение, какие таблицы - стандартные, дополнительные
#
# Стандартные модули
STANDARD_MODULES="standard acc domain group permissions registrar usrloc msilo alias_db uri_db speeddial avpops auth_db dialog dispatcher dialplan drouting nathelper load_balancer"

# Дополнительные модули
EXTRA_MODULES="imc cpl siptrace domainpolicy carrierroute userblacklist b2b registrant call_center fraud_detection cachedb_sql"

# Тип используемых псевдонимов
# DB - псевдонимы базы данных; UL - usrloc
# default: none
ALIASES_TYPE="DB"

# Подключение через  FIFO или UNIXSOCK
# default FIFO

# Путь до FIFO файла
OSIPS_FIFO="/var/run/opensips/opensips_fifo"

# Принмать команды коннектором - MI_CONNECTOR control engine: FIFO, UNIXSOCK, UDP, XMLRPC
MI_CONNECTOR=FIFO:/var/run/opensips/opensips_fifo

# Альтернативно, в т.ч с хост машин
# MI_CONNECTOR=UNIXSOCK:/var/run/opensips/opensips.sock
# MI_CONNECTOR=UDP:192.168.2.133:8000
# MI_CONNECTOR=XMLRPC:192.168.2.133:8000

# Проверять имена ACL; default on (1); off (0)
VERIFY_ACL=1

# Если VERIFY_ACL установлена, принимать имена из списка
# ACL_GROUPS="local ld int voicemail free-pstn"

# Включить дебаг - default '0'
# VERBOSE=1

# Пароли пользователей в таблице
# do (1) or don't (0) store plaintext passwords
# in the subscriber table - default '1'
STORE_PLAINTEXT_PW=0

# Не отображать вывод в консоль
# NOHLPRINT=1

# OPENSIPS pid файл
PID_FILE=/var/run/opensips.pid

# Опции старта процессов OPENSIPS
# пример: start opensips with 64MB share memory: STARTOPTIONS="-m 64"
# STARTOPTIONS=

Файл osipsconsolerc

# Наш SIP домен
SIP_DOMAIN=sbc.example.ru

# Директория песочницы
# $CHROOT_DIR="/path/to/chrooted/directory"

# Тип базы даных работающей с OPENSIPS
DBENGINE=PGSQL

# Порт базы данных PostgreSQL=5432
DBPORT=5432

# Имя хоста с базой данных
DBHOST=dbhost

# Имя базы данных
DBNAME=opensips

# Пользователь для r.w из базы
DBRWUSER=opensips

# Пароль пользователя для r.w из базы
DBRWPW=opensips

# Супер пользователь базы данных
DBROOTUSER="postgres"

# Какие дополнительные таблицы будем устанавливать, и определение как устанавливать таблицы:
# ask - интерактивная установка
# yes - устанавливать
# no - не устанавливать

# Установить таблицы для дополнительных модулей
INSTALL_EXTRA_TABLES=ask

# Установить таблицы для модулей определения местоположения
INSTALL_PRESENCE_TABLES=ask

# Определение, какие таблицы - стандартные, дополнительные
#
# Стандартные модули
STANDARD_MODULES="standard acc domain group permissions registrar usrloc msilo alias_db uri_db speeddial avpops auth_db dialog dispatch$

# Дополнительные модули
EXTRA_MODULES="imc cpl siptrace domainpolicy carrierroute userblacklist b2b registrant call_center fraud_detection cachedb_sql"

# Тип используемых псевдонимов
# DB - псевдонимы базы данных; UL - usrloc
# default: none
ALIASES_TYPE="DB"

# Принмать команды коннектором - MI_CONNECTOR control engine: FIFO, UNIXSOCK, UDP, XMLRPC
MI_CONNECTOR=FIFO:/var/run/opensips/opensips_fifo

# Альтернативно, в т.ч с хост машин
# MI_CONNECTOR=UNIXSOCK:/var/run/opensips/opensips.sock
# MI_CONNECTOR=UDP:192.168.2.133:8000
# MI_CONNECTOR=XMLRPC:192.168.2.133:8000

# Проверять имена ACL; default on (1); off (0)
VERIFY_ACL=1

# Если VERIFY_ACL установлена, принимать имена из списка
# ACL_GROUPS="local ld int voicemail free-pstn"

# Включить дебаг - default '0'
# VERBOSE=1

# Пароли пользователей в таблице
# do (1) or don't (0) store plaintext passwords
# in the subscriber table - default '1'
STORE_PLAINTEXT_PW=0

# Не отображать вывод в консоль
# NOHLPRINT=1

# OPENSIPS pid файл
PID_FILE=/var/run/opensips.pid

Создаем базу данных и таблицы
/usr/local/sbin/opensipsdbctl create
при создании дополнительных таблиц, чтобы они создались необходимо в файле
/usr/local/lib64/opensips/opensipsdbctl.base
# define what modules should be installed
EXTRA_MODULES, убрать проверку Emergency модуля

Создаем домен и UA
opensipsctl domain add sbc.example.ru
opensipsctl add 101@sbc.example.ru 101
opensipsctl add 102@sbc.example.ru 102

Установим rtpengine
git clone git://github.com/sipwise/rtpengine.git
apt-get install debhelper
apt-get install dh-make
apt-get install devscripts
apt-get install devscripts
dpkg-buildpackage –rfakeroot
dpkg -i *.deb
cat /etc/modules-load.d/modules.conf
nf_conntrack
nf_conntrack_ipv4
nf_conntrack_netlink
xt_RTPENGINE
depmod –a
-A INPUT -p udp -m udp --dport 30000:50000 -j RTPENGINE --id 0
echo 'add 0' > /proc/rtpengine/control
iptables -L -n –v105

Для компиляции radius клиента в opensips нужно:
mkdir freeRADIUS-client;
cd freeRADIUS-client
wget ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.7.tar.gz
tar -xzvf freeradius-client-1.1.7.tar.gz
cd freeRADIUS-client/freeradius-client-1.1.7.tar.gz
patch -p1 < /root/opensips_2_2/modules/aaa_radius/radius_async_support.patch
./configure
make
make install
cp include/freeradius-client.h /usr/include/freeradius-client.h
makefile FREERADIUS = 1
export LD_LIBARY_PATH="/usr/local/lib"
“/sbin/ldconfig -v"

Пример настройки конфигурации opensips скачать

Поделиться:

Добавить комментарий

3 + 8 =
Решите простой математический пример. Например для "два плюс четыре =?" введите "6".