本文内提到的《Kamailio实战》,您可关注小樱桃科技公众号,在菜单栏选择小樱桃商城跳转购买。 Kamailio 是一款非常强大的 SIP 代理服务器,Kamailio 一般转发 SIP 信令,不主动产生和发送 SIP 信令。 但有时您可能希望 Kamailio 向 IPPBX 注册、主动发 SIP 消息,等等,也就是让 Kamailio 起到客户端的作用,这就需要用到 UAC 模块。 之间始终保持 1001 是主叫,1002 是被叫,Kamailio 跟 UAS 之间始终都是 alice 是主叫,bob 是被叫。 uac_auth 是 Kamailio 自己完成 SIP 认证(而不是转发 UAC 认证请求)。
官方详解图:https://kamailio.org/docs/modules/5.7.x/modules/rr.html UAC Kamailio PROXY 同网段路由 UAC、Kamailio 以及 UAS 都在同一个网段,这种情况下的路由非常简单,调用 record_route() 之后,Kamailio 自动加上自己的 IP 地址和端口。 ,FreeSWITCH 看到 Kamailio 的内网地址。 单 rr 显然只能给 Kamailio 的公网地址,但 FreeSWITCH 虽然通常跟 Kamailio 同在一个内网网段,这就需要 FreeSWITCH 能访问 Kamaialio 的外网地址。 Kamailio 单网卡。
Kamailio有很多小技巧,这里略举一二,作抛砖引玉之用。 uri == myself 编辑/etc/kamailio/kamailio.cfg debug=3 log_stderror=yes children=1 listen=udp:0.0.0.0:5060 cat /etc/hosts 127.0.0.1 localhost 192.168.100.132 fs cat /etc/kamailio/kamailio.cfg dns_use_search_list is_method("REGISTER|PUBLISH")) consume_credentials(); } } Native和Lua互相调用 编辑/etc/kamailio/kamailio.cfg "\n") end ``` 编辑`/etc/kamailio/test.lua` ```lua KSR.info("Hello, Kamailio\n") KSR.pv.sets("$var(luaret
Kamailio:https://www.kamailio.org/(起源于SER)是一个开源的SIP服务器,主要用作SIP代理服务器、注册服务器等,即只处理信息,不处理媒体。 Kamailio name. 下面是一些真实发音: http://blog.miconda.eu/2009/11/kamailio-pronunciation.html http://www.kamailio.net/pub/kamailio_pronounciation 参见:https://www.kamailio.org/w/openser-renamed-to-kamailio/ 。 在使用Kamailio的过程中,我们经常与FreeSWITCH做比较。 ,可以继续看Kamailio新手指南:http://www.kamailio.org.cn/blog/2022/06/beginners-guide/
本次更新主要内容如下: Resources for Kamailio version 5.6.1 Source tarballs are available at: https://www.kamailio.org /pub/kamailio/5.6.1/src/ Detailed changelog: https://www.kamailio.org/pub/kamailio/5.6.1/ChangeLog Download via GIT: # git clone https://github.com/kamailio/kamailio kamailio # cd kamailio # git checkout - pub/kamailio/5.6.1/ Modules’ documentation: https://www.kamailio.org/docs/modules/5.6.x/ What is new in 5.6.x release series is summarized in the announcement of v5.6.0: https://www.kamailio.org/w/kamailio-v5
以查找注册用户的信息为例,Kamailio的命令如下: kamcmd ul.lookup location 1001@192.168.100.173 { AoR: 1001 其中Cflags保存的是分支标志,上面的例子Kamailio的分支标志是64,一般在Kamailio.cfg的开头几行能找到这样的定义: #! Kamailio的usrloc模块可以配置KeepAlive参数,服务器周期性探测客户端是否在线,这样Contact里面多了几个跟KeepAlive有关的参数。 上面给的都是外部程序调用,但其实在路由脚本里面调用Kamailio的RPC或者OpenSIPS的MI,都是很方便的。 以上代码在Kamailio5.5.5和OpenSIP3.2.8下测试通过。
下面,我们使用kamailio/kamailio-ci:5.5.2-alpine这个Docker镜象,来自 https://hub.docker.com/r/kamailio/kamailio-ci 。 docker create --name kamailio kamailio/kamailio-ci:5.5.2-alpinedocker cp kamailio:/etc/kamailio /tmp/ 如果你还觉得不过瘾,下面是Kamailio的一些资源列表: Kamailio网站:https://www.kamailio.org/ Kamailio源代码仓库:https://github.com/kamailio /kamailio Kamailio工单:https://github.com/kamailio/kamailio/issues Kamailio Github:https://github.com/kamailio / OpenSER改名为Kamailio:https://www.kamailio.org/w/openser-renamed-to-kamailio/ Kamailio的历史:https://www.kamailio.org
Kamailio中的nats模块 Kamailio 作为一个开源的 SIP 服务器,NATS 作为一个性能极高的消息传递系统,两者的结合实现了高效的消息传递和事件处理。 Kamailio 中实现了一个名为 nats 模块,可以轻松地集成 Kamailio 和 NATS,实现二者之间的通信,以提供更高效的消息传递和事件处理。 nats 模块实现的功能 nats 模块具体的可提供如下功能: Kamailio 作为一个 Publisher,将 SIP 消息发布到 NATS,以便其他应用程序订阅并处理这些消息。 Kamailio 作为一个 Subscriber,向 NATS 订阅消息,以便 Kamailio 可以接收并处理其他应用 pub 的事件消息。 提供异步处理和事件驱动的通信模式。 通过结合 Kamailio 和 NATS,可以实现更灵活和可扩展的 SIP 通信解决方案,同时利用 NATS 的高性能消息传递机制来处理实时事件和消息。
先运行 apt install -y kamailio kamailio-* 安装 kamailio 和相应的模块。 运行下面这个 shell 文件,以便产生 /etc/kamailio-local.cfg: #! /bin/bash echo 'alias=demo1.com' > /etc/kamailio-local.cfg 现在启动 kamailio,目前关闭了多租户。 启动 MicroSIP,代理填 kamailio 的 IP 地址,域名填 demo1.com,用户名填 1001, 密码任意(目前的 kamailio 路由脚本是不认证的)。 define WITH_MULTIDOMAIN' >> /etc/kamailio-local.cfg 重启 kamailio。
Kamailio 是一款开源的 SIP 服务器,用于构建大规模实时通信平台。 以下是一些常用的 Kamailio 预处理器指令及其功能: include_file、import_file include_file 包含文件,该文件必须存在,否则就启动失败。 import_file 也是包含文件,但该文件可以存在,也可以不存在(kamailio 继续运行)。 包含文件的好处主要是可以把路由脚本拆成若干文件,增强可读性,也方便维护。 设置环境变量 再运行 kamailio,等 kamailio 成功启动之后,再运行 kamcmd core.ppdefines_full,输出内容为(节选): { name: KAM_SIP_PORT subst "/DBNAME/kamailio/g" # 数据库名字替换为 kamailio, g 代表全局替换 #!subst "/DBPASSWD/xyz/" # 数据库密码替换为 xyz #!
/pub/kamailio/latest-5.8.x/src/ Binary packages for several distributions can be found at: https://www.kamailio.org /pub/kamailio/latest-5.8.x/bin/ https://www.kamailio.org/pub/kamailio/latest-5.8.x/packages/ https:// www.kamailio.org/wikidocs/packages/debs https://www.kamailio.org/wikidocs/packages/rpms Packages will wiki docs: https://www.kamailio.org/wikidocs/ Migration guide: https://www.kamailio.org/wiki/install 5.8.x from GIT repository Commit ChangeLog for Kamailio 5.8.0 Kamailio 5.7.x Release Notes – the previous
错误提示是 invalid separator in transformation: value,c,, 这个函数非常有用,比如我们可以在 FreeSWITCH 里面配置一个网关,realm 指向 Kamailio --Kamailio--> <param name="contact-params" value="gwaddr=192.168.1.200:5060"/> <! --IMS--> Kamailio 的 request 路由可以这样写: route[SRC_FREESWITCH] { $var(params) = $(sel(contact.uri.params
Ubuntu 12.04 安装 Kamailio服务器 官方参考:http://www.kamailio.org/wiki/install/4.0.x/git Ubuntu 12.04 下编译Kamailio # SIP_DOMAIN=kamailio.org/SIP_DOMAIN=kamailio.org/g'/usr/local/etc/kamailio/kamctlrc # 修改配置文件kamailio.cfg define WITH_MYSQL' /usr/local/etc/kamailio/kamailio.cfg sudo sed -i '1i #! define WITH_AUTH'/usr/local/etc/kamailio/kamailio.cfg sudo sed -i '1i #! define WITH_USRLOCDB'/usr/local/etc/kamailio/kamailio.cfg sudo kamdbctl create 安装完成以后,可以增加用户。
版本: kamailio-5.5.4 freeswitch-1.10.0 使用docker容器搭建这个环境,方便多服务的启动和打包验证,虽然之前也做了一次,但上一次做kamailio代理freeswitch Freeswitch IPS 2 sip:192.168.16.35:5060 4 sip:192.168.16.35:5060 出现的问题 1、主叫CANCEL转不到被叫客户端 2、主、被叫挂断,FS一直给KAMAILIO 发送DECLINE 3、主、被叫接听,FS一直给KAMAILIO发送200 OK,由于被叫的ACK没有转发到KAMAILIO,转发失败的原因是kamailio转出来的200OK的报文中,多了一个Record-route endif kamailio.cfg配置文件中,主要修改两个点: 1、转发呼叫给FS; 2、对从FS转回来的报文,不能做鉴权,需要在AUTH中修改逻辑: route[AUTH] { #! route(FROMFREESWITCH))) { route(CALLS); exit; } } freeswitch和kamailio容器的启动方式不同,产生了好些问题,使用host
Kamailio跟注册、认证以及用户位置有关的模块,常见的就是registrar、auth、auth_db以及usrloc等,尽管有官方手册,但是要熟练掌握是需要一个过程的。 ul里面CFlags为0(没有NAT),也没有Received字段,在lookup()执行成功之后,ru等于ul里面的Address(Kamailio可直达),du为空, 值得注意的是,由于网络和终端的复杂性 Kamailio碰到这种场景就可以完美处理了。 - 自动unregister掉线的sip客户端 - usrloc模块有ka机制,也就是Kamailio周期性的发sip ping给sip客户端,如果对方掉线了Kamailio没有收到回应,那么就自动unregister 自己,同时增加下面三个参数: lhst 就是ua的位置信息 lm bf 分支标志 IP PBX呼叫user的时候会自动把INVITE请求发到Kamailio,并带回lhst、lm和bf等参数。
Kamailio只代理SIP就是指处理通信的建立和分发,一台Kamailio后端可以放很多的FreeSWITCH。 这样前面放一个Kamailio,后端可以放很多FreeSWITCH进行通信。 当然Kamailio需要主备高可用,而Kamailio和FreeSWITCH之间是用Load Balance,这样用HA+负载分担的方式就完成了一种比较大的通信集群。 我们使用的是Kamailio+Lua。 在应用侧我们就使用了NATS。 我们使⽤Kamailio做Ingress,负责信令进来。
在本书讨论的Kamailio,可以认为是一个SIP路由器。 简单来说,Kamailio的路由就是控制SIP包从哪里来,到哪里去。 一旦选择了正确的路线,就可以继续前往“目的地”,当然,在Kamailio中,“目的地”对应的是CB这条中继,B也称为C的“下一跳”(Next Hop)。 这在Kamailio网关上称为“双平面”。这种架构下,C1或C2其中一个城市发生疫情不影响ABD之前的交通(通信)。 在第一张图中,如果把C换成Kamailio网关,ABD换成电话交换机或,把城市里的“人”换成“电话”,那么,在Kamailio(C)的中继AC上来了一通电话,这通电话是A(呼叫源)打来的,主叫号码是A, “注:本文来自《Kamailio实战》。”
in /opt/kamailio-1.5.0 make prefix=/opt/kamailio-1.5.0 make prefix=/opt/kamailio-1.5.0 modules=modules =/opt/kamailio-1.5.0 modules=modules/db_mysql install Add a symbolic link for /opt/kamailio-1.5.0 ln -sf /opt/kamailio-1.5.0/ /opt/kamailio Edit Kamailio Database Settings cd /opt/kamailio/etc/kamailio/ Configuration of Kamailio cd /opt/kamailio/etc/kamailio mv kamailio.cfg kamailio.cfg.default emacs kamailio.cfg this udp 0 0 127.0.0.1:5062 0.0.0.0:* 16269/kamailio Check your route table Seems broken in Kamailio
最近在调研SIP代理、SIP集群和媒体集群的能力,了解到OV500这个项目,对理解Freeswitch的能力,Kamailio作为信令代理的配置等实现的学习还是很有帮助的,这个GITHUB项目地址:OV500 的日志; 单个kamailio代理多个freeswitch时,freeswitch由于收不到ACK,导致30s自动挂断问题解决,主要通过升级kamailio 到5.3.3版本解决,原来的版本号是:4.4.6 ,调通一对一的语音通话和会议模式通话; 多个kamailio集群时,能进行语音通话,主要在freeswitch收到sip代理转发的呼叫后,通过location定位被叫用户在sip代理的位置,进行转接呼叫 最后,验证一种场景,kamailio+rtpproxy, 通过rtpproxy隐藏freeswitch核心交换媒体流的ip,也就是freeswitch只在中心骨干网内部流转,验证确实是可行的,但kamailio ; SIP代理的主要开源产品有:opensips、kamailio、opensers,单台sip代理服务器能注册1W的用户; 媒体服务器主要提供媒体协商、转码和RTP数据交换功能; 媒体服务器的主要开源产品有
http://www.kamailio.oorg.cn - Kamailio中文社区。 http://rts.cn - RTS实时解决方案社区,包含FreeSWITCH和Kamailio、OpenSIPS等,探讨开源与商业解决方案的完美结合。 FreeSWITCH | FreeSWITCH的朋友们 https://github.com/sipcapture/awesome-hep AweSome Friend https://github.com/kamailio /kamailio SIP Proxy https://github.com/OpenSIPS/opensips SIP Proxy https://github.com/cgrates/cgrates