针对异地组网: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。

如下图,配置完成后点击保存。

SIP中继配置图

2、在PBX添加sip用户

进入基本/呼叫路由 --> 分机 --> 创建新SIP分机 --> 填写分机权限SIP/IAX密码

  • 分机:在本例中为801;
  • 权限:为内部;
  • SIP/IAX密码:根据自己需求更改。

SIP用户配置图

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数量。



FreeSWITCH权威指南
FreeSWITCH权威指南

FreeSWITCH-CN微信公众账号
微信公众账号
FreeSWITCH-CN