网站搜索

在 Ubuntu 20.04|18.04|16.04 上安装 Kamailio SIP 服务器


在本指南中,我将引导您完成在 Ubuntu 20.04/18.04/16.04 Linux 系统上安装和配置 Kamailio SIP 服务器的完整步骤。本指南是在 Linux 上构建企业开源 VOIP 系统的一部分。我们之前的指南是关于如何在 CentOS 7 上安装最新的 Kamailio SIP 服务器。因此,如果您是 CentOS 用户,请使用该链接了解安装步骤。

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

Kamailio 是 SER 的发行版,提供可扩展的 SIP 服务器

  • Kamailio 每秒可以处理超过 5000 个呼叫设置。
  • 只需 4GB RAM 系统即可为多达 300,000 名活跃订阅者提供服务。
  • 通过添加更多Kamailio服务器可以轻松实现集群

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

Kamailio 的其他功能包括:

  • SIP 和 RTP 流量的 NAT 穿越支持
  • 使用多种分布算法进行负载平衡和
    故障转移支持
  • 提供灵活的最低成本路由
  • 轻松实现路由故障切换
  • 同时支持 IPv4 和 IPv6
  • SCTP 多宿主和多流
  • 通信可以通过 UDP、TCP、TLS 和 SCTP 进行
  • 摘要 SIP 用户身份验证
  • 提供基于事件的会计
  • 数据存储可以是数据库、半径或直径
  • 可扩展的 Java、Python、Lua 和 Perl 编程接口
  • 对 SIP 信令的 TLS 支持和对安全音频的 SRTP 的透明处理

在 Ubuntu 20.04/18.04/16.04 上安装 Kamailio

以下是在 Ubuntu 18.04 系统上安装 Kamailio 的一些先决条件。

  • 安装的 MariaDB 服务器
  • Kamailio 存储库

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

首先使用以下命令在 Ubuntu 上安装 MariaDB Server:

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 -

然后根据您选择的 Kamailio 版本将存储库行添加到您的 /etc/apt/sources.list 文件中。我将添加截至撰写本文时最新版本的存储库 - 5.5

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

对于 Ubuntu 18.04

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

对于 Ubuntu 16.04

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

APT 存储库和相关操作系统的列表可在 http://deb.kamailio.org 上找到。

步骤 3:在 Ubuntu 20.04|18.04|16.04 上安装 Kamailio

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

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

按照提示继续安装

...
The following additional packages will be installed:
  default-mysql-client libmysqlclient21 mysql-client-8.0 mysql-client-core-8.0 mysql-common
Suggested packages:
  kamailio-berkeley-modules kamailio-cpl-modules kamailio-dbg kamailio-ldap-modules kamailio-lua-modules kamailio-perl-modules kamailio-postgres-modules kamailio-presence-modules
  kamailio-python-modules kamailio-radius-modules kamailio-snmpstats-modules kamailio-tls-modules kamailio-unixodbc-modules kamailio-xml-modules kamailio-xmpp-modules
The following NEW packages will be installed:
  default-mysql-client kamailio kamailio-mysql-modules libmysqlclient21 mysql-client-8.0 mysql-client-core-8.0 mysql-common
0 upgraded, 7 newly installed, 0 to remove and 42 not upgraded.
Need to get 12.6 MB of archives.
After this operation, 108 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

为了能够加载 websocket 模块,您必须安装包 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.5.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_BLOCKLIST, 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 9.3.0

步骤 4:在 Ubuntu 20.04|18.04|16.04 上配置 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=computingforgeeks.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 2018-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

如果您在使用 Kamailio 服务时遇到任何问题,可以在以下位置找到日志:/var/log/kamailio.log

下一篇要阅读的文章是:

  • 在 Ubuntu 上安装 Kamailio SIP 服务器的 Siremis Web 管理界面

相关文章: