> 技术文档 > Kamailio服务器的安装与部署启用rtpproxy、rtpengine模块_kamailio代理sip

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-dev​sudo apt updateapt install libcurl4-openssl-dev libxml2-dev libpcre3-dev unzip​sudo apt updateapt install libjansson-dev libevent-dev libhiredis-dev​cd /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-dev​sudo apt updateapt install libxmlrpc-core-c3-dev libwebsockets-dev libiptc-dev libavfilter-dev libjson-glib-dev​sudo 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