注:本人也是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 update
apt install gcc g++ flex bison libmysqlclient-dev make autoconf pkg-config libssl-dev
sudo apt update
apt install libcurl4-openssl-dev libxml2-dev libpcre3-dev unzip
sudo apt update
apt 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.gz
apt install git
git clone https://github.com/kamailio/kamailio.git
#编译安装kamailio
cd /kamailio
make PREFIX="/usr/local/kamailio" include_modules="db_mysql tls" cfg
make all
make install
Mysql安装
由于kamailio需要有配套数据库,建议使用mysql进行配套安装
#安装mysql,在写文档时间用此方法安装的mysql版本为8.0.42
sudo apt update
sudo 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/kamailio
nano kamailio.cfg
#确保下面这行没被注释
loadmodule "db_mysql.so"
#nano退出:Crtl + x — y — Enter
#修改kamctlrc
nano kamctlrc
#修改下列内容使其没被注释
DBENGINE=MYSQL
DBHOST=localhost
DBPORT=3306
DBNAME=kamailio
DBRWUSER="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
#启用/停用kamailio
cd /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 update
apt install libpcap-dev libswresample-dev libavcodec-dev libopus-dev libspandsp-dev libavformat-dev
sudo apt update
apt install libxmlrpc-core-c3-dev libwebsockets-dev libiptc-dev libavfilter-dev libjson-glib-dev
sudo apt update
apt install gperf pandoc libncurses5-dev libncursesw5-dev libxtables-dev libbcg729-dev libglib2.0-dev
#克隆源码
cd /data/package
git clone https://github.com/sipwise/rtpengine.git
cd rtpengine/daemon
make PREFIX="/usr/local/rtpengine"
#编译安装
make
make install
mkdir /etc/rtpengine
cp /usr/local/src/rtpengine-mr11.5.1.25/etc/* /etc/rtpengine/
# 加载内核模块
cd /usr/local/src/rtpengine-mr11.5.1.25/kernel-module
make && make install
modprobe 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.cfg
nano usr/local/kamailio/etc/kamailio.cfg
#————————————————
loadmodule "rtpengine.so"
……
modparam("rtpengine", "rtpengine_sock", "udp:127.0.0.1:2223")
#————————————————
rtpproxy的安装与运行
# 安装依赖
sudo apt update
sudo apt install git gcc make libevent-dev libpcap-dev libssl-dev libcurl4-openssl-dev
# 克隆源码
git clone https://github.com/sippy/rtpproxy
cd rtpproxy
git submodule update –init –recursive
# 编译安装
./configure –prefix=/usr/local
make
sudo make install
#启动rtpproxy监听
rtpproxy -l0.0.0.0 -sudp:localhost:7722 -m 33000 -M 35000 -F
#与kamailio配套使用时需要修改kamailio.cfg
nano /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
评论前必须登录!
注册