• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁(yè) > 新聞 > 國內 >
     首頁(yè) > 新聞 > 國內 >

    Kamailio/OpenSIPS學(xué)習筆記-如何使用RTP Proxy解決NAT問(wèn)題

    2018-05-09 10:14:56   作者:james.zhu   來(lái)源:CTI論壇   評論:0  點(diǎn)擊:


      NAT問(wèn)題是IP通信領(lǐng)域中經(jīng)常見(jiàn)到的問(wèn)題。通常情況下,NAT問(wèn)題主要是有振鈴無(wú)語(yǔ)音,或者出現單通問(wèn)題。因為服務(wù)器端和客戶(hù)端各種NAT部署的不同,所以導致不同的NAT問(wèn)題,因此各種NAT問(wèn)題解決的方式也有所不同。筆者在以前的文章中討論了幾種常見(jiàn)的NAT的解決方法。在以前的文章中筆者已經(jīng)做過(guò)非常深入的討論,并且筆者已經(jīng)討論過(guò),目前大部分的NAT問(wèn)題可以通過(guò)STUN服務(wù)器結合媒體轉發(fā)服務(wù)器來(lái)解決。今天,我們專(zhuān)門(mén)討論如何使用開(kāi)源軟交換結合RTP Proxy來(lái)解決NAT問(wèn)題。
      1、為了驗證NAT環(huán)境的測試效果,我們首先需要搭建一個(gè)簡(jiǎn)單的NAT測試環(huán)境這里,我們介紹幾種不同的NAT環(huán)境:
    • 服務(wù)器在數據中心,例如,阿里云等環(huán)境。用戶(hù)側在NAT中。
    • 在內網(wǎng)環(huán)境下使用路由器創(chuàng )建不同的IP地址端來(lái)測試NAT環(huán)境,例如:192.168.XX,172.16.xx或者10.0.0.0等不同地址段。如果使用這樣的環(huán)境的話(huà),我們需要設置use nat_uac_test() 。注意,這里的標志可以根據不同的IP地址段進(jìn)行不同的檢測。用戶(hù)需要參考官方文檔做相應的調整。
    • 在本地創(chuàng )建一個(gè)虛擬機,設置為NAT環(huán)境,終端在此虛擬機環(huán)境中對服務(wù)器進(jìn)行呼叫測試。這是最簡(jiǎn)單的測試環(huán)境,可以模擬一個(gè)簡(jiǎn)單的NAT環(huán)境。
      2、現在我們配置一個(gè)基于RTP Proxy的環(huán)境測試NAT問(wèn)題。用戶(hù)需要幾個(gè)步驟來(lái)進(jìn)行測試配置。
      首先,用戶(hù)需要安裝在本機一個(gè)RTP Proxy中,通過(guò)執行命令行就可以進(jìn)行安裝:apt-get install rtpproxy。然后對RTP Proxy進(jìn)行配置,修改配置文件/ etc / default / rtpproxy:
      #默認為rtpproxy
      #控制插座。
      #CONTROL_SOCK = “UNIX:/var/run/rtpproxy/rtpproxy.sock”
      #要在UDP套接字上偵聽(tīng),請取消注釋以下行:
      CONTROL_SOCK = UDP:127.0.0.1:7890
      #傳遞給守護進(jìn)程的其他選項。
      EXTRA_OPTS =“ - l SERVER_IP”
      #此地址是IP服務(wù)器地址。
      修改配置以后,重新啟動(dòng)服務(wù)器:/etc/init.d/rtpproxy restart。
      。然后修改CFG文件支持我們設置的NAT環(huán)境加載所需模塊:
    • loadmodule“nathelper.so”
    • loadmodule“rtpproxy.so”
    • loadmodule“dialog.so”
      然后添加模塊支持參數:
    • modparam( “usrloc”, “nat_bflag”, “NAT_FLAG”)
    • modparam(“注冊商”,“received_avp”,“$ avp(42)”)
    • modparam(“nathelper”,“received_avp”,“$ avp(42)”)
    • modparam(“rtpproxy”,“rtpproxy_sock”,“udp:127.0.0.1:7890”)
    • modparam(“nathelper”,“natping_interval”,30)
    • modparam(“nathelper”,“ping_nated_only”,1)
    • modparam(“nathelper”,“sipping_bflag”,“SIPPING_FLAG”)
    • modparam(“nathelper”,“sipping_from”,“sip:pinger@192.168.0.17”)
      #注意修改為用戶(hù)自己的服務(wù)器地址。
      然后添加NAT檢測:
      force_rport();
      #注意這里要設置為18,具體參數設置,參考官方文檔。
      if(nat_uac_test(“18”)){
      if(method ==“REGISTER”){
      fix_nated_register();
      } else {
      fix_nated_contact();
      }
      setflag(NAT_FLAG);
      }
      初始化一個(gè)請求,創(chuàng )建對話(huà)框:
      create_dialog();
      檢測是否設置標志:
      if(isflagset(NAT_FLAG)){
      setbflag(NAT_BFLAG);
      setbflag(SIPPING_FLAG);
      };
      在INVITEs中開(kāi)啟支持helper路由方式:
      if(subst_uri('/(sip:。*); nat = yes / \ 1 /')){
      setbflag(NAT_BFLAG);
      };
      if(isflagset(NAT_FLAG)|| isbflagset(NAT_BFLAG)){
      路線(xiàn)(mediarelay);
      };
      添加媒體路由設置:
      路線(xiàn)[mediarelay] {
      if(is_method(“INVITE”)){
      if(has_body(“application / sdp”)){
      rtpproxy_engage();
      }
      }
      }
      設置轉發(fā)路由:
      onreply_route [handle_nat] {
      # - 重播塊路由 -
      #
      if(isbflagset(NAT_BFLAG)){
      append_hf(“P-hint:Onreply-route-fixcontact \ r \ n”);
      fix_nated_contact();
      }
      出口;
      }
      完成修改以后,用戶(hù)重新啟動(dòng)軟交換。
      3、配置完成后,如果配置成功的話(huà),用戶(hù)可以通過(guò)以下幾種方式來(lái)做進(jìn)一步的測試:
      通過(guò)opensipsctl ul檢查終端注冊地址,通過(guò)CONTACT值和收到的地址消息。如果配置成功的話(huà),NAT環(huán)境下顯示有不同的地址段。
      使用帶NAT的終端進(jìn)行注冊測試,這里需要關(guān)閉STUN,軟電話(huà)使用外網(wǎng)地址。
      使用帶NAT環(huán)境的軟電話(huà)進(jìn)行呼叫測試,查看呼叫狀態(tài)。
      軟電話(huà)使用等待按鍵重新創(chuàng )建re-invite,檢查呼叫的語(yǔ)音是否丟失。如果環(huán)境配置成功的話(huà),re-invite以后語(yǔ)音不會(huì )丟失。
      4、在本講座中,我們介紹了一個(gè)如何通過(guò)軟交換結合RTP proxy實(shí)現簡(jiǎn)單NAT穿透的場(chǎng)景測試環(huán)境中用戶(hù)首先需要在本地安裝rtp代理,并且配置不同的地址段檢測來(lái)查詢(xún)NAT環(huán)境,最后通過(guò)CFG中的NAT檢測,路由設置來(lái)協(xié)助帶NAT的終端實(shí)現注冊呼叫。這里再次說(shuō)明,我們這里搭建的NAT環(huán)境是一個(gè)NAT的示例,它的目的是幫助讀者了解NAT場(chǎng)景和其基本的解決思路。事實(shí)上,在實(shí)際生產(chǎn)環(huán)境中,NAT問(wèn)題是一個(gè)非常棘手的問(wèn)題,目前沒(méi)有一種解決方案可以解決所有的NAT問(wèn)題,不同NAT環(huán)境需要不同的配置環(huán)境和解決辦法來(lái)處理。
      參考資料:
      http://www.kamailio.org.cn/doku.php?id=dispatcher_dispatcher_load-balancer_module_released
      http://wiki.kolmisoft.com/index.php/Implementations


      關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的行業(yè)分享
      freepbx 技術(shù)論壇:www.ippbx.org.cn
      Asterisk, freepbx技術(shù)文檔: www.freepbx.org.cn
      歐米(Omni)智能客服解決方案
      融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
     
    【免責聲明】本文僅代表作者本人觀(guān)點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對文中陳述、觀(guān)點(diǎn)判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 视频| 独山县| 韩城市| 临泉县| 沙湾县| 襄樊市| 陆良县| 务川| 贺兰县| 融水| 蓝田县| 两当县| 石阡县| 上林县| 新田县| 长沙县| 漳浦县| 巨鹿县| 班戈县| 平果县| 遂川县| 怀仁县| 陇川县| 新乡市| 涿鹿县| 苍南县| 武平县| 读书| 玛纳斯县| 台中市| 衡南县| 崇明县| 乌拉特后旗| 文登市| 扎鲁特旗| 北川| 宣城市| 达尔| 泰兴市| 博湖县| 安阳市| http://444 http://444 http://444 http://444 http://444 http://444