中国电信SIP账号在FreePBX 13中的中继设置

在《配置EPON家庭网关接入中国电信电话交换IP网络》一文中我们介绍了如何使用MicroSIP软电话程序接入中国电信的电话IP网络,并提出了实现局域网电话软交换(IP-PBX)的可能性。以下FreePBX 13的中继设置已经通过几周的实际测试,可以放心使用。

在FreePBX 13管理界面上,创建类型为chan_pjsip的SIP中继(Trunk),并在中继编辑页面的“pjsip Settings”选项卡里输入如下参数:

 

General:
  Username: +8621XXXXXXXX@sh.ctcims.cn
  Secret: <SECRET>
  SIP Server: sh.ctcims.cn
  SIP Server Port: 5060

Advanced:
  From Domain: sh.ctcims.cn
  From User: +8621XXXXXXXX
  Client URI: sip:+8621XXXXXXXX@sh.ctcims.cn:5060
  AOR Contact: sip:+8621XXXXXXXX@sh.ctcims.cn:5060
  Match(Permit): 15.192.0.0/16

Codecs: Enable g729

注:Match(Permit)为所有局端SIP服务器可能所在的网段。

由于电信IP电话网络的DNS服务器中没有sh.ctcims.cn这个记录,并且目前FreePBX 13中chan_pjsip的Outbound Proxy设置无效,我们必须在本地DNS服务器中为sh.ctcims.cn设置解析。在常见的DNS代理程序dnsmasq中,设置参数如下:

server=/sh.ctcims.cn/15.192.252.188
address=/sh.ctcims.cn/15.192.60.71

其中,server是EPON网关的VOICE_INTERNET连接(epon0.4)获得的DNS服务器之一,address为sh.ctcims.cn作本地解析(EPON网关中预置的OutboundProxy域名解析出来的两个IP地址之一)。

更新

  • 2017-07-20
    2017年6月底,15.192.60.71发生故障无响应导致中继失效,而OutboundProxy域名解析出来的另一个地址15.192.60.77仍能正常工作。配置dnsmasq使之将sh.ctcims.cn解析为两个IP地址可以解决这个问题,方法如下:
    1. 为sh.ctcims.cn创建hosts映射文件。
# cat > /tmp/hosts.addn <<EOF
15.192.60.71 sh.ctcims.cn
15.192.60.77 sh.ctcims.cn
EOF
    1. 在dnsmasq.conf中添加如下参数:
addn-hosts=/tmp/hosts.addn

注:Asterisk 14以后,chan_pjsip应该可以按照DNS SRV记录进行切换(srvlookup),详见【1】。

  • 2018-05-05
    抓包发现freepbx每几分钟会查询一次SRV记录_sip._udp.sh.ctcims.cn以及sh.ctcims.cn的AAAA记录。在dnsmasq配置中增加指向OutboundProxy域名的SRV记录_sip._udp.sh.ctcims.cn,可减少无效DNS查询,并且不再需要为sh.ctcims.cn设置本地解析;另外,为语音网络的“备选DNS”服务器增加一条server配置,DNS查询会更可靠。改进后的dnsmasq配置如下:
server=/sh.ctcims.cn/15.192.252.188
server=/sh.ctcims.cn/15.192.251.188
srv-host=_sip._udp.sh.ctcims.cn,BAC04.nq.sh.ctcims.cn,5060,0,0

至于无效的AAAA记录查询问题,目前竟然无法通过系统配置解决,即使通过内核参数禁用IPv6也不行,详见【2】和【3】。

  • 2018-05-10
    最近发现电话在通话几分钟后会无故断线。经过比较详尽的测试,我发现Asterisk 13根本不会按照SRV记录的priority/weight进行故障切换。它会选择优先级较高的主机,并按照权重进行轮询,但不会进行故障切换。另外,电信提供SIP接入的两台IMS服务器没有组成共享会话或者单一系统映像的集群——如果一个客户端向一个IP地址注册成功后,再向另一个IP地址注册,就会被拒绝,导致通话断线。综上,如果继续使用FreePBX 13,最好回到正文中的DNS设置,将域名sh.ctcims.cn本地解析为OutboundProxy两个IP地址中的一个,或者为指向两个IP地址的SRV记录设置不同的优先级,如下:
# addn-hosts file for dnsmasq
cat > /tmp/hosts.addn <<EOF
15.192.60.71 s1.nq.sh.ctcims.cn
15.192.60.77 s2.nq.sh.ctcims.cn
EOF

# dnsmasq.conf params for ctcims 
server=/sh.ctcims.cn/15.192.252.188
server=/sh.ctcims.cn/15.192.251.188
addn-hosts=/tmp/hosts.addn
srv-host=_sip._udp.sh.ctcims.cn,s1.nq.sh.ctcims.cn,5060,0,0
srv-host=_sip._udp.sh.ctcims.cn,s2.nq.sh.ctcims.cn,5060,1,0

注:在有如此DNS设置的网络环境下,FreePBX到电信语音网络的pjsip中继可以长期稳定运行。

参考
【1】http://blogs.asterisk.org/2016/04/20/pjsip-dns-support/
【2】https://linux.ioerror.us/2015/07/25/how-to-disable-aaaa-lookups/
【3】https://bugzilla.redhat.com/show_bug.cgi?id=1027452

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是FreePBX实现SIP/WebRTC和PSTN设备对接的完整流程: 1. 在FreePBX创建SIP扩展: - 登录FreePBX后台,进入“Applications”菜单,选择“Extensions”。 - 点击“Add Extension”按钮,在弹出的窗口选择“Add SIP (chan_sip) Extension”。 - 输入扩展号码、名称、密码等信息,点击“Submit”按钮保存。 2. 配置SIP Trunk: - 进入“Connectivity”菜单,选择“Trunks”。 - 点击“Add Trunk”按钮,在弹出的窗口选择“Add SIP (chan_sip) Trunk”。 - 输入SIP Provider提供的Trunk信息,例如注册服务器、用户名、密码等,点击“Submit”按钮保存。 3. 配置PSTN设备: - 连接PSTN设备到FreePBX服务器上。 - 进入“Connectivity”菜单,选择“Inbound Routes”。 - 点击“Add Incoming Route”按钮,在弹出的窗口输入呼入号码、呼入路由等信息,点击“Submit”按钮保存。 4. 配置WebRTC: - 安装WebRTC模块,可以通过FreePBX的模块管理器进行安装。 - 进入“Connectivity”菜单,选择“WebRTC Phone”。 - 点击“Add WebRTC Phone”按钮,在弹出的窗口输入WebRTC扩展号码、名称、密码等信息,点击“Submit”按钮保存。 5. 配置SIP客户端: - 在SIP客户端输入FreePBX服务器的IP地址、SIP扩展号码、密码等信息,完成配置。 通过以上步骤,就可以实现FreePBXSIP/WebRTC和PSTN设备对接了。需要注意的是,不同的SIP Provider对接方式可能会有所不同,具体配置可以参考相关的文档或联系SIP Provider获取帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值