FreeSWITCH 电话软交换系统搭建(一):初始化安装

介绍

FreeSWITCH 是一个跨平台的开源电话软交换系统,与 Asterisk 类似,常被用于开发各类视频会议系统、客服系统、电话转接等服务。FreeSWITCH 可以被当作一个 PBX(Private Branch eXchange)作为内部电话交换机使用,也可以对接第三方 SIP 落地网关,将语音业务延伸至传统语音通信网,实现电话业务的内外网互通。

部署

运行环境:Microsoft Azure A3 (4 vCPU, 7 GB RAM)

操作系统:Windows Server 2016

连接方式:客户端 (4G / WLAN) <-> Internet <-> Azure (10.0.0.0/24)

  1. files.freeswitch.org 下载 x64 架构的安装包。
  2. 进行典型安装(Typical)。
  3. FreeSwitchConsole.exe 添加至防火墙放行列表。
  4. 修改 /conf/sip_profiles 目录下的 external.xmlinternal.xml,将value 字段修改为 Azure 实例的公网 IP 地址(如下方所示)。

    1
    2
    <param name="ext-rtp-ip" value="[external_ip]"/>
    <param name="ext-sip-ip" value="[external_ip]"/>
  5. /conf/directory/default 目录下配置分机号(did)及密码;默认分机号为 10001019,密码为 $${default_password}1234。详细分机设置及电话会议号码如下表所示[3]

号码 说明
9664 保持音乐
9196 echo,回音测试
9195 echo,回音测试,延迟5秒
9197 milliwatte extension,铃音生成
9198 TGML 铃音生成示例
5000 示例IVR
4000 听取语音信箱
33xx 电话会议,48K(其中xx可为00-99,下同)
32xx 电话会议,32K
31xx 电话会议,16K
30xx 电话会议,8K
2000-2002 呼叫组
1000-1019 默认分机号
  1. /conf/vars.xml 修改默认密码(注意:如果不修改此处的默认密码,通话连接将会被系统强制延迟[1]

  2. 为 Azure 实例的网络安全组根据需要放行入站端口,如下表所示[2]

FireWall Ports Network Protocol Application Protocol Description
1719 UDP H.323 Gatekeeper RAS port
1720 TCP H.323 Call Signaling
3478 UDP STUN service 用于 NAT 穿透
3479 UDP STUN service 用于 NAT 穿透
5002 TCP MLP protocol server
5003 UDP Neighborhood service
5060 UDP & TCP SIP UAS 用于 SIP 信令 (标准 SIP 端口,对于默认 ”Internal” 配置文件)
5070 UDP & TCP SIP UAS 用于 SIP 信令 (对于默认 “NAT” 配置文件)
5080 UDP & TCP SIP UAS 用于 SIP 信令 (对于默认 “External” 配置文件)
8021 TCP ESL 用于 mod_event_socket
16384-32768 UDP RTP/ RTCP multimedia streaming 用于 SIP、交换以及其他协议的语音或视频的数据传输
5066 TCP Websocket 用于 WebRTC
7443 TCP Websocket 用于 WebRTC
  1. 以管理员身份运行 FreeSwitch

  2. 使用之前所填写的登录凭据在 SIP 客户端上进行注册,例如在 Zoiper 上,使用 [用户名]@[PBX/VoIP 运营商] ,如 [email protected][服务器地址] ,密码为 1234

  3. 考虑到 NAT 对于连接可能构成影响,需要启用 SIP 客户端的 STUN 并使用 TCP 而非 UDP 进行连接。与此同时,对于客户端也应该配置为“始终允许后台运行”和“允许无限制地使用数据连接”,并开启“自动运行”。

参考文献