在CentOS 8/CentOS 7上安装最新的Kamailio SIP服务器
本指南将在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 ......