Kamailio服务器的安装与部署启用rtpproxy、rtpengine模块_kamailio代理sip
注:本人也是kamailio初学者,如果有错误的地方欢迎评论区指正。本文面向kamailio初学者,所以很多步骤写的非常详细,希望能给初学者一点小小的指引
本文参考:
1.CSDN用户实践详细步骤:Kamailio-SIP代理服务器单节点的安装与部署-CSDN博客
2.官方网站:Kamailio SIP 服务器项目 – 开源 SIP 服务器
3.博客园融合通信平台部署:kamailio+rtpengine安装部署 - 不着陆的牛 - 博客园
kamailio简单介绍
Kamailio是什么?
首先,Kamailio是一个SIP服务器,同时能够提供代理服务器,地址查询服务器,重定向服务器等功能。
Kamailio为开源项目,主要用于处理SIP协议。
Kamailio(前 OpenSER 和 SER 的继任者)是在 GPLv2+ 下发布的开源 SIP 服务器,每秒能够处理数千个呼叫设置。Kamailio 可用于构建 VoIP 和实时通信的大型平台 – 在线状态、WebRTC、即时消息和其他应用程序。此外,它可以轻松用于扩展 SIP 到 PSTN 网关、PBX 系统或媒体服务器,如 Asterisk™、FreeSWITCH™ 或 SEMS。
安装Kamailio前言
个人是建议从git库安装kamailio而非通过压缩包,本文仅提供git安装过程
官方 Kamailio v6.0git - 安装指南:从 Git 存储库安装 Kamailio 6.0.x 版本
为了避免不必要的报错,请务必启动root权限。如果遇到指令运行报错提示,请先尝试在指令前加 sudo
#开发环境说明:#Windows11、VMWare Workstation#Ubuntu 22.04 LTS#ip :192.168.138.132
kamailio安装
sudo su#宿主机代理export https_proxy=http://192.168.1.xxx:7890 http_proxy=http://192.168.1.xxx:7890#安装依赖项sudo apt updateapt install gcc g++ flex bison libmysqlclient-dev make autoconf pkg-config libssl-devsudo apt updateapt install libcurl4-openssl-dev libxml2-dev libpcre3-dev unzipsudo apt updateapt install libjansson-dev libevent-dev libhiredis-devcd /data/package#注:优先使用下面的语句#wget https://www.kamailio.org/pub/kamailio/5.6.5/src/kamailio-5.6.5_src.tar.gzapt install gitgit clone https://github.com/kamailio/kamailio.git#编译安装kamailiocd /kamailiomake PREFIX=\"/usr/local/kamailio\" include_modules=\"db_mysql tls\" cfgmake allmake install
Mysql安装
由于kamailio需要有配套数据库,建议使用mysql进行配套安装
#安装mysql,在写文档时间用此方法安装的mysql版本为8.0.42sudo apt updatesudo apt install mysql-server -y#登录mysql,默认没有密码直接回车即可mysql -u root -p#配置mysql密码,优先使用下面的语句#ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'123456\';ALTER USER \'root\'@\'localhost\' IDENTIFIED WITH \'mysql_native_password\' BY \'123456\'; FLUSH PRIVILEGES;#注:如果安装mysql时启用了密码策略,从而导致不能修改简单密码,可以尝试临时修改密码策略#查看密码策略#SHOW VARIABLES LIKE \'validate_password.%\';#设置策略等级为 LOW(仅检查长度)#SET GLOBAL validate_password.policy = 0;#修改完策略再去配置密码#修改kamailio配置,使其启用mysql模块cd /usr/local/kamailio/etc/kamailionano kamailio.cfg#确保下面这行没被注释loadmodule \"db_mysql.so\"#nano退出:Crtl + x -- y -- Enter#修改kamctlrcnano kamctlrc#修改下列内容使其没被注释DBENGINE=MYSQLDBHOST=localhostDBPORT=3306DBNAME=kamailioDBRWUSER=\"kamailio\"DBRWPW=\"123456\"
kamailio初始化操作与启动
#创建初始数据库cd /usr/local/kamailio/sbin./kamdbctl create#输入密码#第一次 选latin1#第二次 如果搭建的kamailio服务器需要用户的在线情况选y ,否则选n#第三次: #userblocklist: 存储多域名路由策略 #carrierroute & drouting: 运营商级路由规则(如按前缀匹配不同中继),管理呼叫路由逻辑 #pipelimit: 限制每个客户端能发起的并发请求数,防DDoS攻击 #userblocklist: 存储黑名单用户,拦截指定号码的呼叫 #purple: 集成第三方服务(如Jabber/XMPP)的状态订阅 #sca (Shared Call Appearance): 多设备共享同一号码的状态同步(如座机与手机同时振铃) #rtpproxy & rtpengine: 管理RTP媒体流(NAT穿透、转码、加密),确保语音/视频通畅 #mohqueue: 存储呼叫队列与等待音乐(Music on Hold)配置 #siptrace: 记录SIP信令全路径,用于故障诊断(ls类似traceroute)。 #htable:内存键值存储,用于实时计数器或临时会话状态。 #secfilter过滤恶意IP或异常流量规则。 #ims_icscfG/4G核心网中用户身份查询(IMS网络专用) #建议选y#第四次 一些和用户验证相关的,建议选y#以上,kamailio已经可以正确运行了,如果遇到kamailio成功运行但是终端无法连接的问题,见后文\"一些问题汇总\"#一些常用指令#创建用户sudo ./kamctl add zd01@192.168.138.132 123456#查看用户信息./kamctl db show subscriber#启用/停用kamailiocd /usr/local/kamailio/sbin./kamctl start/stop#查看日志tail -F /var/log/syslog
rtpproxy和rtpengine简单介绍
rtpproxy和rtpengine都是处理试试传输协议(RTP)的工具。其中rtpproxy是轻量级媒体代理,专注与基础RTP转发和NAT穿透,资源占用比较低。而rtpengine是高性能媒体代理,主要支持SRTP加密,转码等,适用于大型并发场景
rtpengine的安装与运行
#安装依赖库sudo apt updateapt install libpcap-dev libswresample-dev libavcodec-dev libopus-dev libspandsp-dev libavformat-devsudo apt updateapt install libxmlrpc-core-c3-dev libwebsockets-dev libiptc-dev libavfilter-dev libjson-glib-devsudo apt updateapt install gperf pandoc libncurses5-dev libncursesw5-dev libxtables-dev libbcg729-dev libglib2.0-dev#克隆源码cd /data/packagegit clone https://github.com/sipwise/rtpengine.gitcd rtpengine/daemonmake PREFIX=\"/usr/local/rtpengine\"#编译安装makemake installmkdir /etc/rtpenginecp /usr/local/src/rtpengine-mr11.5.1.25/etc/* /etc/rtpengine/# 加载内核模块cd /usr/local/src/rtpengine-mr11.5.1.25/kernel-modulemake && make installmodprobe xt_RTPENGINE#启动rtpengine,内核态无法启动时sudo modprobe xt_RTPENGINE#参数记得改./rtpengine -n 127.0.0.1:7722 --interface=pub/10.10.28.131 --interface=priv/192.168.28.131 --log-facility=local3 --num-threads=32 --tos=184#想要启用kamailio集成rtpengine模块,需要修改kamailio.cfgnano usr/local/kamailio/etc/kamailio.cfg#------------------------------------------------loadmodule \"rtpengine.so\"......modparam(\"rtpengine\", \"rtpengine_sock\", \"udp:127.0.0.1:2223\")#------------------------------------------------
rtpproxy的安装与运行
# 安装依赖sudo apt updatesudo apt install git gcc make libevent-dev libpcap-dev libssl-dev libcurl4-openssl-dev# 克隆源码git clone https://github.com/sippy/rtpproxycd rtpproxygit submodule update --init --recursive# 编译安装./configure --prefix=/usr/localmakesudo make install#启动rtpproxy监听rtpproxy -l0.0.0.0 -sudp:localhost:7722 -m 33000 -M 35000 -F#与kamailio配套使用时需要修改kamailio.cfgnano /usr/local/kamailio/etc/kamailio.cfg#------------------------------------------------loadmodule \"rtpproxy.so\"modparam(\"rtpproxy\", \"rtpproxy_sock\", \"udp:127.0.0.1:7722\") # 控制端口modparam(\"nathelper\", \"natping_interval\", 30) # NAT保活间隔#------------------------------------------------
一些问题汇总
#kamailio已经跑了但是客户端连不上#可能是防火墙没关#检查防火墙状态sudo ufw status#Action ALLOW说明防火墙打开#关闭防火墙sudo ufw disable