在CentOS 8/CentOS 7上安装最新的Kamailio SIP服务器

时间:2020-02-23 14:30:45  来源:igfitidea点击:

本指南将在CentOS 7/CentOS 8 Linux服务器上安装最新的Kamailio SIP服务器。这是有关构建企业VOIP系统的系列教程的一部分。 Kamailio是SER的发行版,提供可扩展的SIP服务器,适用于从小型到电信级的安装。

Kamailio的功能

Kamailios与Asterisk之类的媒体服务器一起使用的主要优势是:Kamailio每秒可以处理超过5000个呼叫设置;仅使用4GB Ram系统就可以为300,000名活跃用户提供服务;添加更多Kamailio服务器可以轻松实现集群

Kamailio可以用作:
注册服务器
定位服务器
代理服务器
SIP应用服务器
重定向服务器

Kamailio的其他功能包括:

支持SIP和RTP流量的NAT遍历支持具有多种分发算法和故障转移支持的负载平衡提供灵活的成本最低的路由易于实现路由故障转移同时支持IPv4和IPv6SCTP多宿主和多流通信可通过UDP,TCP,TLS和SCTP进行通信摘要SIP用户身份验证提供事件基于记帐的数据可以存储到数据库,半径或者直径可扩展的Java,Python,Lua和Perl编程接口TLS支持SIP信令和SRTP的透明处理以实现安全音频

我们已经在以下方面对本指南进行了测试:Kamailio 5.xCentOS 7/CentOS 8

在CentOS 7/CentOS 8上安装Kamailio SIP服务器

在深入了解安装过程之前,让我们先了解有关Kamailio SIP Server的基础知识。

将SELinux设置为允许/禁用模式

如果我们不是SELinux爱好者,我建议我们将其置于"允许"模式:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

如果决定永久禁用它,则需要重新启动CentOS系统:

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
sudo reboot

重新引导后,确认SELinux状态:

$sestatus 
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

安装MariaDB数据库服务器

Kamailio需要数据库服务器才能运行。为此,请充分利用可以安装在CentOS 7/CentOS 8上的MariaDB数据库服务器:

sudo yum -y install mariadb-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

添加Kamailio RPM存储库

CentOS 8:

sudo wget -O /etc/yum.repos.d/kamailio.repo http://download.opensuse.org/repositories/home:/kamailio:/v5.3.x-rpms/CentOS_8/home:kamailio:v5.3.x-rpms.repo

在本文更新时,某些软件包不在CentOS 8存储库上。我必须在CentOS 8上使用Fedora 29存储库。如果我们遇到相同的问题,请通过运行以下命令来更改存储库。

sudo wget -O /etc/yum.repos.d/kamailio.repo http://download.opensuse.org/repositories/home:/kamailio:/v5.3.x-rpms/Fedora_29/home:kamailio:v5.3.x-rpms.repo

CentOS 7:

sudo wget -O /etc/yum.repos.d/kamailio.repo http://download.opensuse.org/repositories/home:/kamailio:/v5.3.x-rpms/CentOS_7/home:kamailio:v5.3.x-rpms.repo

在CentOS 8/CentOS 7上安装Kamailio SIP服务器

添加存储库后,在CentOS 8/CentOS 7 Linux上安装Kamailio SIP服务器。

sudo yum install vim kamailio kamailio-presence kamailio-ldap kamailio-mysql kamailio-debuginfo kamailio-xmpp kamailio-unixodbc kamailio-utils kamailio-tls kamailio-outbound kamailio-gzcompress

应该显示依赖关系树,我们可以按键盘上的键开始安装。

Dependencies resolved.
========================================================================================================================================================
 Package                           Arch                Version                                             Repository                              Size
========================================================================================================================================================
Installing:
 kamailio                          x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms              5.6 M
 kamailio-debuginfo                x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms              3.8 M
 kamailio-gzcompress               x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               19 k
 kamailio-ldap                     x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               99 k
 kamailio-mysql                    x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               74 k
 kamailio-outbound                 x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               24 k
 kamailio-presence                 x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms              673 k
 kamailio-tls                      x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms              187 k
 kamailio-unixodbc                 x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               39 k
 kamailio-utils                    x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               37 k
 kamailio-xmpp                     x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms               53 k
Upgrading:
 vim-common                        x86_64              2:8.0.1763-13.el8                                   AppStream                              6.3 M
 vim-enhanced                      x86_64              2:8.0.1763-13.el8                                   AppStream                              1.4 M
Installing dependencies:
 mysql-common                      x86_64              8.0.17-3.module_el8.0.0+181+899d6349                AppStream                              143 k
 mysql-libs                        x86_64              8.0.17-3.module_el8.0.0+181+899d6349                AppStream                              1.2 M
 unixODBC                          x86_64              2.3.7-1.el8                                         AppStream                              458 k
Installing weak dependencies:
 kamailio-debugsource              x86_64              5.3.3-4.1                                           home_kamailio_v5.3.x-rpms              3.7 M
Enabling module streams:
 mysql                                                 8.0                                                                                             

Transaction Summary
========================================================================================================================================================
Install  15 Packages
Upgrade   2 Packages

Total download size: 24 M
Is this ok [y/N]: y

确认已安装的Kamailio版本:

$kamailio -version
version: kamailio 5.3.3 (x86_64/linux) c918a3
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: c918a3 
compiled on 14:32:52 Mar 16 2017 with gcc 8.2.1

在CentOS 8/CentOS 7上配置Kamailio

编辑文件/etc/kamailio/kamctlrc并确保将DBENGINE变量设置为MySQL。删除井号以取消注释。

sudo vi /etc/kamailio/kamctlrc

将数据库引擎设置为MYSQL

DBENGINE=MYSQL
DBHOST=localhost

运行以下命令以创建Kamailio(架构)所需的用户和表。

$sudo kamdbctl create
MySQL password for root:
INFO: test server charset
INFO: creating database kamailio …
INFO: granting privileges to database kamailio …
INFO: creating standard tables into kamailio …
INFO: Core Kamailio tables succesfully created.
Install presence related tables? (y/n): y
INFO: creating presence tables into kamailio …
INFO: Presence tables succesfully created.
Install tables for imc cpl siptrace domainpolicy carrierroute
drouting userblacklist htable purple uac pipelimit mtree sca mohqueue
rtpproxy rtpengine secfilter? (y/n): y
INFO: creating extra tables into kamailio …
INFO: Extra tables succesfully created.
Install tables for uid_auth_db uid_avp_db uid_domain uid_gflags
uid_uri_db? (y/n): y
INFO: creating uid tables into kamailio …
INFO: UID tables succesfully created.

当要求输入root密码时,输入通过mysql_secure_installation配置的MySQL root用户密码。

对随后的所有问题回答"是"。 kamdbctl create命令将添加两个Mysql用户:

kamailio:具有密码。kamailiorw具有对Kamailio数据库的读/写访问权限。

kamailioro:此用户的密码为kamailioro。它具有对Kamailio数据库的只读访问权限。

接下来是编辑/etc/kamailio/kamailio.cfg来配置Kamailio:

sudo vi /etc/kamailio/kamailio.cfg

在#!KAMAILIO下方添加以下行。

#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_NAT
#!define WITH_PRESENCE
#!define WITH_ACCDB

启动Kamailio

sudo systemctl restart kamailio

启用服务以在启动时启动:

sudo systemctl enable kamailio

到此为止。现在,我们应该在CentOS 8/CentOS 7 Linux上拥有一个正在运行的Kamailio SIP服务器。

$systemctl status kamailio
● kamailio.service - Kamailio (OpenSER) - the Open Source SIP Server
   Loaded: loaded (/usr/lib/systemd/system/kamailio.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2017-05-03 16:35:23 EAT; 12s ago
 Main PID: 9648 (kamailio)
    Tasks: 41 (limit: 24003)
   Memory: 50.0M
   CGroup: /system.slice/kamailio.service
           ├─9648 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9649 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9650 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9651 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9652 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9653 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9654 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9655 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9656 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9658 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
           ├─9659 /usr/sbin/kamailio -DD -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 4
......