公网Kamailio 代理 freeswitch 和做 sbc

1.环境:

本文测试Kamailio 5.2  freeswitch 1.10.3    fs 和 kamailio 部署在阿里云公网ip:47.xx  内网172.xx

官方文档http://kb.asipto.com/freeswitch:kamailio-3.3.x-freeswitch-1.2.x-sbc

2.安装:

https://kamailio.org/docs/tutorials/5.2.x/kamailio-install-guide-git/  5.2 其他的版本到https://www.kamailio.org/w/documentation/

一步步操作就行 

fs 安装好  官方也有文档

3.官方说明

Following services are handled in the scenario built within document:

  • kamailio

    • user authentication

    • user registration

    • user location

    • call routing

    • instant messaging and presence

  • freeswitch

    • voicemail

    • conference

    • SBC - this can be used for topology hiding, transcoding, prepaid or playing audio messages within calls

    • other media services (announcement, ivr, a.s.o)

配置参考上面地址的就行主要是WITH_FREESWITCH 定义的地方全拷过去

里面 freeswitch.bindip配置为外网ip 端口用sip的internal_sip_port   

注意下这个拨号的规定就行

switch($rU) {
		case /"^41$":
			# 41 - voicebox menu
			# allow only authenticated users
			if($au==$null)
			{
				sl_send_reply("403", "Not allowed");
				exit;
			}
			$rU = "vm-" + $au;
		break;
		case /"^441[0-9][0-9]$":
			# starting with 44 folowed by 1XY - direct call to voice box
			strip(2);
			route(FSVBOX);
		break;
		case /"^433[01][0-9][0-9]$":
			# starting with 433 folowed by (0|1)XY - conference
			strip(2);
		break;
		case /"^45[0-9]+$":
			strip(2);
		break;
		default:
			# offline - send to voicebox
			if (!registered("location"))
			{
				route(FSVBOX);
				exit;
			}
			# online - do bridging
			prefix("kb-");
			if(is_method("INVITE"))
			{
				# in case of failure - re-route to FreeSWITCH VoiceMail
				t_on_failure("FAIL_FSVBOX");
			}
	}

注意下会议的拨号433000  和相互拨打的会加个prefix("kb-")前缀  fs日志看的到的到时候

 

启动kamailio 没错误就行

./sbin/kamailio -P /var/run/kamailio/kamailio.pid -m 128 -M 12

最后添加100 101两个用户

3.fs配置

修改conf/vars.xml里面的

 

<X-PRE-PROCESS cmd="set" data="internal_auth_calls=false"/>  false

修改conf/autoload_configs/acl.conf.xml 为kamailio内网ip 和外网ip

 <list name="domains" default="deny">
       <node type="allow" domain="$${domain}"/>
       <node type="allow" cidr="47.xx.xx.xx/32"/>
 <node type="allow" cidr="172.xx.xx.xx/32"/>
</list>

修改 conf/dialplan/public.xml 注意为kamailio外网ip

 <extension name="from_kamailio">
      <condition field="network_addr" expression="^47\.xx\.xx\.xx$" />
      <condition field="destination_number" expression="^(.+)$">
        <action application="transfer" data="$1 XML default"/>
      </condition>
    </extension>

 conf/dialplan/default.xml

 <extension name="vbox">
      <condition field="destination_number" expression="^vb-(1[0-9][0-9])$">
	    <action application="answer"/>
	    <action application="voicemail" data="default ${domain_name} $1"/>
      </condition>
    </extension>
 
    <extension name="vmenu">
      <condition field="destination_number" expression="^vm-(1[0-9][0-9])$">
	    <action application="voicemail" data="check default ${domain_name} $1"/>
      </condition>
    </extension>
 
    <extension name="kbridge">
      <condition field="destination_number" expression="^kb-(.+)$">
		  <action application="set" data="proxy_media=true"/>      mod_sofia的proxy sdp 地址获取是空的 日志可以看到  sofia_glue.c:1620 sofia/internal/100@xx:6060 sending invite version: 1.10.3-release  64bit 
		  <action application="set" data="call_timeout=50"/>
		  <action application="set" data="continue_on_fail=true"/>
		  <action application="set" data="hangup_after_bridge=true"/>
		  <action application="set" data="sip_invite_domain=192.168.178.23"/>//这里改成kamailio外网
		  <action application="export" data="sip_contact_user=ufs"/>
		  <action application="bridge" data="sofia/(fs外网IP)/$1@192.168.178.23"/>//这里改成kamailio外网
		  <action application="answer"/>
		  <action application="voicemail" data="default ${domain_name} $1"/>
      </condition>
    </extension>

好的基本可以了

100 用户登陆可以测试呼叫433000  参加会议

100 用户登陆可以测试呼叫101  相互通话 

注意下default.xml的配置和fs 的nat 问题就没问题了

 

还可以 使用kamailio的pike 对注册ip的限制  屏蔽一些国外的不断注册 invite 也是如此 

你还可以用2个kamailio做数据共享(dmq)多个代理

sbc用load_dispatcher 2个fs 共享数据库就行

 

交流群261074724 或技术help https://shop121230895.taobao.com/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值