在 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 管理界面