介绍

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 地址(如下方所示)。
<param name="ext-rtp-ip" value="[external_ip]"/>
<param name="ext-sip-ip" value="[external_ip]"/>
  1. /conf/directory/default 目录下配置分机号(did)及密码;默认分机号为 10001019,密码为 $${default_password}1234。详细分机设置及电话会议号码如下表所示1
号码说明
9664保持音乐
9196echo,回音测试
9195echo,回音测试,延迟5秒
9197milliwatte extension,铃音生成
9198TGML 铃音生成示例
5000示例IVR
4000听取语音信箱
33xx电话会议,48K(其中xx可为00-99,下同)
32xx电话会议,32K
31xx电话会议,16K
30xx电话会议,8K
2000-2002呼叫组
1000-1019默认分机号
  1. /conf/vars.xml 修改默认密码(注意:如果不修改此处的默认密码,通话连接将会被系统强制延迟2

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

FireWall PortsNetwork ProtocolApplication ProtocolDescription
1719UDPH.323 Gatekeeper RAS port
1720TCPH.323 Call Signaling
3478UDPSTUN service用于 NAT 穿透
3479UDPSTUN service用于 NAT 穿透
5002TCPMLP protocol server
5003UDPNeighborhood service
5060UDP & TCPSIP UAS用于 SIP 信令 (标准 SIP 端口,对于默认 ”Internal” 配置文件)
5070UDP & TCPSIP UAS用于 SIP 信令 (对于默认 “NAT” 配置文件)
5080UDP & TCPSIP UAS用于 SIP 信令 (对于默认 “External” 配置文件)
8021TCPESL用于 mod_event_socket
16384-32768UDPRTP/ RTCP multimedia streaming用于 SIP、交换以及其他协议的语音或视频的数据传输
5066TCPWebsocket用于 WebRTC
7443TCPWebsocket用于 WebRTC
  1. 以管理员身份运行 FreeSwitch

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

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

参考文献

Footnotes

  1. FreeSWITCH 初步

  2. FreeSWITCH very slow - Stack OverFlow

  3. Firewall - FreeSWITCH - Confluence