如何在Ubuntu 20.04/18.04/16.04上安装Kamailio SIP服务器

时间:2020-02-23 14:44:42  来源:igfitidea点击:

在本教程中,我将通过完整的步骤来在Ubuntu 20.04/18.04/16.04 Linux系统上安装和配置Kamailio SIP服务器。
本教程是在Linux上构建企业开源VoIP系统的一部分。
我们之前的教程是如何在CentOS 7上安装最新的Kamailio SIP服务器7.因此,如果我们是CentOS用户,请使用链接进行安装步骤。

简介 - 什么是Kamailio SIP服务器?

Kamailio是SER的分发,提供可扩展的SIP服务器,适用于载体等级安装。
Kamailio在C中开发并在Linux/UNIX系统上运行。
Kamailio与Asterisk这样的媒体服务器使用的主要优点是:Kamailio可以处理每秒5000多个呼叫设置.CAN提供高达300,000个活动用户,只需添加更多Kamailio服务器即可轻松实现CLUSTING

Kamailio可以用作:Registrar Server 位置服务器 代理服务器 SIP应用程序服务器 重定向服务器

Kamailio的其他功能是:NAT遍历SIP和RTP业务量平衡,具有许多分发算法和故障转移支持的灵活性最少的成本路由,以实现路由故障支持IPv4和IPv6SCTP多宿用和多流式传输可以超过UDP,TCP,TLS,和SCTPIGEST SIP用户身份验证基于事件的AccountingData存储可以是数据库,RADIUS或者DIATEREXTESIBLE JAVA,Python,LUA和PERL编程Interfacetls支持SIP信令和SRTP用于安全音频的SRTP

在Ubuntu 20.04/18.04/16.04上安装Kamailio

以下是安装ubuntu 18.04 system的kamailio的预先列出.LALLED MARIADB Serverkamailio存储库

第1步:安装MariaDB数据库服务器

首先使用命令在Ubuntu上安装MariaDB服务器:

sudo apt update
sudo apt install mariadb-server

第2步:添加Kamailio APT存储库

添加以下Kamailio存储库以用于安装Kamailio SIP代理服务器。

但首先,下载并将GPG键添加到APT键列表:

wget -O- http://deb.kamailio.org/kamailiodebkey.gpg | sudo apt-key add 

然后将存储库行添加到 /etc/apt/sources.list文件取决于我们选择的Kamailio版本。
我将为此写作添加最新版本的存储库 - 5.3:

适用于Ubuntu 20.04/18.04

sudo tee /etc/apt/sources.list.d/kamailio.list<<EOF
deb http://cz.archive.ubuntu.com/ubuntu bionic main 
deb     http://deb.kamailio.org/kamailio53 bionic main
deb-src http://deb.kamailio.org/kamailio53 bionic main
EOF

对于Ubuntu 16.04.

sudo tee /etc/apt/sources.list.d/kamailio.list<<EOF
deb     http://deb.kamailio.org/kamailio53 xenial main
deb-src http://deb.kamailio.org/kamailio53 xenial main
EOF

APT存储库列表和关联的操作系统可在http://deb.kamailio.org上获得

第3步:在Ubuntu上安装Kamailio 20.04/18.04/16.04

配置存储库后,更新系统并安装Kamailio。
我们还将安装Kamailio MySQL模块:

sudo apt update
sudo apt install kamailio kamailio-mysql-modules

为了能够加载WebSocket模块,我们必须安装Package Kamailio-WebSocket-Modules:

sudo apt install kamailio-websocket-modules kamailio-tls-modules

完成上述命令后,我们可以检查是否 kamailio应用程序可用并确认已安装的版本使用 kamailio -V

$which kamailio
/usr/sbin/kamailio
$kamailio -V
version: kamailio 5.3.3 (x86_64/linux)
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: unknown
compiled with gcc 7.3.0

第4步:配置Kamailio

编辑文件 /etc/kamailio/kamctlrc并确保 DBENGINE变量设置为mysql。
除掉 #符号取消注释它。

将数据库引擎设置为MySQL

$sudo vim /etc/kamailio/kamctlrc
DBENGINE=MYSQL
DBHOST=localhost

接下来是为MySQL创建数据库。
下面的命令将由Kamailio(架构)创建用户和表

$sudo kamdbctl create
MySQL password for root: 
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? (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.

系统将提示我们提供MySQL root密码。
上述命令添加的MySQL用户和密码是。

Kamailio与密码 kamailiorw
它对Kamailio数据库具有读/写访问权限。
Kamailioro:此用户的密码是 kamailioro
它只读了Kamailio数据库的访问权限。

/etc/kamailio/kamailio.cfg是Kamailio的配置文件。
编辑它以启用其附带的一些功能。

我们还可以设置SIP域:

$sudo vim /etc/kamailio/kamctlrc
## your SIP domain
SIP_DOMAIN=theitroad.com

如果我们在本地网络上有一个工作DNS服务器,则可以使用IP地址代替域名。

添加以下行以下#!Kamailio。

$sudo vim /etc/kamailio/kamailio.cfg
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_ACCDB

这些指令将打开必要的模块。
例如,当我们指定时, WITH_MYSQL它可以加载mysql.so:

#!ifdef WITH_MYSQL
loadmodule "db_mysql.so"
#!endif

然后重新启动Kamailio服务:

sudo systemctl restart kamailio

KAMAILIO服务应运行,我们可以使用:

$systemctl status kamailio
● kamailio.service - Kamailio (OpenSER) - the Open Source SIP Server
   Loaded: loaded (/lib/systemd/system/kamailio.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-07-27 18:15:20 UTC; 2min 59s ago
  Process: 14062 ExecStart=/usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP (code=exi
 Main PID: 14075 (kamailio)
    Tasks: 40 (limit: 4704)
   CGroup: /system.slice/kamailio.service
           ├─14075 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio
           ├─14083 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio
           ├─14084 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio
           ├─14085 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio
           ├─14086 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio
           ├─14087 /usr/sbin/kamailio -P /var/run/kamailio/kamailio.pid -f /etc/kamailio/kamailio.cfg -m 64 -M 8 -u kamailio -g kamailio