中國電信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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM