众所周知 Kamailio 支持多租户,但官方文档关于多租户的介绍分散在很多地方,对新手来说,要熟练把握多租户方面的关键信息,确实不易。本文分享 REGISTRAR/AUTH/AUTH_DB/USRLOC 这几个常用模块多租户方面的经验。
做几个测试就可以直观地了解,什么叫多租户了。
先运行 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 路由脚本是不认证的)。
kamailio 收到的 SIP 注册消息如下:
REGISTER sip:demo1.com SIP/2.0
Via: SIP/2.0/UDP 192.168.31.166:54629;rport;branch=z9hG4bKPj2c89d35f26024834bb6a7f696517e002
Route: <sip:192.168.31.103;lr>
Max-Forwards: 70
From: <sip:1001@demo1.com>;tag=5ddf603694534646855549c3872c01de
To: <sip:1001@demo1.com>
Call-ID: 1dad57ab1b6348a788423cdf05fd29c7
CSeq: 14331 REGISTER
User-Agent: MicroSIP/3.21.4
Contact: <sip:1001@192.168.31.166:54629;ob>
Expires: 300
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Content-Length: 0
运行 kamcmd ul.lookup location 1001@demo1.com
,查用户位置信息,得到如下输出:
{
AoR: 1001
Contacts: {
Contact: {
Address: sip:1001@192.168.31.166:54629;ob
Expires: 60
Q: -1
Call-ID: 1dad57ab1b6348a788423cdf05fd29c7
CSeq: 14331
User-Agent: MicroSIP/3.21.4
Received: [not set]
Path: [not set]
State: CS_NEW
Flags: 0
CFlags: 0
Socket: udp:192.168.31.103:5060
Methods: 8159
Ruid: uloc-6709d372-558-5
Instance: [not set]
Reg-Id: 0
Server-Id: 0
Tcpconn-Id: -1
Keepalive: 0
Last-Keepalive: 1728698054
KA-Roundtrip: 0
Last-Modified: 1728698054
}
}
}
接着运行 kamcmd ul.lookup location 1001@demo2.com
,得到的结果跟上面完全一样。
也就是说,目前的路由完全不介意域名是什么。
运行下面这个 shell 文件,使能多租户:
echo '#!define WITH_MULTIDOMAIN' >> /etc/kamailio-local.cfg
重启 kamailio。(如果启动失败,修改 kamailio.cfg,把 domain 模块和模块参数都删除)
MicroSIP 重新注册。
运行 kamcmd ul.lookup location 1001@demo1.com,得到如下输出:
{
AoR: 1001@demo1.com
Contacts: {
Contact: {
Address: sip:1001@192.168.31.166:54629;ob
Expires: 290
Q: -1
Call-ID: e52be1029b5f4fffa48735b3ffe019e4
CSeq: 52257
User-Agent: MicroSIP/3.21.4
Received: [not set]
Path: [not set]
State: CS_NEW
Flags: 0
CFlags: 0
Socket: udp:192.168.31.103:5060
Methods: 8159
Ruid: uloc-6709dafa-6c2-1
Instance: [not set]
Reg-Id: 0
Server-Id: 0
Tcpconn-Id: -1
Keepalive: 0
Last-Keepalive: 1728699448
KA-Roundtrip: 0
Last-Modified: 1728699448
}
}
}
AoR 跟之前的对比,多了域名。
运行 kamcmd ul.lookup location 1001@demo1.com
能查到位置信息,但 kamcmd ul.lookup location 1001@demo2.com
,得到的却是:
error: 500 - AOR not found in location table
最后要提醒下,demo1.com
和 DEMO1.COM
这二个域名是完全等效的,kamailio 在处理域名时自动处理成了小写。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有