针对异地组网:FreeSWITCH(总部)+潮流小型IPPBX(分支机构)+终端解决方案、配置
在实际的公司应用中,经常会遇到异地的分支机构之间的通话需求,在这种环境下可以用FreeSWITCH作为汇接局的软交换系统,将多地的分支机构进行链接。作为汇接局的FreeSWITCH一般都是放在公网上,当然也可以在前面加防火墙,放在nat环境内。不过,在本片文章中为了更直观和更简单的配置,就将FreeSWITCH放到公网的阿里云上,这样方便读者去实现和配置(当然你要有自己的公网环境也可以)。
估计会有人提,既然我有公网的FreeSWITCH了,我直接将所以分机都注册的FreeSWITCH上不是更简单?
其实答案不是更简单,反而一点也不简单。下面我们来对比下两种方案:
方案一、分支机构通过公网直连FreeSWITCH
优点:
- 统一管理部署较简单。
- 每个分支会节省一个PBX的成本。
缺点:
- 如通过总部联接全部分支机构,大量内部通信交由Freeswitch处理,会大幅度额外增加企业总部带宽费用,容易形成通讯瓶颈,语音质量也较难保障。
- 分支机构扩大,会持续加重这一负担。
方案二、通过UCM61xx IPPBX星形组网
优点:
- 无论用户多少,每个分支之间都不互相干扰。
- 方便IT网管管理和添加用户。
- 号码段简短,而且每个分支都有自己特定的前缀号码,可以通过前缀判断来电分支。
- 公网的FreeSWITCH带宽和CPU压力小,只有两个分支机构之间的通话才到FreeSWITCH。
- 可以平滑扩容和迁移。
缺点:
- 配置相对稍微复杂点。
- 每个分支需要单独购买个PBX。
分析完毕,相信每个人都有自己的判断吧。一般能有异地分支通话的机构,人员肯定不会少。所以,还是方案二更加合理,下面就是方案二的一个简单的网络结构图:
- 本文的阿里云服务在IP设定为:10.0.0.1/24
- 分支机构1向阿里云注册的SIP帐号为:1001
- 分支机构2向阿里云注册的SIP帐号为:1002
- 其他分支拨打分支机构1需要加前缀为:2
- 其他分支拨打分支机构2需要加前缀为:3
如上图所示,分支机构的潮流PBX通过SIP网关注册的阿里云的FreeSWITCH上面,而潮流网络话机注册到本地分支机构。当本分支机构内部相互通讯,只需要拨打3位的分机号码就可以,如801;当需要拨打其他分支机构的电话需要加对应的字冠号,如3801。
当拨打同分支机构电话:
这种情况下,A(801)呼叫B(802),只通过潮流PBX即可完成整个呼叫流程。这样也减轻汇接局的FreeSWITCH压力,并且响应更快。
当拨打异地分支机构电话:
如上图所示,A(801) 呼叫B(3801),用户A先将呼叫送到潮流PBX(分支1)上,然后匹配路由,找到对应线路,然后送到阿里云的FreeSWITCH上;FreeSWITCH收到此呼叫,匹配路由对应到线路(分支2),然后将呼叫送到潮流PBX(分支2)上;当潮流PBX收到呼叫,根据对应的被叫号码,匹配到对应的话机用户B,并且来电显示为2801。到此整个呼叫流程走完。
具体配置如下:
潮流PBX(分支1)配置:
1、sip注册到阿里云服务器
进入基本/呼叫路由
--> VoIP中继
--> 新建SIP中继
--> 填写 提供商名称
、 主机
、取消勾选使用中继CID
。
- 提供商名称:根据自己习惯填写;
- 主机:填写阿里云服务器ip;
- 用户名和密码:填写阿里云分配的,在本例子中用户名就是1001。
如下图,配置完成后点击保存。
2、在PBX添加sip用户
进入基本/呼叫路由
--> 分机
--> 创建新SIP分机
--> 填写分机
、权限
、SIP/IAX密码
。
- 分机:在本例中为801;
- 权限:为内部;
- SIP/IAX密码:根据自己需求更改。
3、话机注册到PBX
4、PBX路由配置
出局路由
进入基本/呼叫路由
--> 出局路由
--> 新建出局规则
--> 填写呼叫规则名字
、匹配模式
、特权等级
、使用中继
、前缀
。
- 呼叫规则名称:可以根据自己需求填写;
- 匹配模式:在此例子中填写3xxx;
- 特权等级:选择内部;
- 使用中继:选择在第一步sip注册的中继;
- 前缀:填写2。
入局路由
进入基本/呼叫路由
--> 入局路由
--> 新建入局规则
--> 填写中继
、特权等级
、默认目的地
、DID目的地
。
- 中继:选择在第一步sip注册的中继;
- 特权等级:选择内部;
- 默认目的地:选择通过DID至本地分机。
潮流PBX(分支2)配置:(以下配置参考分支1相应的配置界面)
1、sip注册到阿里云服务器
进入基本/呼叫路由
--> VoIP中继
--> 新建SIP中继
--> 填写 提供商名称
、主机
、 取消勾选使用中继CID
。
- 提供商名称:根据自己习惯填写;
- 主机:填写阿里云服务器ip;
- 用户名和密码:填写阿里云分配的,在本例子中用户名就是1002,配置完成后点击保存。
2、在PBX添加sip用户
进入基本/呼叫路由
--> 分机
--> 填写分机
、权限
、SIP/IAX密码
。
- 分机:在本例中为801;
- 权限:为内部;
- SIP/IAX密码:根据自己需求更改。
3、话机注册到PBX
4、PBX路由配置
出局路由
进入基本/呼叫路由
--> 新建出局规则
--> 填写呼叫规则名字
、匹配模式
、特权等级
、使用中继
、前缀
。
- 呼叫规则名称:可以根据自己需求填写;
- 匹配模式:在此例子中填写2xxx;
- 特权等级:选择内部;
- 使用中继:选择在第一步sip注册的中继;
- 前缀:填写3。
入局路由
进入基本/呼叫路由
--> 新建入局规则
--> 填写中继
、特权等级
、默认目的地
、DID目的地
。
- 中继:选择在第一步sip注册的中继;
- 特权等级:选择内部;
- 默认目的地:选择通过DID至本地分机。
阿里云FreeSWITCH配置:
用户配置
在本例中使用的用户都是FreeSWITCH安装后,系统默认添加的用户(1001和1002)。这个用户可以根据自己需求进行修改,建议第一次测试时用默认用户即可。
Dialplan配置
在dialplan/default.xml里面添加以下配置
<extension name="call_branch1_out">
<condition field="destination_number" expression="^2(\d+)$">
<action application="bridge" data="${regex(${sofia_contact(internal/1001@${domain_name})}|^(.*)sip:1001@(.*)|%1sip:$1@%2)$}"/>
</condition>
</extension>
<extension name="call_branch2_out">
<condition field="destination_number" expression="^3(\d+)$">
<action application="bridge" data="${regex(${sofia_contact(internal/1002@${domain_name})}|^(.*)sip:1002@(.*)|%1sip:$1@%2)$}"/>
</condition>
</extension>
在上面配置都配置完成后,测试排错时,可以通过在FreeSWITCH抓包的方式来看。具体就是看FreeSWITCH收到的SIP消息中,收到的号码是否正确。以及,FreeSWITCH转发时发送的是否正确。除此之外,也可以通过看IPPBX的日志来判断。
OpenVPN功能
另外,潮流的IPPBX支持OpenVPN功能,将以OpenVPN客户端的形式接入到网络,能够帮助客户解决通信中的安全、穿透等问题,提高通信的稳定性,同时也给用户组网带来更多选择。
总结
本文的中心其实就是本分支的呼叫还在分支内走,与分支之间的呼叫在号码上加前缀,然后送到FreeSWITCH来处理。相对于所有网络话机都注册到公网的FreeSWITCH的方案,更加节约带宽。同时FreeSWITCH压力也没有那么大,无论分支内部还是分支之间的通话质量都更加清晰。这个方案最大的优点,就是通过SIP注册中继的方式。即便出网的带宽是ADSL拨号形式,也不会受到NAT的限制。除了上面分析网络上的优点,这种机构还有分布式的理念在里面。一是分支机构内添加内部的号码不用去FreeSWITCH上申请,只需在内部PBX申请分机,方便了网管操作;同时也防止出现多分支机构同一时间管理一台FreeSWITCH时造成配置混乱的问题。还有,当FreeSWITCH压力太大需要扩容,可以实现平滑扩容,可以无限增加汇接局的FreeSWITCH数量。